【工具开发】Burpsuite 插件开发

https://mp.weixin.qq.com/s/ypCkaJ51kcJBQ1cskDuCsA

想法

出发点是在有很多的逻辑漏洞需要我们手动去测试,比如越权漏洞,需要我们修改参数并重放,对比返回数据包的差异,这些简单重复的工作完全可以自动化完成。除此之外还可以自动化实现的漏洞包括:

  • 信息泄漏:敏感信息数据可以利用ai识别
  • 验证码回显漏洞:在某些登陆或需要验证的场景下,后端会将验证码返回到前端,前端输入任意账号即可实现登陆或其它敏感操作
  • 安全机制绕过漏洞:常见于返回包中,返回包修改为:200后,即可绕过后端的登陆失败等问题
  • 任意用户伪造:需要多个数据包协同,一个数据包修改请求带有用户名,如果可以直接获取到返回的cookie就可以使用这个cookie访问其他的页面

自动化越权漏洞判断

https://cloud.tencent.com/developer/article/2235686

从手工测试角度触发主要是有两步

  1. 修改请求包
    • 需要明确请求包具体修改哪里,修改的数据类型是什么
    • 请求包是否有鉴权字段,这个字段哪里来的
  2. 判断返回包
    • 返回包不能仅仅判断是否相同,因为每次请求可能不一样,应当判断返回包的详细度,或者可以通过关键user相关信息判断

现有工具

https://github.com/Quitten/Autorize
https://github.com/sule01u/AutorizePro

  1. 工具标志忽略tool_needs_to_be_ignored):
    • 检查是否应忽略来自特定Burp Suite工具(如Spider, Proxy, Target)的请求,基于用户配置。
  2. 捕获和记录Cookie和授权头capture_last_cookie_header, capture_last_authorization_header):
    • 从HTTP请求或响应中捕获最后一次使用的Cookie和授权头,方便后续请求的复用。
  3. 304状态码防御handle_304_status_code_prevention):
    • 修改请求头以避免服务器返回304状态码,这可能影响对响应内容的检测。
  4. 消息过滤message_passed_interception_filters):
    • 应用一系列自定义过滤规则,确定是否应处理特定的HTTP请求或响应。这包括URL包含/不包含特定文本或正则表达式、请求体和响应体的内容检测等。
  5. 越权检测和授权校验handle_message, checkAuthorization, send_request_to_autorize):
    • 主要逻辑入口,处理传入的消息,判断是否符合处理条件,然后执行越权检测。
    • send_request_to_autorize 是在原始请求基础上修改后发送的功能,用来模拟未授权或重新授权的请求。
  6. 自定义逻辑处理响应auth_enforced_via_enforcement_detectors, is_json_response, checkBypass):
    • 根据设置的检测逻辑(状态码、头部、响应体等)来确定是否实施了授权。
    • checkBypass 方法比较授权前后的状态码和内容,以确定是否存在越权或授权绕过。

越权漏洞的检测依赖于比较修改前后的请求响应。如果修改用户授权信息(如Cookie或Authorization header)后,得到的响应与原响应相似,说明系统未能正确实施访问控制,从而存在越权问题。

模块设计

设计一个Burp Suite插件以使用AI进行越权检测并预留扩展性用于未来增加更多逻辑漏洞检测,需要有一个清晰且模块化的架构。以下是一个基础的设计方案,包括主要组件和相关文件的建议。

#为了设计一个基于AI的Burp Suite插件,用于检测越权漏洞,并考虑未来扩展以支持更多类型的逻辑漏洞检测,我们可以按照以下结构来构建项目:

  1. 项目架构设计
    核心组件:
  • AI Model Interface: 管理与AI模型的交互,如发送请求数据和接收预测结果。
  • Scan Check Implementations: 实现Burp的ScanCheck接口,用于触发和处理AI模型的检测结果。
  • HTTP Request Handler: 处理HTTP请求的收集和修改,用于发送给AI模型进行分析。
  • Result Processor: 处理AI模型返回的数据,生成Burp的审计问题。
  • Utility Classes: 提供辅助功能,如数据格式化、日志记录和错误处理。

扩展组件:

  • Config Management: 管理插件的配置,如模型服务器的URL、端口等。
  • UI Components: 如果需要,提供用户界面用于配置插件设置或显示检测结果。
  1. 项目文件和模块

基于上述架构,项目的文件结构可以如下设计:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
BurpAIExtension/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ ├── ai/
│ │ │ │ ├── AIDetector.java // AI模型接口
│ │ │ │ └── AIModelResponse.java // 封装AI模型的响应
│ │ │ ├── burp/
│ │ │ │ ├── BurpExtender.java // 主扩展类
│ │ │ │ ├── UnauthorizedAccessScan.java // 越权检测实现
│ │ │ │ ├── HttpRequestHandler.java // HTTP请求处理
│ │ │ │ └── ResultProcessor.java // 结果处理器
│ │ │ ├── config/
│ │ │ │ └── Configuration.java // 配置管理
│ │ │ └── utils/
│ │ │ ├── Logger.java // 日志工具
│ │ │ └── Utilities.java // 常用工具类
│ │ └── resources/
│ │ └── config.properties // 配置文件
│ └── test/
│ └── java/
├── build.gradle // Gradle构建脚本
└── README.md // 项目文档