1.1、影響版本
Tomcat全版本
1.2、環境搭建
1.利用vulhub已有的鏡像,由於這個鏡像啟動后登錄管理頁面存在重復驗證的問題,這里不再利用docker-compose.yml
cd /root/vulhub/tomcat/tomcat8
docker pull docker.io/vulhub/tomcat:8.0
2、創建tag並運行docker
docker tag yourDockerid tomcat8.0
3、更改tomcat鏡像的里的tomcat-users.xml
docker cp tomcat-users.xml yourDockerid:/usr/local/tomcat/conf/tomcat-users.xml
4、重啟docker
docker restart yourDockerid
1.3、復現流程
1.3.1、弱口令爆破--使用burpsuite爆破
訪問manager后台
提交用戶名和密碼后抓包,設置Authorization: Basic dG9tY2F0Onh4eHh4eHh4eA==這一部分為payload變量。
設置payload為Custom iterator,並按順序設置以下3個payload。
這個順序很有講究,在實際測試中,tomcat6/7/8+會針對登陸次數過多的用戶進行鎖定,經過統計分析,當登錄錯誤>5次后,就會鎖定用戶。這時候我們就要考慮如何繞過。CSDN上有個腳本利用的是占滿tomcat緩存的方式繞過,當同一賬號大於5次登錄,就會采用臟數據去進行登錄,直到緩存占滿后,又會用剩下的可能存在的username進行登錄。直到找到password為止。tomcat暴破圖形化---繞過tomcat 6/7/8的防暴破機制
這里我們采用針對同一弱口令去爆破不同賬號的方式進行猜解,將可能存在的username放入position1的位置,其次放置password在position3的位置,最后attack時爆破的順序如下圖,就不會針對同一賬號鎖定。這樣做的好處在於我們針對同一個口令去爆破大量用戶時,由於用戶不同,不會被鎖定,同時由於第二次使用這個賬戶爆破其他口令時,tomcat的緩存有很大幾率被占滿,就不會導致鎖定。
在此模塊設置對payload的處理方式
然后start attack,獲得密碼,即可登錄。
1.3.2、弱口令爆破--使用msf自帶模塊爆破
msf有一個自帶的爆破該后台的模塊,但是顯然也沒有考慮到后續版本對這個策略的繞過,不過無論哪個繞過方式都不適當,因為請求的次數太多,都需要結合實際考慮是否使用。但是這個模塊依舊有意義的點在於它的username和password是十分易於存在的用戶名和弱口令,且數目很少,假如存在弱口令,也頂多是這個;不存在弱口令,在無可奈何的情況下,也就是只能采用我們上述的辦法。下面是爆破過程。
首先使用爆破模塊
use auxiliary/scanner/http/tomcat_mgr_login
然后設置參數
set rhosts 192.168.52.130
set rport 8080
然后run一下即可,由於tomcat口令正好處於第5個,未被鎖定,故而網上絕大部分文章都是這樣利用的,實際上沒有深入思考實戰價值
1.4、部署war包上傳getshell
1)、將shell.jsp打包成war包
shell.jsp單獨放置一個目錄,命令行下進入當前目錄
jar -cvf Login.war .\
或者直接將shell.jsp壓縮,修改后綴為.war即可
2)、進入登錄后的頁面,部署上傳
3)、訪問http://yourip:port/Login/shell.jsp
Login目錄是war包的包名