技巧 | Burp攻击面拓展与实用工具

admin 2023年12月21日10:00:40评论100 views字数 5064阅读16分52秒阅读模式

 


 

JavaScript中的秘密

谈到攻击面那就少不了JavaScript,现如今总能遇到前后端分离网站,接口与各种凭证Key也可能会被放在前端文件中;利用jsfinder这类工具找出隐藏的接口或地址已是人人能掌握,我也不重复谈论这些了。

直接就上工具吧:

  • https://github.com/BishopFox/jsluice
  • https://github.com/ttstormxx/jjjjjjjjjjjjjs
  • https://github.com/InitRoot/BurpJSLinkFinder
  • https://github.com/gh0stkey/HaE
  • https://github.com/RetireJS/retire.js

jjjjjjsjsluice这类工具都是通过正则提取JavaScripturl信息;

jjjjjjjjjjjjjs 可以分析接口列表,自动结合指纹识别和fuzz获取正确api根。

jsluice 是我更喜欢的工具,使用的是语法树节点方式提取,这样可能会遗漏但是结果会更准确些。至于某些站点将url动态的方式传入,语法树也没办法解决-.- 我也一直在寻找解决办法,希望有大佬能解惑。

Retire.js 是一款BurpSuite被动插件,被动扫描已知JavaScript库的漏洞情况。对某些存在漏洞版本的组件还是挺有用的,可以根据获取到的版本信息再去找组件漏洞。Retire.js (retirejs.github.io)

这些插件有点用似乎又没啥用,因为它给你的结果不是完全有效的。大多数时候还是需要手工去测试与查漏。

正文中隐藏的参数

假设,你通过上述这些工具找到了一些接口那么会出现两种情况:

  1. 可以未授权

  2. 需要权限校验。

GET的情况下是不需要提交参数与数据的,但是POST中的参数从哪里来?

这一小节就是解决这个问题的。

Param Miner

此扩展用于发现隐藏的、开发遗留的参数。它对于查找 Web 缓存中毒漏洞特别有用Practical Web Cache Poisoning | PortSwigger Research。

插件在BAppstore就可以安装

技巧 | Burp攻击面拓展与实用工具
image

使用方法:对着某个请求包,或者sitemap中某个站点直接右键

技巧 | Burp攻击面拓展与实用工具
image

我这里选择Guess everything! 会弹出来三个配置项,分别是GET/Cookie/Headers 这些位置的参数枚举配置,一般情况下默认就可以;内置了一些单词,并且也会从上下文中取得单词并生成。

截图里可以看到最多在一个GET请求中添加了1036个参数

技巧 | Burp攻击面拓展与实用工具
image

这是总的配置样子

技巧 | Burp攻击面拓展与实用工具
image

官方并没有详细的说明文档,参数只能通过阅读源码理解,有些参数至今仍然觉得是个谜,下面展示一些:

参数名称 描述
Add 'fcbz' cachebuster 添加缓存终结者 为每个请求添加 fcbz=1 URL 参数,以避免缓存命中。
learn observed words 学习观察到的单词 从响应中提取单词并将它们保存到当前会话的参数单词列表中。
only report unique params仅报告唯一参数 https://github.com/PortSwigger/param-miner/blob/26db2f47b2e7852b977e776ebe13c1b887474b32/src/burp/ParamAttack.java#L256
use basic wordlist 使用基本单词表 使用 Param Miner 存储库中的https://github.com/PortSwigger/param-miner/blob/master/resources/headers 和https://github.com/PortSwigger/param-miner/blob/master/resources/params单词列表。
use custom wordlist 使用自定义单词列表 不言自明。
bruteforce 暴力破解 当单词列表用完时,切换到永无止境的原始暴力破解
dynamic keyload 动态键加载 理解它,首先需要了解 Param Miner 在内部是如何工作的。主要与 ParamGuesser.addNewKeys 功能有关。
max one per host+status每个主机最多一个 + 状态 ???
enable auto-mine 启用自动挖掘 将对在 Proxy 选项卡中处理的每个响应执行 launchScan。可以把它想象成让 Param Miner 在完成每个范围内请求时按下 Guess * 按钮。此外,如果没有它,所有其他 auto-* 复选框都不会生效。
auto-mine cookies 自动挖掘 Cookie 根据代理流量自动发起 cookie 猜测攻击
auto-nest params 自动嵌套参数 ???  https://github.com/PortSwigger/param-miner/blob/26db2f47b2e7852b977e776ebe13c1b887474b32/src/burp/BurpExtender.java#L316
try cache poison 尝试缓存中毒 检测到标头时,测试它是否可用于 Web 缓存中毒攻击
try -_ bypass 尝试 -_ 绕过 对于每个至少带有一个破折号的 HTTP 标头,Param Miner将 - 用下划线 _ 替换破折号,并将生成的标头添加到单词列表中。
rotation interval 旋转间隔 ???
force bucketsize 强制存储桶大小 强制在单个数据包中针对单个 URL 测试多个参数
max param length 最大参数长度 从响应中解析的参数的最大长度。长度较大的参数被截断到此限制,但不会被忽略!注意:它不会影响任何单词列表提供的参数。.此外,在确定存储桶大小时,最大参数长度用作试验有效负载中虚拟参数的长度。
Add dynamic cachebuster 添加动态 cachebuster 在通过 Burp 的手动测试工具发送的任何请求中,自动将缓存破坏器添加到常用标头中。参考:检测未加密的查询字符串
skip boring words 跳过无聊的单词 跳过无聊的单词列表https://github.com/PortSwigger/param-miner/blob/master/resources/boring_headers.
response 响应 从 HTTP 响应中获取单词,对它们进行规范化并添加到当前会话的参数单词列表中。
use bonus wordlist 使用奖励词表 使用 Param Miner 的 repo 中的单词列表。通常用于包含 functions 和 words 单词列表,但如果 use basic wordlist 未选中,它也会根据参数类型添加或 params 添加 headers 。
custom wordlist path 自定义单词列表路径 用户提供的参数列表的路径。注意:只有在 use custom wordlist 选中后才会生效。
skip uncacheable 跳过不可缓存 如果在响应中找不到缓存字符串,则跳过 cookie 和标头参数。如果正在寻找缓存中毒攻击,并且想要跳过无论如何都不会缓存的响应,也许这很有用。
max one per host每个主机最多一个 与速率限制相关。也许不允许一次对给定主机运行超过 1 次攻击。
scan identified params 扫描识别的参数 .在已识别的参数上运行burpscanner。
auto-mine headers 自动挖矿标题 根据代理流量自动发起标头猜测攻击
auto-mine params 自动挖掘参数 根据代理流量自动发起参数猜测攻击
fuzz detect 模糊检测 追加<a`'“${{输入值以尝试检测更好的隐藏参数。默认情况下,它被禁用,因为这样的头扰乱了包括某个众所周知的社交网络在内的各种系统。某些参数将在SQL语句等中使用,但不会明显影响响应。基于模糊的检测试图导致后端语法错误,以增加出现可见响应差异的可能性。
try method flip 尝试方法翻转 对于每个非GET请求,都将使用Burp的toggleRequestMethod,该方法可用于在GET和POST之间切换请求的方法。根据需要在URL查询字符串和消息正文之间重新定位参数,并根据需要创建或删除Content-Length标头。最后导致这个分支被执行,它试图通过将非GET请求作为GET请求来识别新的参数。
thread pool size 线程池大小 设置并发攻击的最大数量。
rotation increment 旋转增量 https://github.com/PortSwigger/param-miner/blob/322d9388192e94035eb3ccde9b4b98c7f3e81335/src/burp/ParamGuesser.javahttps://github.com/PortSwigger/param-miner/blob/322d9388192e94035eb3ccde9b4b98c7f3e81335/src/burp/ParamGuesser.java
max bucketsize 最大存储桶大小 https://github.com/PortSwigger/param-miner/blob/26db2f47b2e7852b977e776ebe13c1b887474b32/src/burp/ParamAttack.java#L226. 一个请求中探测的最大参数数。请注意,对于 JSON 参数,最大存储桶大小为 256。

如果没有特别需要配置默认即可,使用插件后可能什么问题也找不到,别担心,这很正常😀即便找到了也不一定有用,记住这一篇文章,一切且在增加攻击面,不放过任何可能。

如果扫描到漏洞,该插件只会告诉你参数对响应包的影响,导致的问题的原因还需要自己花时间分析。

技巧 | Burp攻击面拓展与实用工具
image

GAP

getAllParams扩展的演变。它不仅会找到更多潜在的参数供您调查,还会找到潜在的链接来尝试这些参数,并生成用于模糊测试的目标特定单词列表。

xnl-h4ck3r/GAP-Burp-Extension: Burp Extension to find potential endpoints. parameters, and generate a custom target wordlist (github.com)

Install

  • 下载Jython Standalone版
  • Burp中> 扩展设置 -> Python环境,设置 Jython 位置
  • Jython 位置打开命令行,输入java -jar jython-standalone-2.7.3.jar -m ensurepip
  • 运行java -jar jython-standalone-2.7.3.jar -m pip install -r requirements.txt 安装GAP所需依赖
  • GAP加入到Burp扩展中
技巧 | Burp攻击面拓展与实用工具
image
技巧 | Burp攻击面拓展与实用工具
image

GAP功能点虽然多但并不复杂,大概就是告诉插件从哪里取参数,花点时间就能玩转这个插件。

技巧 | Burp攻击面拓展与实用工具
image

这类参数收集的插件还有诸多,我只介绍GAPParam Miner的组合,其余的有:

  • https://github.com/portswigger/paramalyzer
  • https://github.com/hisxo/ReconAIzer (GPT协助)
  • Burp→ Site map → xxx.com → Engagement tools → Analyz target
  • https://github.com/s0md3v/Arjun
  • https://github.com/Sh1Yo/x8

其他信息收集

  1. 在挖掘SRC时如果希望针对某家开发特性,收集特定的API接口参数与目录,可以使用:
    • https://github.com/gh0stkey/CaA
    • https://github.com/QdghJ/burp_data_collector
技巧 | Burp攻击面拓展与实用工具
image
  1. 通过 Wayback Machine 、Common Crawl 、Alien Vault OTX、URLScan 等互联网时光机来发现网站历史快照
    • https://github.com/xnl-h4ck3r/waymore
      • 什么也没发现也别灰心,因为不是所有小网站都会收录的,更多是看运气😀

    3. 隐藏的表单字段

有些站点会将隐藏的表单字段当作参数处理,从而会导致xss这类漏洞

技巧 | Burp攻击面拓展与实用工具

技巧 | Burp攻击面拓展与实用工具

 

 

 

原文始发于微信公众号(一位不愿透露姓名的热心网友):技巧 | Burp攻击面拓展与实用工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月21日10:00:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   技巧 | Burp攻击面拓展与实用工具https://cn-sec.com/archives/2316992.html

发表评论

匿名网友 填写信息