认证令牌获取与替换扩展器
简介
在Web安全测试的世界里,自动化是关键,而Burp Suite是首选工具。然而,要真正发挥Burp自动化扫描的威力,你需要合适的插件。ATOR正是为此而生。这款开源的Burp插件旨在通过简化各种场景下的令牌管理和替换,彻底改变你的扫描能力,包括:
- 访问令牌与刷新令牌管理
- 在XML和JSON请求体中的令牌替换
- 在URL和Cookie中的令牌替换
传统上,完成这些任务需要复杂的宏、会话规则或自定义扩展器,尤其是在处理JSON或XML数据时。我们的插件简化了这一过程,并提供了以下几个关键优势:
关键优势:
- 内存中令牌替换:通过无缝替换内存中的令牌来消除重复的登录请求,提高扫描效率。
- 用户友好的体验:使用正则表达式轻松从响应消息中提取数据并在请求中替换。这种灵活性对于处理涉及JSON、XML、表单数据等的各种场景非常有价值。
- 更快的扫描速度:通过避免不必要的登录请求来实现更快的扫描速度。该插件采用"触发请求"机制来识别错误条件,例如响应码为401且响应体包含"Unauthorized request"。
该插件的灵感来源于ExtendedMacro插件:https://github.com/FrUh/ExtendedMacro
开始使用
要使用此插件,请遵循以下步骤:
- 安装Java和Maven。
- 克隆此仓库。
- 在克隆仓库目录(pom.xml所在目录)中运行"mvn clean install"命令。
- 从"target"文件夹中获取生成的包含依赖的JAR文件。
先决条件
在使用插件之前,请确保以下事项:
- 确保你的机器上已配置好Java环境。
- 配置Burp Suite以监听代理流量。
- 在Burp的Extender选项卡中配置Java环境。
如需配合测试应用程序使用(从https://github.com/payatu/Tiredful-API 安装此测试应用(Tiredful application))
步骤
- 识别产生错误的请求。
- 识别错误模式(详见下文)。
- 使用正则表达式从响应中获取数据(参见示例正则值)。
- 在请求中替换此数据(使用与步骤3相同的正则表达式以及变量名)。
错误模式:
总共有4种指定错误条件的方式:
- 状态码:401, 400
- 响应体错误:给出响应体内容中的任意文本(例如:Access token expired)
- 响应头错误:给出响应头中的任意文本(例如:Unauthorized)
- 自由形式:使用此方式指定多个条件(例如:st=400 && bd=Access token expired || hd=Unauthorized)
端到端测试分解
- 发现无效请求:
- 使用无效的Bearer令牌发送请求:http://HOST:PORT/api/v1/exams/MQ==/
- 识别错误模式:
- 上述请求将返回401,因此错误条件为状态码 = 401
- 用请求数据匹配正则表达式
- Authorization: Bearer \w* - 此正则表达式将匹配传入的访问令牌。
- 替换 - 如何进行替换
- 将匹配的文本(步骤3中的正则表达式)替换为提取的值(提取配置将在下面讨论,假设变量名为"token")
- Authorization: Bearer token - 提取的令牌将被替换。
与测试应用程序配合使用
思路:在BURP中记录Tiredful应用程序的请求,配置ATOR扩展器,检查令牌是否被ATOR替换。
- 在配置了BURP的浏览器中打开测试应用程序
- 从http://HOST:PORT/handle-user-token/生成令牌
- 通过传入Authorization Bearer令牌(从上一步获取)发送请求http://HOST:PORT/api/v1/exams/MQ==/
- 在BURP中将ATOR jar文件作为扩展器添加
- 在代理历史记录中右键点击请求(/handle-user-token),选择"发送到 Authentication Token Optain and Replace Extender"
- 在提取配置中通过选择"access_token"值添加新条目,并命名为"token"(可以是任意名称)
注意:对于此应用程序,一个请求足以生成令牌。令牌也可以在多次请求后生成。
- 触发条件:
- 如果条件匹配,将执行宏步骤。
- 步骤执行后,如果指定了"Pattern"和"Replacement Area",则替换传入请求的值。
- 对于我们的测试,
- 错误条件为401(状态码)
- Pattern为"Authorization: Bearer \w*"(指定如何用提取值替换的正则模式)
- Replacement Area为"Authentication: Bearer <你在步骤4中给出的名称>"
- 点击"Add"按钮。
- 对于此示例,一次替换足以使传入请求变为有效,但你可以为单个条件添加多个替换。
- 从Repeater发送无效请求,并在FLOW/Logger++中查看请求/响应流
- 从Repeater发送无效的Bearer令牌(http://HOST:PORT/api/v1/exams/MQ==/)将导致响应为401。
- 扩展器将匹配此条件并开始运行记录的步骤,提取"access_token"
- 在来自Repeater的实际响应中替换访问令牌(来自步骤ii),使此无效请求变为有效。
- 在repeater控制台中,你将看到200 OK响应。
- 再次执行步骤7并检查流程
- 这次扩展器不会调用步骤,因为现有令牌有效,因此它将使用该令牌。
构建工具
贡献
请阅读CONTRIBUTING.md了解我们的行为准则以及向我们提交拉取请求的流程。
版本控制
v2.3.0
作者
Synopsys
许可证
本软件由Synopsys根据MIT许可证发布。
致谢