記一次歷史業務安全測試
- 2019 年 12 月 12 日
- 筆記
來源:http://www.51testing.com
最近在對公司歷史遺留的老業務進行安全測試,簡單記錄一下測試的過程。
子域名是http://upload.xxxx.com/

主頁是一個phpinfo的頁面,首先對網站進行文件掃描。
wfuzz -w common.txt -z list,-.php-.html –hw 76 http://upload.xxxx.com/FUZZFUZ2Z
******************************************************** * Wfuzz 2.3.4 – The Web Fuzzer * ******************************************************** Target: http://upload.xxxx.com/FUZZFUZ2Z Total requests: 13839 ================================================================== ID Response Lines Word Chars Payload ================================================================== 003313: C=200 5 L 11 W 203 Ch "crossdomain.xml – " 006047: C=200 562 L 2593 W 46219 Ch "index – .php" 006058: C=200 562 L 2593 W 46219 Ch "index.php – " 008776: C=301 0 L 0 W 0 Ch "php – " 012639: C=200 86 L 179 W 2315 Ch "uploadfile – .html" Total time: 131.0165 Processed Requests: 13839 Filtered Requests: 13834 Requests/sec.: 105.6279 |
---|
掃描結果中index.php為首頁的phpinfo頁面,另外掃描發現了php目錄和uploadfile.html文件。
訪問php目錄返回401錯誤:

pic2
http://upload.xxxx.com/uploadfile.html 為空白頁

pic3
查看源代碼有所發現:

pic4
這裡猜測phpPath為php目錄,結果證實了我的猜想:

pic5
構造參數:

pic6
上次文件,查看返回:

pic7
圖片成功上傳,另外發現了一個命名疑似圖片裁剪的文件phpcutPhoto.php
先測試了文件上傳漏洞,發現服務器進行了圖片驗證,然後強制改後綴,此路不通
訪問http://upload.xxxx.com/php/phpcutPhoto.php 發現文件不存在,這裡走了些彎路
後面測試發現地址應該是http://upload.xxxx.com/php/cutPhoto.php
前面uploadHead.php中phpPath參數值為php,所以後面文件名誤加了php,這裡應該是以前的代碼有bug

pic8
訪問後提示打開失敗,明顯是缺少了圖片地址的參數,這裡可以使用WAScan、Arjun等工具進行參數爆破。我這裡就簡單用burpsuite fuzz爆破一下:

pic9
參數名可以考慮使用https://github.com/s0md3v/Arjun/blob/master/db/params.txt 里的參數名。
這裡我自己簡單構造了一些常見的,沒包括首字母大寫的情況:
img image images imgpath img_path file filename path file_path filepath |
---|
參數Fuzz爆破結果:

pic10
返回中可以看到,雖然報了錯誤,但是圖片剪切後的文件成功生成了:

pic11
訪問同服務器的圖片域名,發現文件存在:

pic12
現在我們可以來測試這個接口的本地文件讀取和ssrf漏洞
先測試本地文件包含:

pic13
path=/etc/passwd,返回/etc/passwd.jpg.jpg打開失敗
把path改成一個不存在的文件:

pic14
path=/etc/test,返回/etc/test打開失敗
當path為一個存在目錄的情況:

pic15
測試發現讀取一個存在的非圖片後綴文件或目錄時,會自動把path加上.jpg.jpg
這樣的話我們只能通過這個接口探測服務器的文件或目錄,但無法進行正常的文件讀取的操作
另外我測試了ssrf,發現無法直接訪問外部鏈接

pic16
突然發現忘記了php偽協議的操作

pic17
php://input沒戲,另外嘗試了其它協議配合截斷讀取的方法,也都以失敗告終。
但當我測試到path=php://filter/read=string.tolower/resource=http://m3rryz.com/ 返回有了數據

pic18
並且我的blog獲取到了服務器的請求:

pic19
可以看到服務器請求了http://myblog.com/.jpg.jpg 並返回了404
那麼當我在blog上,構造一個x.jpg.jpg的文件,內容為/etc/passwd
然後讓path=php://filter/read=string.tolower/resource=http://m3rryz.com/x
是否就可以繞過之前的限制,進行本地文件讀取呢?
然而現實很殘酷:

pic20
這裡path必須為真實圖片,否則無法進行cut操作。:(
不過過程還是有點意思的,對文件讀取和ssrf漏洞了解更深了一些。
星雲測試
http://www.teststars.cc
奇林軟件
http://www.kylinpet.com
聯合通測
http://www.quicktesting.net