引言
分享一些文件上傳繞過的思路,下文內(nèi)容多包含實(shí)戰(zhàn)圖片,所以打碼會非常嚴(yán)重,可多看文字表達(dá);本文僅用于交流學(xué)習(xí), 由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負(fù)責(zé),文章作者不為此承擔(dān)任何責(zé)任。
案例一
一次項(xiàng)目滲透時(shí),通過往 png 后綴隨便加個(gè)字符可知該上傳點(diǎn)為白名單上傳,正常情況下無法繞過
通過觀察接口信息,發(fā)現(xiàn)接口名字為 UploadImg,猜測該接口用于圖片上傳,按照開發(fā)的習(xí)慣,保不準(zhǔn)會存在 temp、test,這類的接口,隨后通過 fuzz 找到存在的上傳接口(file),但此時(shí)的接口(file)上傳文件仍舊存在限制,需要繞過。
由于黑名單限制不夠嚴(yán)謹(jǐn),經(jīng)過多個(gè)偽后綴嘗試,發(fā)現(xiàn).cer 后綴可繞過限制并被解析
然后就 getshell 進(jìn)內(nèi)網(wǎng),后面的操作就不多說了。
很多師傅看到白名單上傳就會認(rèn)為這個(gè)上傳點(diǎn)足夠安全,無法繞過,但其實(shí)不然,在存在多個(gè)上傳接口的情況下,或許會存在沒做限制,或者限制不嚴(yán)格的上傳點(diǎn)也不一定,關(guān)鍵的是我們要如何發(fā)現(xiàn)這些接口,在此類接口存在限制時(shí),如何去進(jìn)行繞過,下面再舉一個(gè)和接口繞過相關(guān)的例子。
【一>所有資源獲取<一】
1、200 份很多已經(jīng)買不到的絕版電子書
2、30G 安全大廠內(nèi)部的視頻資料
3、100 份 src 文檔
4、常見安全面試題
5、ctf 大賽經(jīng)典題目解析
6、全套工具包
7、應(yīng)急響應(yīng)筆記
8、網(wǎng)絡(luò)安全學(xué)習(xí)路線
案例二
upload_2018.php 接口白名單上傳,在正常情況下,改變后綴會導(dǎo)致上傳失敗,如下
再進(jìn)一步測試時(shí)發(fā)現(xiàn)存在多個(gè)上傳接口,刪除_2018 使用 upload 接口進(jìn)行文件上傳,可導(dǎo)致任意文件上傳
進(jìn)一步傳 shell 時(shí)發(fā)現(xiàn)存在 waf(某訊云),需進(jìn)一步繞過。
通過尋找域名真實(shí) IP,使用真實(shí) IP 進(jìn)行文件上傳,繞過 waf 限制,為防止有心人,這里直接把 IP 給打碼蓋住了,以防萬一。
很多時(shí)候有一些開發(fā)為了便捷性,在部署上傳接口時(shí)限制不夠嚴(yán)謹(jǐn)或壓根沒做限制,這導(dǎo)致一旦被繞過限制傳 shell,都會導(dǎo)致非常嚴(yán)重的后果,當(dāng)然,我們可以找一些 temp、test 這類上傳接口,因?yàn)榇祟惤涌诙鄶?shù)是開發(fā)過程中用作測試的,這種接口幾乎都是無限上傳文件類型的,同樣的我們也可以找一些 api 文檔進(jìn)行上傳接口的發(fā)現(xiàn),這或許會有驚喜也說不定
案例三
這是一個(gè)把圖片轉(zhuǎn) base64 的文件上傳類型,具體繞過如下:
通過抓包發(fā)現(xiàn)圖片是以 base64 進(jìn)行上傳的,觀察了下數(shù)據(jù)包,發(fā)現(xiàn)可通過更改 upload_0 字段內(nèi)容上傳任意文件
訪問 HTML 頁面,成功被解析,可進(jìn)一步上傳 shell 獲取權(quán)限。
一句話 shell 上傳后發(fā)現(xiàn)無法執(zhí)行命令,之后通過上傳 PHPinfo 發(fā)現(xiàn)其存在 disable_functions,利用某斯拉繞過限制,getshell
#案例四
一個(gè)關(guān)于 nginx 解析漏洞的利用,這個(gè)漏洞是很久之前挖到的,這種漏洞現(xiàn)在應(yīng)該不會存在了,單單是 waf 都能欄掉,這個(gè)就作為思考開拓說一下:
一次外網(wǎng)打點(diǎn)時(shí)發(fā)現(xiàn)了目標(biāo)的一個(gè)核心系統(tǒng),通過踩點(diǎn)發(fā)現(xiàn)了某上傳功能,但上傳接口存在白名單限制,且無其它的上傳接口,由于這個(gè)站的 shell 比較重要,必須拿到,之后通過漏洞挖掘,發(fā)現(xiàn)目標(biāo)存在 nginx 解析漏洞,結(jié)合圖片上傳點(diǎn)成功獲取到了內(nèi)網(wǎng)據(jù)點(diǎn)。
其它場景 &總結(jié)
有些時(shí)候文件上傳成功后端沒有返回路徑,只回顯了一個(gè) id 號,這時(shí)候如果目標(biāo)存在注入的話,我們嘗試可以用 sqlmap 的--search 參數(shù)或者 SQLshell 對返回的 ID 號進(jìn)行搜索,這樣說不定就能找到 shell 地址了,之前在關(guān)于Swagger-UI下的滲透實(shí)戰(zhàn) 23也說過,感興趣的可以去看看;也有文件上傳成功卻只回顯一個(gè)文件名的,在前不久的一次攻防就遇到這種情況,后來是用了 fuzz 找到了完整的 shell 路徑,另外在某些時(shí)候,上傳文件可以跨目錄,那么我們可以通過../進(jìn)行跨目錄上傳,運(yùn)氣好的話,或許會在幾個(gè)../后把 shell 傳到域名的根目錄下,如果當(dāng)前上傳文件夾無執(zhí)行權(quán)限,那么跨目錄上傳 shell 也是個(gè)不錯(cuò)的思路;另外,如果上傳目錄可控,可上傳文件到任意目錄的話,在 linux 場景我們可上傳一個(gè) ssh 秘鑰用于遠(yuǎn)程登錄,極端一點(diǎn)的話,可考慮上傳 passwd、shadow 文件覆蓋系統(tǒng)用戶,但前提是權(quán)限要足夠大。
如果不能跨目錄,站點(diǎn)又沒有注入的話,那么我們可以嘗試尋找網(wǎng)站日志文件,例如泛微 E-COLOGY 日志的日志,像這種日志文件是有規(guī)律可循的,可以用 burp 進(jìn)行日志爆破,或許在日志文件中能找到 shell 路徑也說不定。
再者就是文件包含和文件讀取了,文件讀取的話可以通過讀取日志和配置文件來發(fā)現(xiàn) shell 地址,但是成功率太低了,至于文件包含,除了靶場和 ctf,實(shí)戰(zhàn)還沒碰過。
還有一個(gè)關(guān)于 burp 的使用技巧,這是真實(shí)遇到的,上傳 shell 后沒有回顯路徑,但是通過 http history 搜索 shell 的名字發(fā)現(xiàn)了完整的 shell 路徑,因?yàn)閭魃先サ奈募?,如圖片這類的總歸是顯示出來的,這時(shí)候可以先在 web 應(yīng)用到處點(diǎn)點(diǎn),多加載一些數(shù)據(jù)包,然后再到 http history 搜索 shell 的名字,或許會有驚喜也說不定。
某些時(shí)候上傳黑名單不嚴(yán)謹(jǐn),那么我們可用偽后綴進(jìn)行繞過,其它多的就不說了,大概思路就這樣,當(dāng)繞過限制拿到 shell 時(shí),總會給我?guī)順啡ぃ蛟S這就是我喜歡滲透的原因。文章來源:http://www.zghlxwxcb.cn/news/detail-420484.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-420484.html
到了這里,關(guān)于【網(wǎng)絡(luò)安全】文件上傳繞過思路的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!