利用人工智能增强渗透测试方法 - 第一部分:Burpference
| Craig Vincent
Craig 是一名前软件开发人员和红队成员。自2018年以来,他一直在 Black Hills Infosec 从事渗透测试工作。
人工智能(AI)在我进入行业之前就一直是信息技术和信息安全领域的热门话题。虽然我一直关注AI的发展,但直到最近我才真正开始探索如何将AI作为我作为渗透测试员工作的一部分。不久前,我举办了一场关于渗透测试方法的网络研讨会,之后有人问我如何在我的方法/工作流程中使用AI。当时,我的回答是“我没有使用”。
很长一段时间里,我认为AI很有趣,但并不是特别有用。然而,随着技术的进步,AI已经成熟到我们可以绝对地利用它来帮助我们作为渗透测试员的工作。那么,这具体是什么样的呢?这篇博客文章将是一个系列文章的第一篇,我将描述我尝试将AI集成到我的渗透测试方法中的初步经验。
在探索新技术并将其纳入你的方法时,最好先看看你所在领域的其他人已经在用该技术做什么。当我最初开始走这条路时,我的BHIS同事Derek Banks向我介绍了一个名为burpference的项目。Burpference是一个Burp Suite插件,它将进出范围内Web应用程序的请求和响应发送到LLM进行推理。在人工智能的背景下,推理是取一个训练好的模型,提供新信息,并要求它根据其训练分析这些新信息。
在Burp Suite中安装burpference扩展是一项简单的任务。该扩展使用了Jython独立JAR。下载JAR后,我将Burp Suite Python环境配置为指向该JAR。这个设置可以在扩展标签页中打开“扩展设置”找到。
Python环境配置完成
Python环境配置完成后,我下载并解压了最新的burpference版本。Burpference在扩展目录中生成日志文件,因此我需要确保Burp Suite对该位置具有写权限。接下来,我打开了扩展标签页的“已安装”页面,点击“添加”按钮,并从扩展目录中选择burpference.py文件。
选择Burpference扩展
我检查了Burp Suite扩展加载器的输出部分,确保没有错误发生。扩展加载后,我打开了新的burpference标签页,并选择了一个指向我的LLM的配置文件。对于burpference的初步实验,我在实验室的一台旧游戏PC上使用Ollama设置了一个小型(70亿参数)的deepseek-r1模型。
Burpference配置文件指向本地LLM
在Burpference标签页中选择配置文件
为了测试扩展功能,我安装并运行了OWASP故意易受攻击的Juice Shop应用程序的本地实例。
浏览Juice Shop应用程序
为了减少噪音和LLM上不必要的负载,burpference只发送范围内的请求和响应。因此,我将Juice Shop应用程序添加到Burp Suite的项目范围中。这可以通过在目标标签页中右键单击应用程序并选择“添加到范围”来完成。
JuiceShop应用程序已添加到范围
在配置扩展时,我遇到了两个需要排除的陷阱:
- 我在实验室中一个物理上独立的主机上运行模型。默认情况下,Ollama绑定到localhost,我最初无法从运行burpference的测试主机与模型通信。我通过将运行Ollama的主机上的OLLAMA_HOST环境变量设置为0.0.0.0来解决这个问题。
- 一旦我能够与模型通信,burpference开始记录“General Error: cannot make memory view because object does not have the buffer interface”错误消息。这是该扩展的一个已知问题,我通过将Jython独立JAR从版本2.7.3更新到版本2.7.4来修复它。
扩展成功与模型通信后,我开始手动浏览Juice Shop应用程序。在浏览应用程序时,我注意到burpference正在将每个请求和响应发送到LLM,并附有以下提示:
你是一名Web应用程序渗透测试员,在参与的攻击阶段对应用程序进行全面操作,并专注于利用安全漏洞。
你的目标是检查通过Burp Suite代理历史记录可用的Web应用程序的HTTP请求和响应,因为我们正在测试该应用程序。
- 请求和响应评估:仔细检查HTTP请求和响应中的安全配置错误、敏感数据暴露和其他漏洞。
- 身份验证和会话管理:评估身份验证机制和会话处理实践的有效性。
- 输入验证和输出编码:识别与输入验证相关的弱点,这些弱点可能导致注入攻击或跨站脚本(XSS)。
使用推理和上下文通过提供可能导致成功利用的示例负载和PoC来查找应用程序中的潜在缺陷。
如果你认为存在任何漏洞,请在响应中前置(区分大小写)任何级别的发现严重性:
“CRITICAL” “HIGH” “MEDIUM” “LOW” “INFORMATIONAL”
对于任何信息级别的发现或观察,例如cookie中缺少“secure”标志。
并非每个请求和响应都可能有任何指示,请在你的方法中简洁但确定性和创造性。
HTTP请求和响应对在下面提供:
[下面的请求和响应JSON]
Burpference提示(为可读性格式化)
我注意到的第一件事是模型响应缓慢。这可能是由于我运行模型的主机的硬件限制。我决定稍后尝试使用更强大的远程OpenAI模型的扩展。该扩展发送完整的请求和响应,几乎肯定包含敏感信息,如凭据、会话令牌、响应数据等。在执行渗透测试时,维护客户数据的机密性是一个高度优先事项,这使得使用你无法完全控制的远程模型成为一个严重的问题。因此,我想先验证扩展的功能,并使用本地、内部部署的模型评估其性能。在浏览应用程序一段时间后,我花了一些时间在burpference日志页面中查看推理结果。
Burpference日志输出
虽然速度慢,但扩展似乎成功地与模型通信并记录推理结果。我观察到LLM审查了请求动词、参数、标头、cookie等,并从安全角度评估了它可以告诉的关于应用程序的信息。最终,它没有报告任何我在手动审查请求和响应时不会识别的东西。然而,它确实识别了一个有趣的cookie值,称为welcomebanner_status,设置为dismiss,它甚至 brainstormed 一个可能的攻击向量!
Burpference推理响应 – 识别有趣的Cookie
即使是在性能不佳的硬件上运行的小型本地模型,我至少可以看到扩展作为第二双眼睛的一些价值。我继续重新配置扩展以使用远程OpenAI gpt-4o-mini模型。正如你可能预期的那样,我看到更大的模型性能更好。除了识别与CORS和安全标头配置相关的问题外,它还识别了一个它认为易受跨站脚本(XSS)攻击的请求参数。模型甚至提供了一个概念验证负载。
通过Burpference识别的潜在跨站脚本
我在浏览器中尝试了概念验证请求。虽然XSS负载没有触发,但应用程序返回了HTTP 500内部服务器错误。
对PoC请求的错误响应
通过经验丰富的Web应用程序测试员的眼睛观察这个错误响应,似乎很明显我应该在这里寻找SQL注入漏洞,但我们的AI助手呢?我很高兴地发现burpference在另一个更冗长的错误消息中识别了SQL语法,这个错误消息我最初忽略了。它确定相同的参数可能易受SQL注入攻击,并提供了另一个概念验证利用。
Burpference报告的SQL注入漏洞
我在浏览器中尝试了这个PoC,应用程序响应了包含所有应用程序产品信息的JSON。这表明负载成功,应用程序易受SQL注入攻击。
SQL注入负载成功
在评估burpference时,我注意到的一件事是每个推理请求的上下文仅包含单个请求和响应。我认为这可能是扩展当前存在的一个限制因素。较小的本地模型的响应明确表示,如果提供更多上下文,它可能能够告诉我更多有用的信息。我认为很可能有机会扩展扩展的功能,以选择性地在同一推理请求中向模型发送一系列请求和响应,以提供更有用的上下文。
总体而言,我发现该扩展作为第二双眼睛查看我的Web流量是有用的,并且它成功地引导我发现了有效的漏洞。我喜欢它在后台被动工作,我绝对可以看到自己在Web应用程序渗透测试方法中利用这个扩展与内部部署模型。具体来说,我认为在开始新的Web应用程序渗透测试时执行手动枚举时启用burpference会很有用。
阅读本系列的第二部分:第二部分 – Copilot
想继续学习这个主题吗?立即注册下周的网络研讨会,美国东部时间5月22日星期四下午1:00举行: 使用AI增强渗透测试方法