看一名Java开发人员以红队思维五分钟审计一套代码(3)

  • A+
所属分类:代码审计

文章来源于;https://www.freebuf.com/articles/web/253361.html

作者授权转载

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

概述

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

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

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

看一名Java开发人员以红队思维五分钟审计一套代码(3)

我们的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再厉害也依赖于浏览器,但是,某种”沙箱逃逸“技术我们此处不做阐述。

看一名Java开发人员以红队思维五分钟审计一套代码(3)

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

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

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

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

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

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

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

看一名Java开发人员以红队思维五分钟审计一套代码(3)

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

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

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

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

前端代码审计信息泄露

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

前端代码的CDN绕过

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

前端代码的签名算法绕过

因为有些后台接口api不想被其他人进行调用,想只给特定的前端进行调用,所以出现了签名算法这个东西。前端请求后台时会多带上一个参数,这个参数和后台约定俗称的规定,只有符合这种规定,才允许被调用。下面上代码看一名Java开发人员以红队思维五分钟审计一套代码(3)继续研究Freebuf平台爸爸,希望平台爸爸不要抛弃我(手动狗头)

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

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

  1. 前端生成规定的参数

  2. 传送给后台做校验,是否满足规则

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

结尾

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

   

本文始发于微信公众号(渗透云笔记):看一名Java开发人员以红队思维五分钟审计一套代码(3)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: