看一名Java开发人员以红队思维五分钟审计一套代码(3) – 作者:冬雪在线挖洞

前言

《看一名Java开发人员以红队思维五分钟审计一套代码》系列第一篇

《看一名Java开发人员以红队思维五分钟审计一套代码(续)》系列第二篇

目前为止,开发审计系列作者已发出两篇文章,平均两天推出一篇,希望读者持续跟进。也赶紧催更和关注的读者,你们的鼓励是我前进的动力。

概述

这篇文章给大家阐述 前端代码审计  ,不同维度讲述存在的安全漏洞。解决大家的疑问,为什么要前端信息收集,jsp和渗透者口中说的伪静态页面到底是什么,新型Web的架构又发生了哪些变化。这篇文章知识性内容居多,实战性内容居少,但对于读者长久发展有帮助。

CMS识别产生的前端信息到底有什么用

一次完整且经典的渗透测试取得成功最重要的一环一定是信息收集,这个环节给我们”一招制敌“做了铺垫。经典的信息收集一部分应该是将域名带入到CMS识别的系统当中,看看对方使用了什么中间件。但CMS识别经常给我们返回一些前端框架的信息,例如JQuery,bootstrap,Angular Js,Vue Js。

1603868446_5f99171ec1f29dfb1765f.png!small?1603868447271

我们的FreeBuf平台爸爸采用了Vue JS,Ant Design前端框架。

从这一点上我根本不会去测试平台爸爸的XSS漏洞,一眼看穿。

为什么,听我接下来细细道来。

XSS漏洞产生的根本原因在于JS脚本在浏览器被识别为前端代码,才会发生解析。

1.什么意思呢,用户在前端页面输入伪造的JS代码

2.前端将用户输入数据当作参数传给后台

3.后台对参数进行业务逻辑处理存储到数据库

4.后台读取数据库内容返回给前端展示

5.浏览器渲染数据

这样的一套流程,导致问题在最后一环JS代码被浏览器解析。但是Vue Js这个前端框架的产生避免了最后一环产生的问题,Vue Js采用预编译的手段,使用插值表达式也就是”{{}}”去渲染后台返回的值时,不会解析内容,只会展示内容。Vue Js提供的这个函数百分之百的解决了XSS漏洞。从根本上理解了XSS产生的原因后,这就是为什么XSS漏洞不能拿到系统shell,只能在浏览器”胡作非为“。因为JS再厉害也依赖于浏览器,但是,某种”沙箱逃逸“技术我们此处不做阐述。

1603869539_5f991b638c7724caf1f59.png!small?1603869540490

可是新的问题又出现了,我们的富文本编辑器怎么办?

1.富文本编辑器给用户使用,本质就是使用CSS和H5标签对用户的内容进行修饰,然后将带有前端标签的内容发送给后台

2.后台对文本进行业务逻辑处理存储到数据库

3.后台读取数据库内容返回给前端展示

4.Vue JS使用{{}}插值表达式加载

5.惊人的问题出现了,这些标签没有被解析,用户制造的漂亮的页面没有了

Vue Js发现了这种问题,又提供了”v-html”这个属性来渲染数据,解析标签。所以在存在富文本编辑器的地方我们可以去尝试XSS,freeBuf平台爸爸的文章处我没敢测试(手动狗头)

1603869591_5f991b9703a9bc83e8791.png!small?1603869591732

防御:仔细阅读我上文分析的XSS漏洞过程的同学,应该善于从过程中抓到切入点

1.Vue JS 在最后一步浏览器渲染解决此问题

2.可以在后台拿到前端参数这一步作为切入点,使用正则表达式匹配 “<script>”等经常被使用的字符

上文为前端审计一眼看穿 是否 存在XSS技巧。

前端代码审计信息泄露

前端代码展示在浏览器,可以被用户查看源码。F12 可对前端源码进行查看,这里的源码我们能发现什么。

前端代码的CDN绕过

某些网站存在cdn,各地的虚拟IP让我们后续的渗透难上加难,我查询了很多CDN溯源方法都没有提到一种,让我不禁疑惑。在前后端分离的Web项目中,前后端唯一交互的手段则是“Ajax”异步请求技术,前端需要指定请求的后端地址以便寻找后端接口,做出请求。我们直接找到前端代码,翻到前端请求后端代码的Ajax的地方1603870231_5f991e17069ee456840d4.png!small?1603870231944无疑是对对方服务器地址IP的一种暴露,直接绕过CDN,这么有效的办法。但是此方法不是一定可行的,因为有些经验老道的开发会给后台服务器配置一个 域名进行访问。

前端代码的签名算法绕过

因为有些后台接口api不想被其他人进行调用,想只给特定的前端进行调用,所以出现了签名算法这个东西。前端请求后台时会多带上一个参数,这个参数和后台约定俗称的规定,只有符合这种规定,才允许被调用。下面上代码1603870567_5f991f670c6bc6ba23c6f.png!small?1603870567739继续研究Freebuf平台爸爸,希望平台爸爸不要抛弃我(手动狗头)

这是FreeBuf的某一个接口,cookie中携带一个参数,Hm_1pvt_xxxxx这个参数典型的签名算法,你试试自己直接代码调用肯定调用不通,不符合这个签名算法规则的一定不会调用成功。

但是我们在分析其中的逻辑

  1. 前端生成规定的参数
  2. 传送给后台做校验,是否满足规则

停,不对啊。前端生成规则参数,前端我们可以查看源码。懂得都懂,谢邀,人在美国刚下飞机,再说平台爸爸就把我封了 。

结尾

这篇文章讲述了前端的信息收集到底起什么作用,从而引起的XSS原理剖析,签名算法认证破解,CDN绕过。实战性偏弱,原理性偏强。又是为我们后续五分钟审计埋下伏笔,希望读者依旧能够跟着作者一起跟进,一起学习,一起加油~感谢支持。

来源:freebuf.com 2020-10-29 09:00:13 by: 冬雪在线挖洞

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论