基于LLM的被动扫描工具:burpGpt

admin 2024年7月12日18:47:26评论90 views字数 2062阅读6分52秒阅读模式
基于LLM的被动扫描工具:

burpGpt

随着人工智能技术的快速发展,chatgpt这类生成式AI应用已经逐渐渗透进社会的方方面面。作为渗透测试人员,我们也在思考该如何使用大语言模型提高我们的测试效率和质量。近日在调研具备AI能力的安全测试工具时,发现一款名为burpGpt的burpsuite插件工具,于是本人在其社区免费版的基础上二开,以适配自己的测试习惯。本文旨在分享该工具的思路,感兴趣的同学可以研究并开发适合自己的工具。

burpGpt

首先感谢burpGpt分享了其社区版的代码,为我们提供了一种应用思路,其官方网站为:https://burpgpt.app/,开源代码地址为:https://github.com/aress31/burpgpt,需要开发者自己构建jar包。

结构原理

burpGpt的结构原理并不复杂,结构图如Fig.1所示。该工具是一款被动扫描工具,主要功能是将通过burpsuite的网络流量发送给大语言模型,由大语言模型代为分析可能遗留的漏洞,并将结果提交给burpsuite。

基于LLM的被动扫描工具:burpGpt
Fig.1 burpGpt结构原理

如Fig.2所示,该工具的代码结构也相对比较简单,这里主要讲解MyBurpExtension、GPTClient和MyScanCheck三个类。

基于LLM的被动扫描工具:burpGpt
Fig.2 代码结构

1

MyBurpExtension

该类主要是进行基础设置,主要的参数如Fig.3所示,包括apikey、modelIds、maxPromptSize以及prompt,MyBurpExtension类会将这些参数传递给GPTClient。

基于LLM的被动扫描工具:burpGpt
Fig.3 MyBurpExtension主要参数

这里主要需要注意prompt参数,该参数为:

Please analyze the following HTTP request and response for potential security vulnerabilities, specifically focusing on OWASP top 10 vulnerabilities such as SQL injection, XSS, CSRF, and other common web application security threats.

Format your response as a bullet list with each point listing a vulnerability name and a brief description, in the format:

- Vulnerability Name: Brief description of vulnerability

Exclude irrelevant information.

=== Request ===

{REQUEST}

=== Response ===

{RESPONSE}

这个prompt是要求大语言模型分析请求包和返回包可能存在OWASP TOP 10漏洞,用户也可以对该prompt进行修改优化,毕竟好的prompt可以增强模型的理解能力和生成能力,提高分析结果的稳定性和可靠性。

2

GPTClient

该类中的getCompletion方法将prompt传递给大语言模型,并获取到返回包,如Fig.4所示。

基于LLM的被动扫描工具:burpGpt
Fig.4 GTPClient---getCompletions

实际上该方法并没有被直接调用,而是被方法identifyVulnerabilities间接调用的,identifyVulnerabilities同时在该类中会构造GPTRequest对象,在该类中这个被构造出来对象的主要作用是将被扫描的请求包与返回包导入到prompt中并传递给getCompletions方法,identifyVulnerabilities方法如Fig.5所示。

基于LLM的被动扫描工具:burpGpt
Fig.5 GPTClinet---identifyVulnerabilities

3

MycheckScan

该类其实是实现了burp api的ScanCheck,Override passiveAudit方法,如Fig.6所示。

基于LLM的被动扫描工具:burpGpt
Fig.6 MycheckScan---passiveAudit

其中2中的identifyVulnerabilities构造的GPTRequest对象也会在这里传递给createAuditIssuesFromGPTRespone方法。

分析结果

这里我们用了某个数据包来做测试,结果如Fig.7所示:

基于LLM的被动扫描工具:burpGpt
Fig.7 分析结果

该分析结果误报率很高,个人认为主要问题在于在当前应用下大语言模型只做了分析而没有做主动验证。

展望

burpGpt社区版提供的思路的可落地性比较强,但是存在误报率高的问题,而且使用OpenAI也意味着会将流量泄露给公共大模型,有可能导致信息泄露。

为了进一步解决该问题,我们可以引入本地大模型,同时使用LangChain Agent等开发工具,实现大语言模型去主动验证自己发现的问题。

下载

https://github.com/aress31/burpgpt

 

原文始发于微信公众号(联想全球安全实验室):基于LLM的被动扫描工具:burpGpt

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月12日18:47:26
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于LLM的被动扫描工具:burpGpthttps://cn-sec.com/archives/2947069.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息