热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用Xray+BurpSuite自动挖掘带sign签名的漏洞

一、起因:Xray是一个非常好的自动化漏洞挖掘工具。我们通常在进行漏洞挖掘的时候,都会通过BurpSuite+Xray进行自动化的漏洞挖掘,官方也给了配置和使用方法,链接放到参考文


一、起因:


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等,总之方法有很多,适合自己就行,在这里只是抛砖引玉一下。只要是能达到目的就可以。


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


六、参考文献:


[1]. Xray: https://docs.xray.cool/#/scenario/burp


[2]. burpSuite: https://portswigger.net/burp


[3]. jadx: https://github.com/skylot/jadx


[4]. jython: https://www.jython.org




推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
author-avatar
rvr4845591
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有