一次从jmx到rce

VSole2022-12-20 13:54:29

渗透过程

发现了一个集成的环境,开了jmx服务

service:jmx:rmi:///jndi/rmi://1.1.1.157:9003/jmxrmi jconsole连上去之后发现一些敏感的账号密码

在http://localhost:8983/solr 发现了solr,但是历史洞都打不了,log4j是高版本的jdk,并且不出网,所以整个思路就围绕在jmx的利用上。

jmx已知的利用方式有javax.management.loading.MLet加载远程类rce,但是目标不出网必须用其他方式了。

考虑到tomcat,想起来陈师傅写过的《几个Jolokia RCE 的“新”利用方式》

通过tomcat的createStandardHost配合AccessLogValue进行rce。

利用如下

先创建Host为test.com Catalina:type=Host,host=test.com

然后tomcat的valve中就有了test.com的部署之后的结果

修改host为test.com之后就可以访问根目录下的任意文件

那么只需要写入一个jsp文件就可以getshell了。写入文件需要用AccessLogValue

修改AccessLogValue的属性


suffix .jspprefix aafileDateFormat .yyyy-MM-ddpattern %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"directory /tmp/

最终文件路径为/tmp/aa.2022-09-20.jsp

pattern会进行格式化,%{User-Agent}i表示引用请求头中User-Agent字段

然后发包写入日志文件

然后访问shell即可

如果访问shell不存在可以执行一下AccessLogValve#rotate()重新格式化日志文件名,确保日志文件名修改为我们想要的值。

打完记得把配置属性改回去,不然日志文件会越来越大,访问shell比较卡。

参考

看起来简单,但是实际上涉及的知识点很多。比如陈师傅的文章中是在Jolokia中利用,jmx和Jolokia大同小异。另外陈师傅提到的jfr和vmLog写文件在实际环境中不存在,所以用到了spring4shell中的一环即AccessLogValue。

具体不详细写了,直接看参考链接吧。

  1. https://articles.zsxq.com/id_h4mjj2ktw352.html
  2. https://sec.lz520520.com/2022/04/714/
  3. https://xz.aliyun.com/t/11450
  4. https://www.cnblogs.com/0x28/p/15685164.html
jmxhost
本作品采用《CC 协议》,转载必须注明作者和本文链接
一次从jmx到rce
2022-12-20 13:54:29
jmx已知的利用方式有javax.management.loading.MLet加载远程类rce,但是目标不出网必须用其他方式了。考虑到tomcat,想起来陈师傅写过的《几个Jolokia RCE 的“新”利用方式》通过tomcat的createStandardHost配合AccessLogValue进行rce。利用如下先创建Host为test.com?Catalina:type=Host,host=test.com然后tomcat的valve中就有了test.com的部署之后的结果修改host为test.com之后就可以访问根目录下的任意文件那么只需要写入一个jsp文件就可以getshell了。写入文件需要用AccessLogValue修改AccessLogValue的属性suffix .jspprefix aafileDateFormat .yyyy-MM-ddpattern %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"directory /tmp/
Hadoop JMX监控和预警
2022-07-31 13:06:06
对于收集的metrics数据,建议先写入Kafka,作为一个"分布式缓存层",以将JMX client和metrics最终的存储系统解偶,避免JMX数据的存储延迟。JMX监控和预警目前Hadoop集群监控的方式很多,比如Restful API,具体Hadoop组件内置的API、JMX等。
前言由于最近学习内网,打了一些靶场,觉得还是挺枯燥的,就想找一个真实的环境练练手,在hxd的指引下,找了个站。
Tomcat的一种利用方式
2022-12-12 10:05:47
访问/manager/html输入用户名和密码,自动在里面上传war进行部署显然这不归Tomcat负责,应该由用户保证自己的账号和密码安全TomcatManager为的管理采用了作者名作HTTP Basic认证,也就是用户名作认证后的Base64保护。这Tomcat也是官方拒绝该漏洞的原因之一,他们认为基于JMXProxy实现的RCE攻击和类似的,由用户负责安全public class LockOutRealm extends CombinedRealm { /** * 用户连续认证失败的次数 * 被锁定。
最常见的情况是使用 Tomcat 作为 Java Web 服务器,使用 Spring 提供的开箱即用的强大 的功能,并依赖其他开源库来完成负责的业务功能实现
Jboss是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
虽说是 Spring 框架漏洞,但以下包含并不仅 Spring Framework,Spring Boot,还有 Spring Cloud,Spring Data,Spring Security 等。
渗透工程师常用命令速查手册
confluence-CVE-2022-26134漏洞分析
VSole
网络安全专家