Burp Suite —验证码识别、切换IP
2023-1-3 08:10:55 Author: 系统安全运维(查看原文) 阅读量:34 收藏

作者:掌控安全——JARVIS

如果你还是小白看不懂没关系,可以先收藏,之后会用到的!burp是学渗透必须要会的一个工具,其从安装到运用有相关的视频,可文末扫码领取.

前言

Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,其各个组件之间可灵活配合,可定制化程度极高,正可谓居家旅行杀人越货必备之神器。

但是当遇到各式各样的验证码,防火墙等场景,神器也无从下手。有幸 Burp Suite 提供了非常强大的开发接口,可根据需求自行强化。

快速开发

既然要敏捷开发,采用轻量级的脚本 python 来实现拓展最为快速灵活,也懒得去拖 swing 界面做交互,参数对应修改就行。

本次验证码识别用于 Intruder 模块,在脚本中实例化 IntruderPayloadGenerator 类以及其 getNextPayload 方法即可,具体流程如下 。

抓取验证码请求

  1. # 验证码请求头

  2. headers = '''

  3. Host: ************

  4. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:69.0) Gecko/20100301 Firefox/62.0

  5. Accept: image/webp,*/*

  6. Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

  7. Accept-Encoding: gzip, deflate

  8. Connection: close

  9. Referer: http://ya.com/cms/fastadmin/public/lf2EomShPI.php/index/login

  10. Cookie: PHPSESSID=vltk4df5fbn97vsf8mfjnobr71

  11. '''

  12. # 验证码请求地址

  13. captcha_url = "http://**********/cms/fastadmin/public/index.php?s=/captcha"

对接验证码识别引擎

可以使用深度学习来识别验证码,或者接入第三方通用平台。

本文为了简单就直接对接某个打码平台,参考平台文档,引入 api、设置对应的id、key 等参数即可 。

验证码 payload 生成

  1. class IntruderPayloadGenerator(IIntruderPayloadGenerator):

  2. def __init__(self):

  3. self._payloadIndex = 0

  4. def hasMorePayloads(self):

  5. return True

  6. def getNextPayload(self, baseValue):

  7. req = urllib2.Request(captcha_url, headers=headers)

  8. response = urllib2.urlopen(req)

  9. filename = "./tmp/"+str(uuid.uuid1())+".png"

  10. with open(filename, "wb") as f:

  11. f.write(response.read())

  12. #上传到打码平台识别

  13. api = Api(app_id, app_key, pd_id, pd_key)

  14. rsp = api.PredictFromFile(pred_type, filename) # 返回识别结果的详细信息

  15. payload = rsp.pred_rsp.value

  16. return payload

完整脚本

https://github.com/yaseng/pentest/blob/master/misc/burp_captcha_crack.py

实例演示

拿一个后台系统来做演示

载入拓展

  1. 先引入 jython-standalone 包以及相关模块

  2. 加载拓展 burp_captcha_crack.py

配置参数

抓取验证码的请求头、url 写入脚本

设置 Intruder

这种场景下的暴力破解,需要自动化填入用户名、密码、验证码三个字段。对于前两个来说,一般是两个字典的迭代组合,后一个验证码不加入迭代计算。先标记用户名+密码,验证码两个变量,并且使用 Pitchfork 模式 。

此时 payload1 为
§admin&password=admin232323§

类型自定义迭代器(Custom interator)

payload1_1 加载用户名字典

payload1_2 为空,分隔符 &password= ,并且去掉 URL 自动编码选

payload1_3 加载密码字典

payload 2 类型 Extension-Generated

    选择对应的拓展

attack

前言

上部分给 Burp Suite 添加验证码识别技能点,对于现代化的渗透测试神器来说,自动化切换 ip 也是必备技能,可以通过动态设置 HTTP 代理来完善此功能。

快速开发

原理分析

对于 HTTP 代理,HTTP 客户端向代理发送请求报文,代理服务器需要正确地处理请求和连接(例如正确处理 Connection: keep-alive),同时向服务器发送请求,并将收到的响应转发给客户端。

图片来源:《HTTP 权威指南》

原理较为简单,具体看数据包对比
正常访问

http 流

  1. GET / HTTP/1.1

  2. Host: myip.ipip.net

  3. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0

  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

  5. Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

  6. Accept-Encoding: gzip, deflate

  7. Connection: keep-alive

  8. Upgrade-Insecure-Requests: 1

  9. Cache-Control: max-age=0

  10. HTTP/1.1 200 OK

  11. Date: Mon, 01 Apr 2020 16:58:35 GMT

  12. Content-Type: text/plain; charset=utf-8

  13. Content-Length: 67

  14. Connection: keep-alive

  15. ...... IP...113.*.*.* .................. ...... ...... ......

代理访问
HTTP 代理 180.143.244.66:18637

http 流

  1. GET http://myip.ipip.net/ HTTP/1.1

  2. Host: myip.ipip.net

  3. User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:69.0) Gecko/20100101 Firefox/69.0

  4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

  5. Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

  6. Accept-Encoding: gzip, deflate

  7. Connection: keep-alive

  8. Upgrade-Insecure-Requests: 1

  9. Cache-Control: max-age=0

  10. HTTP/1.1 200 OK

  11. Date: Mon, 01 Apr 2020 17:18:45 GMT

  12. Content-Type: text/plain; charset=utf-8

  13. Content-Length: 69

  14. Connection: close

  15. ...... IP...180.143.244.66 .................. ...... ...... ......

可以看到正常访问和代理访问在数据层就是请求路径和目标不同。使用代理就是把数据带上目标信息先发送到代理服务器,要在 Burp Suite 中实现代理功能,动态修改请求目标和请求 header 即可 。

代码编写

参考官方文档,修改 HTTP 请求,需要在脚本中实例化 IHttpListener 类并重写 processHttpMessage 方法。

  1. HTTP_PROXY={

  2. 'ip':'14.118.163.95',

  3. 'port':19048

  4. }

  5. class BurpExtender(IBurpExtender, IHttpListener):

  6. def registerExtenderCallbacks(self, callbacks):

  7. self._callbacks = callbacks

  8. self._helpers = callbacks.getHelpers()

  9. callbacks.setExtensionName("IP switch")

  10. callbacks.registerHttpListener(self)

  11. def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):

  12. # 只处理请求

  13. if not messageIsRequest:

  14. return

  15. httpService = messageInfo.getHttpService()

  16. # 修改请求目标为代理中转

  17. messageInfo.setHttpService(

  18. self.helpers.buildHttpService(

  19. HTTP_PROXY['ip'],

  20. HTTP_PROXY['port'], True

  21. )

  22. )

  23. requestInfo = self.helpers.analyzeRequest(messageInfo)

  24. new_headers = requestInfo.headers

  25. # 修改 http 头

  26. req_head = new_headers[0]

  27. new_headers[0] = re.sub('\/'," http://myip.ipip.net/",req_head)

  28. body = messageInfo.request[requestInfo.getBodyOffset():len(messageInfo.request)]

  29. messageInfo.request = self.helpers.buildHttpMessage(

  30. new_headers,

  31. body)

对接平台

接入代理平台或者 aws

实战演示

继续使用上面的后台做演示

正常访问

开启拓展

声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果.

如有侵权,请联系删除

好文推荐

红队打点评估工具推荐
干货|红队项目日常渗透笔记
实战|后台getshell+提权一把梭
一款漏洞查找器(挖漏洞的有力工具)
神兵利器 | 附下载 · 红队信息搜集扫描打点利器
神兵利器 | 分享 直接上手就用的内存马(附下载)
推荐一款自动向hackerone发送漏洞报告的扫描器
欢迎关注 系统安全运维

文章来源: http://mp.weixin.qq.com/s?__biz=Mzk0NjE0NDc5OQ==&mid=2247514560&idx=1&sn=1e21c355926fb1eecda0e9bee0ed7941&chksm=c3086ab0f47fe3a681c29a09b66e3df034404760c2df2bbbc57131d13702dfbcff5112599138#rd
如有侵权请联系:admin#unsafe.sh