https://mp.weixin.qq.com/s/ypCkaJ51kcJBQ1cskDuCsA
想法
出发点是在有很多的逻辑漏洞需要我们手动去测试,比如越权漏洞,需要我们修改参数并重放,对比返回数据包的差异,这些简单重复的工作完全可以自动化完成。除此之外还可以自动化实现的漏洞包括:
- 信息泄漏:敏感信息数据可以利用ai识别
- 验证码回显漏洞:在某些登陆或需要验证的场景下,后端会将验证码返回到前端,前端输入任意账号即可实现登陆或其它敏感操作
- 安全机制绕过漏洞:常见于返回包中,返回包修改为:200后,即可绕过后端的登陆失败等问题
- 任意用户伪造:需要多个数据包协同,一个数据包修改请求带有用户名,如果可以直接获取到返回的cookie就可以使用这个cookie访问其他的页面
自动化越权漏洞判断
https://cloud.tencent.com/developer/article/2235686
从手工测试角度触发主要是有两步
- 修改请求包
- 需要明确请求包具体修改哪里,修改的数据类型是什么
- 请求包是否有鉴权字段,这个字段哪里来的
- 判断返回包
- 返回包不能仅仅判断是否相同,因为每次请求可能不一样,应当判断返回包的详细度,或者可以通过关键user相关信息判断
现有工具
https://github.com/Quitten/Autorize
https://github.com/sule01u/AutorizePro
- 工具标志忽略(
tool_needs_to_be_ignored
):- 检查是否应忽略来自特定Burp Suite工具(如Spider, Proxy, Target)的请求,基于用户配置。
- 捕获和记录Cookie和授权头(
capture_last_cookie_header
,capture_last_authorization_header
):- 从HTTP请求或响应中捕获最后一次使用的Cookie和授权头,方便后续请求的复用。
- 304状态码防御(
handle_304_status_code_prevention
):- 修改请求头以避免服务器返回304状态码,这可能影响对响应内容的检测。
- 消息过滤(
message_passed_interception_filters
):- 应用一系列自定义过滤规则,确定是否应处理特定的HTTP请求或响应。这包括URL包含/不包含特定文本或正则表达式、请求体和响应体的内容检测等。
- 越权检测和授权校验(
handle_message
,checkAuthorization
,send_request_to_autorize
):- 主要逻辑入口,处理传入的消息,判断是否符合处理条件,然后执行越权检测。
send_request_to_autorize
是在原始请求基础上修改后发送的功能,用来模拟未授权或重新授权的请求。
- 自定义逻辑处理响应(
auth_enforced_via_enforcement_detectors
,is_json_response
,checkBypass
):- 根据设置的检测逻辑(状态码、头部、响应体等)来确定是否实施了授权。
checkBypass
方法比较授权前后的状态码和内容,以确定是否存在越权或授权绕过。
越权漏洞的检测依赖于比较修改前后的请求响应。如果修改用户授权信息(如Cookie或Authorization header)后,得到的响应与原响应相似,说明系统未能正确实施访问控制,从而存在越权问题。
模块设计
设计一个Burp Suite插件以使用AI进行越权检测并预留扩展性用于未来增加更多逻辑漏洞检测,需要有一个清晰且模块化的架构。以下是一个基础的设计方案,包括主要组件和相关文件的建议。
#为了设计一个基于AI的Burp Suite插件,用于检测越权漏洞,并考虑未来扩展以支持更多类型的逻辑漏洞检测,我们可以按照以下结构来构建项目:
- 项目架构设计
核心组件:
- 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 | BurpAIExtension/ |