1. 程式人生 > 實用技巧 >BUUCTF | [RoarCTF 2019]Easy Java

BUUCTF | [RoarCTF 2019]Easy Java

知識點:

WEB-INF/web.xml洩露

WEB-INF主要包含一下檔案或目錄:
/WEB-INF/web.xml:Web應用程式配置檔案,描述了 servlet 和其他的應用元件配置及命名規則。
/WEB-INF/classes/:含了站點所有用的 class 檔案,包括 servlet class 和非servlet class,他們不能包含在 .jar檔案中
/WEB-INF/lib/存放web應用需要的各種JAR檔案,放置僅在這個應用中要求使用的jar檔案,如資料庫驅動jar檔案
/WEB-INF/src/原始碼目錄,按照包名結構放置各個java檔案。
/WEB-INF/database.properties:
資料庫配置檔案 漏洞檢測以及利用方法:通過找到web.xml檔案,推斷class檔案的路徑,最後直接class檔案,在通過反編譯class檔案,得到網站原始碼

漏洞成因↓

通常一些web應用我們會使用多個web伺服器搭配使用,解決其中的一個web伺服器的效能缺陷以及做均衡負載的優點和完成一些分層結構的安全策略等。在使用這種架構的時候,由於對靜態資源的目錄或檔案的對映配置不當,可能會引發一些的安全問題,導致web.xml等檔案能夠被讀取。漏洞檢測以及利用方法:通過找到web.xml檔案,推斷class檔案的路徑,最後直接class檔案,在通過反編譯class檔案,得到網站原始碼。一般情況,jsp引擎預設都是禁止訪問WEB-INF目錄的,Nginx 配合Tomcat做均衡負載或叢集等情況時,問題原因其實很簡單,Nginx不會去考慮配置其他型別引擎(Nginx不是jsp引擎)導致的安全問題而引入到自身的安全規範中來(這樣耦合性太高了),修改Nginx配置檔案禁止訪問WEB-INF目錄就好了: location ~ ^/WEB-INF/*
{ deny all; } 或者return 404; 或者其他!

解題思路:

①開啟題目,點選help,抓包

②抓包後把傳輸方式GET修改為POST後send得到得到報錯資訊


③根據題目提示。我們傳入filename值help.docx修改為WEB-INF/web.xml點選send後我們看到了com.Wm.ctf.FlagController關鍵的路徑

根據前文:


總解:由題得本題是利用漏洞檢測以及利用方法:通過找到web.xml檔案,推斷class檔案的路徑,最後直接class檔案,在通過反編譯class檔案,得到網站原始碼
payload↓
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

得到檔案,base64:ZmxhZ3tkODc4NTI4YS0wNTNlLTQwNTItOTQxMC0xMzNjNGNkZDBkODR9Cg==解密得到flag