新闻详情

新闻详情

首页 / 资讯中心 / 详情

Burp 被动扫描插件开发:自动识别接口泄露

发布时间:2026/10/1 8:07:55来源:尧图网络
Burp 被动扫描插件开发:自动识别接口泄露
Burp 被动扫描插件开发自动识别接口泄露免责声明本文仅用于授权环境下 Web 安全学习、企业内部安全测试开发。禁止在未获得目标书面授权的业务系统使用 Burp 与自研插件进行任何安全检测未经授权的测试属于违法行为一切后果自行承担。本文使用 Jython 开发依赖 Burp Suite 专业版Community 社区版不支持 IScannerCheck 扫描上报接口。前言做接口测试、渗透测试时经常遇到接口响应直接返回数据库账号密码、token、AK/SK、手机号、身份证等敏感数据。Burp 自带的扫描规则有限很多业务接口的自定义敏感字段无法识别。被动扫描插件最大优势不发包只分析 Proxy、HTTP History 里已经抓到的流量浏览器访问页面、接口请求经过 Burp插件自动分析响应内容命中规则直接在 Burp 的 Dashboard 的 Issues 面板生成漏洞无需人工逐包翻看。本文手把手实现一款 Jython 被动扫描插件功能监听所有经过 Burp 的 HTTP 流量被动扫描不额外发包内置正则规则检测接口返回的密码、密钥、手机号、身份证、AK 密钥等敏感信息泄露命中后自动在 Burp 扫描面板生成漏洞标记匹配片段支持控制台打印告警方便调试可自行扩展正则规则适配企业内部业务字段。前置知识Jython 基础、Burp 基础 API之前的右键菜单插件基础。环境Burp ProfessionalJython-standalone.jar 提前在 Extender 配置 Python 环境。一、核心 API 介绍IScannerCheck开发被动扫描插件核心要实现IScannerCheck接口两个核心方法doPassiveScan(baseRequestResponse)被动扫描入口每一条 HTTP 流量带响应都会进入这个方法我们在这里写敏感信息检测逻辑。不会发送任何新请求。doActiveScan(baseRequestResponse, insertionPoint)主动扫描本文不需要直接返回 None。返回值List[IScanIssue]命中漏洞就返回漏洞对象列表无漏洞返回空或 NoneBurp 会自动把漏洞渲染在 Issues 面板。IHttpRequestResponse对象.getRequest()请求 byte 数组.getResponse()响应 byte 数组.getHttpService()目标 host、port、https 标识helpers.analyzeRequest/analyzeResponse解析请求头、响应头重要限制Burp Community不支持 IScannerCheck只能用专业版做扫描上报社区版只能做打印日志无法生成 Issue 漏洞条目。二、完整插件源码ApiLeakScanner.pyfrom burp import IBurpExtender from burp import IScannerCheck from burp import IScanIssue from burp import IHttpService from java.util import ArrayList import re # 插件入口同时实现IScannerCheck被动扫描接口 class BurpExtender(IBurpExtender, IScannerCheck): def registerExtenderCallbacks(self, callbacks): self._callbacks callbacks self._helpers callbacks.getHelpers() callbacks.setExtensionName(ApiLeakScanner 接口敏感信息泄露被动检测) # 注册扫描检测Burp扫描引擎会加载我们的被动规则 callbacks.registerScannerCheck(self) # 自定义敏感信息正则规则可自行增删 self.rules [ { name: 密码明文泄露, regex: re.compile(rpassword[\]?\s*[:]\s*[\]?([a-zA-Z0-9!#$%^*]{4,})[\]?, re.I), severity: Medium, detail: 接口响应返回明文密码存在账号信息泄露风险 }, { name: AK密钥泄露(AWS), regex: re.compile(rAKIA[0-9A-Z]{16}), severity: High, detail: 接口响应发现AWS AccessKey攻击者可利用该密钥访问云资源 }, { name: 手机号泄露, regex: re.compile(r1[3-9]\d{9}), severity: Low, detail: 接口响应返回手机号存在用户隐私泄露风险 }, { name: 身份证号泄露, regex: re.compile(r[1-6]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]), severity: Medium, detail: 接口响应返回身份证号码严重用户隐私泄露 }, { name: Token/JWT泄露, regex: re.compile(reyJhbGciOiJ[\w\-\.]), severity: Medium, detail: 接口返回JWT Token存在会话凭证泄露风险 } ] print(*60) print(ApiLeakScanner 加载成功被动扫描已开启) print(原理浏览网站插件自动检测接口响应敏感信息泄露) print(*60) return # 被动扫描核心方法每条带响应的流量都会进入 def doPassiveScan(self, baseRequestResponse): try: response baseRequestResponse.getResponse() if response is None or len(response) 0: return None # byte数组转字符串 resp_str self._helpers.bytesToString(response) issues ArrayList() # 遍历全部检测规则 for rule in self.rules: matches rule[regex].findall(resp_str) if matches: # 去重 unique_matches list(set(matches)) print([] {} 命中匹配内容{}.format(rule[name], unique_matches)) # 构造漏洞详情 issue_detail h3{}/h3 p接口响应检测到敏感信息b{}/b/p p风险描述{}/p .format(rule[name], unique_matches, rule[detail]) # 构造IScanIssue漏洞对象 scan_issue CustomScanIssue( baseRequestResponse.getHttpService(), self._helpers.analyzeRequest(baseRequestResponse).getUrl(), [baseRequestResponse], 接口敏感信息泄露 - {}.format(rule[name]), issue_detail, rule[severity] ) issues.add(scan_issue) if issues.size() 0: return issues return None except Exception as e: print([!] PassiveScan异常: str(e)) return None # 主动扫描本插件不使用直接返回None def doActiveScan(self, baseRequestResponse, insertionPoint): return None # 重复漏洞合并Burp要求实现避免同一页面大量重复告警 def consolidateDuplicateIssues(self, existingIssue, newIssue): if existingIssue.getIssueName() newIssue.getIssueName(): return 0 else: return -1 # 自定义IScanIssue类用于生成漏洞条目 class CustomScanIssue(IScanIssue): def __init__(self, httpService, url, httpMessages, name, detail, severity): self._httpService httpService self._url url self._httpMessages httpMessages self._name name self._detail detail self._severity severity def getUrl(self): return self._url def getIssueName(self): return self._name def getIssueType(self): return 0 def getSeverity(self): return self._severity def getConfidence(self): return Tentative def getIssueBackground(self): return None def getRemediationBackground(self): return None def getIssueDetail(self): return self._detail def getRemediationDetail(self): return None def getHttpMessages(self): return self._httpMessages def getHttpService(self): return self._httpService三、代码逐段解析1. 类定义与注册class BurpExtender(IBurpExtender, IScannerCheck):同时实现两个接口IBurpExtenderBurp 插件入口必须IScannerCheck扫描检测接口用于注册被动扫描规则。callbacks.registerScannerCheck(self)关键代码把我们的检测规则注册到 Burp 扫描引擎开启被动扫描能力。2. 规则列表self.rules数组每条规则包含名称、正则、风险等级、漏洞描述。你可以在这里添加企业自定义字段比如内部appkey、secret。正则注意Jython 的 re 模块和 Python 基本一致re.I代表忽略大小写。3. doPassiveScan 被动扫描主逻辑判断响应包是否为空无响应直接 return使用helpers.bytesToString()把 Burp 原生 byte 响应转为字符串循环所有正则规则匹配响应内容命中后构建CustomScanIssue漏洞对象加入 issues 列表返回 issues 列表Burp 自动渲染到 Issues 面板。4. CustomScanIssue 自定义漏洞类继承IScanIssue必须实现一系列getXXX方法用于告诉 Burp 漏洞名称、详情、风险等级、对应的请求包。Severity 可选值High / Medium / Low / InformationConfidenceTentative疑似/Firm确定/Certain敏感信息正则匹配推荐使用 Tentative存在误报可能需要人工复核。5. consolidateDuplicateIssues 去重合并Burp 要求必须实现这个方法作用同一个页面重复触发同一条漏洞时合并告警防止 HTTP History 几十条请求生成几十条一模一样的漏洞造成面板爆炸。返回 0两个漏洞视为相同合并返回 - 1不合并。四、加载插件、测试流程保存代码为ApiLeakScanner.pyBurp → Extender → Extensions → Add扩展类型选 Python选中 py 文件控制台输出加载成功提示开启 Burp 代理浏览器配置代理访问测试靶场接口当接口响应命中正则两件事同时发生Extender 控制台打印[] 命中xxxDashboard → Issues 面板自动新增漏洞条目点开可以直接查看对应的请求 / 响应包。测试靶场示例接口返回{password:123456,phone:13800138000}插件会同时命中密码泄露、手机号泄露两条规则。五、插件优化与扩展改造思路改造 1增加请求体检测不仅看响应同时扫描请求参数有些场景请求里携带敏感信息在doPassiveScan里增加请求包解析req_bytes baseRequestResponse.getRequest() req_str self._helpers.bytesToString(req_bytes)然后同样用正则匹配 req_str。改造 2增加域名白名单只扫描目标域减少误报在doPassiveScan开头获取 url host不在目标范围直接跳过检测。url self._helpers.analyzeRequest(baseRequestResponse).getUrl() host url.getHost() allow_host [127.0.0.1, test.target.com] if host not in allow_host: return None改造 3增加简单误报过滤比如排除静态资源js、css、图片静态文件直接跳过扫描减少不必要的正则运算提升性能。url_str str(url) if url_str.endswith((.js,.css,.png,.jpg,.gif)): return None改造 4增加高亮标记匹配片段高级玩法使用IMarker在 Burp 的 HTTP 报文里高亮命中的敏感字符串方便一眼定位泄露位置。六、调试技巧print 打印Jython 无断点调试print 是核心手段打印匹配结果、url定位为什么没有命中单独打印响应内容确认响应是否完整读取正则单独在本地 Python 测试确认正则能正常匹配文本再放到插件里控制台出现异常栈直接定位报错行。七、高频踩坑清单Community 社区版没有 IScannerCheck加载插件不会报错但是不会生成 Issues 漏洞条目只能控制台打印。想要自动上报漏洞必须 Burp 专业版。YAML 缩进 / 语法不是问题但 Jython 类方法名不能写错doPassiveScan名字一旦写错插件不会执行扫描逻辑无报错。byte 数组忘记转换直接把 response 当成字符串出现报错乱码必须self._helpers.bytesToString()。大量重复漏洞没有实现consolidateDuplicateIssues同一个页面多次请求Issues 面板爆一堆重复漏洞。正则太宽泛大量误报比如简单匹配password单词页面注释、js 变量名也会命中。建议增加前后边界缩小正则范围。静态资源大量扫描Burp 卡顿没有过滤图片、css、js流量量大的时候正则消耗 CPUBurp 响应变慢。增加后缀过滤。漏洞详情使用 HTMLIScanIssue 的 getIssueDetail 支持 HTML 标签所以我们用h3b美化漏洞展示纯文本也可以。八、实战工作流推荐开启本插件开启 Burp 代理浏览器访问业务系统Burp 自动记录 HTTP 流量插件被动扫描所有接口响应发现敏感泄露自动生成 Issue在 Issues 面板查看漏洞直接跳转对应的请求包人工复核自动化正则一定会存在误报所有漏洞必须人工确认把业务特有敏感字段新增到插件的 rules 列表沉淀专属规则库。联动之前 XrayBurp 联动Xray 扫描流量走 Burp 代理本插件同时被动扫描 Xray 的所有请求响应Xray 扫接口插件自动识别接口返回的敏感信息泄露组合使用效率极高。九、进阶方向结合 Gitleaks 正则规则库导入大量密钥、秘钥检测规则增加外带检测Burp Collaborator检测 SSRF 类漏洞被动增加右键菜单一键导出全部检测到的泄露信息为 CSVMontoya API 新版 Burp 插件开发Java性能更好。十、开发检查清单使用 Burp 专业版确认 Jython 环境配置正常实现 IBurpExtender IScannerCheck注册 scannerCheckdoPassiveScan 处理 response 为空的边界情况实现 consolidateDuplicateIssues 合并重复漏洞添加静态资源过滤、域名范围控制减少误报、降低性能消耗先在简单靶场测试验证漏洞可以正常出现在 Issues 面板所有漏洞人工复核正则持续优化降低误报率仅在授权靶场、授权业务测试使用。最后网络安全需要学习那些知识网络安全零基础入门学习路线规划初级1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗想要入坑黑客网络安全的朋友给大家准备了一份282G全网最全的网络安全资料包免费领取7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线视频配套资料国内外网安书籍、文档工具当然除了有配套的视频同时也为大家整理了各种文档和书籍资料工具并且已经帮大家分好类了。一些我自己买的、其他平台白嫖不到的视频教程要学习网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

语音智能硬件开发全链路实战:离线与在线方案选型及延迟优化 2026/10/1 9:05:27

语音智能硬件开发全链路实战:离线与在线方案选型及延迟优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
具身智能协同演化动力学(63):标准化智能底座如何重塑产业落地生态 2026/10/1 9:05:20

具身智能协同演化动力学(63):标准化智能底座如何重塑产业落地生态

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&…

阅读更多 →
Neutralinojs 国内环境搭建与跨平台打包实战指南 2026/10/1 9:05:20

Neutralinojs 国内环境搭建与跨平台打包实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
业务拆解九种方法:从数据异常定位到归因分析 2026/10/1 9:05:13

业务拆解九种方法:从数据异常定位到归因分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
混合模型+智能体编排+安全策略:AI应用底座落地实践 2026/10/1 9:05:06

混合模型+智能体编排+安全策略:AI应用底座落地实践

写这第5篇技术文章的时候,刚好是55873生态从架构图变成可运行系统的第四周。这套东西的定位很直接:把613混合模型、四层智能体架构、安全策略编排三者糅在一起,做成一套能交付、能迭代、能出活的AI应用底座。如果你正在为“到底该用哪个模型”…

阅读更多 →
ESP32-CAM图像传输实战:从硬件接线到视频流完整指南 2026/10/1 9:05:05

ESP32-CAM图像传输实战:从硬件接线到视频流完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉