Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:18849 篇
已收录公众号数量:91 个
本站文章为爬虫采集,如有侵权请告知
已收录微信公众号
阿里云先知 网安寻路人 网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
利用Xray+BurpSuite自动挖掘带sign签名的漏洞
本文来自公众号:FreeBuf   2021.02.17 18:00:21


一、起因:

Xray是一个非常好的自动化漏洞挖掘工具。我们通常在进行漏洞挖掘的时候,都会通过BurpSuite+Xray进行自动化的漏洞挖掘,官方也给了配置和使用方法,链接放到参考文献中,感兴趣的朋友也可以自己搜索一下。

工具虽然好用,但这次遇到的是一个有签名算法的目标,在这种情况下,上面的这套组合就显得有气无力了。尝试扫了一下,虽然发送了很多payload,但没有发现任何漏洞。

由于从事于漏洞挖掘工作,总有一种感觉(感觉很重要,大家都懂得),这个东西有漏洞。

最后通过自己努力和改造,终于挖到了XSS漏洞。这篇文章主要给大家说说我是怎么挖到这个漏洞的。

XSS是web安全中最为常见的漏洞,XSS全称是Cross Site Script。XSS攻击通常指黑客通过“HTML注入”篡改了网页,插入了恶意脚本,从而控制用户浏览的一种攻击。这里的跨站访问,可以是从正常的网站跨到黑客的服务器,也可以是黑客的服务器跨到正常的网站。XSS漏洞经常出现在需要用户输入的地方,这些地方一旦对输入不进行处理,黑客就可以进行HTML注入,进而篡改网页。

先放一张成功后的图片。

二、必备工具:

操作系统: WIN10_X64

1. BurpSuite(Community)

渗透神器,如果你还不知道这个,那么只能说明你不是圈内人,赶快去百度一下吧。
https://portswigger.net/burp/communitydownload

2. xray(免费社区版):

是从长亭洞鉴核心引擎中提取出的社区版漏洞扫描神器,支持主动、被动多种扫描方式,自备盲打平台、可以灵活定义 POC,功能丰富,调用简单,支持 Windows / macOS / Linux 多种操作系统,可以满足广大安全从业者的自动化 Web 漏洞探测需求。
https://github.com/chaitin/xray/releases

3. jadx:

jadx是个人比较喜欢的一款反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。
https://github.com/skylot/jadx

4. Jython:

Jython本质上是一个Java应用程序,它允许编码人员使用Java编码调用Python库反之,也可以使用Python调用Java的库。
https://www.jython.org

5. Python:

我使用的是Python3.7

三、原理:

1、首先看看我们常用的工具组合:

分析一下原因,通过服务器端都是url的请求,应该是这样的处理方法(python伪代码):

#接收到客户端请求def Get_Request(param):        if param.sign != get_sign(param.url):             return 0#开始对参数进行逻辑操作

通过上面的图我们可以看出浏览器发出的链接都是直接发送到xray的,所以如果加入了签名算法,那么就直接返回了,根本到不了核心的逻辑。

2、改造现有的工具组合:

从上面的图可以看到,先把url发到xray,由xray转发到BurpSuite,在Burp中加入了ptyhon插件对url计算sign,替换了原有的url,这样就可以跳过签名的检测了。

知道了原理。我们就可以行动了。

四、最佳实践:

1. 找到需要测试的目标。

这里是的目标是apk文件,打开BurpSuite进行抓包,找到需要渗透测试的请求,发现请求中有sign的字段,应该是有签名校验的。形式如下:

https://www.xxxx.com/data?id=12346&imei=aabbcc&sign=88a5e407a1c85d2ef063b8e2007278e9

2. 找到sign签名的算法。

关于怎么找算法,不是这篇文章的重点,这里简单介绍一下,无论是apk还是web都是一样的,apk的加密算法通常都放到so文件或者直接在java代码中;web的签名算法,通常都会写到js脚本中,作为一名合格的渗透人员,相信这个应该都不是难事。
本文的目标算法比较简单,作者把算法直接写到了apk中,使用jadx,搜索sign的字段,很容易就找到了算法:

3. 既然找到算法,下一步,就是开始编写BurpSuite的插件,插件的功能,就是根据url计算出sign的值,替换成新的url进行请求。

我们不造轮子,直接用官方的插件来修改。从Github上下载官方python插件,地址:

https://github.com/portswigger/python-scripter

官方有详细的API介绍文档,大家可以参考:

https://portswigger.net/burp/extender/api/index.html

贴上我修改后的源码的关键部分:

def gen_sign(_uri):
uri = _uri secret_key = "AABBBCCDDEEFFGG" parsed_tuple = urlparse.urlparse(uri) _param_json = urlparse.parse_qs(parsed_tuple.query)
aList=[]; for _json_key,_json_vaule in _param_json.iteritems(): aList.append(_json_key)
aList.sort()
for _json_key1 in aList: sign +=_json_key1 sign +=_param_json[_json_key1][0]
sign +=secret_key m = hashlib.md5() m.update(sign) a_md5 = m.hexdigest()
return a_md5

4. 加载写好的插件加入到BurpSuite中,并且开启插件(Extender→Extensions-→Burp Extensions —→add)。

5. 按照上面的原理进行修改后,开始运行,出去吃个饭,回来后,发现XSS漏洞一枚。

五、总结:

通过本文的介绍,相信大家以后遇到有sign校验的目标时,又多了一种处理的方式。当然也可以利用其他的组合,比如:xray+mitmproxy,burpsuite+scan等,总之方法有很多,适合自己就行,在这里只是抛砖引玉一下。只要是能达到目的就可以。

做为一个渗透测试人员,相信大家手上有很多优秀的渗透测试工具,这些工具的组合,就类似于我们手中的魔方,可以任意组合使用,使用的好,就可以事半功倍。

精彩推荐