0x01知識點:
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; 或者其他!
0x02:題目
打開題目,點擊help,抓包修改為POST
得到報錯信息
根據題目提示。我們傳入filename值為
WEB-INF/web.xml
看到
com.Wm.ctf.FlagController
關鍵路徑
根據前文:
漏洞檢測以及利用方法:通過找到web.xml文件,推斷class文件的路徑,最后直接class文件,在通過反編譯class文件,得到網站源碼
我們結合tomcat的項目存放路徑經驗試試下載FlagController.class試試
payload:
filename=WEB-INF/classes/com/wm/ctf/FlagController.class
得到文件,base64解密得到flag