文件上傳漏洞及其繞過


1.前端JS驗證

基於本地驗證文件是否符合要求:直接將JavaScript禁用。或者burp抓包后修改后綴,將php文件后綴現先改為jpg,burp抓包后后綴改回php。

2.MIME 類型驗證

burp抓包將Content-type類型修改為image/jpeg,image/png等

3.黑名單驗證

①尋找沒有過濾的類型:

phtml php3 php4 php5 PHP phtm

例如 phtml php3 php4 php5 PHP phtm這些后綴名首先得讓服務器支持這些解析為php腳本運行,httpd.conf配置文件中可以查看設置。

從圖中可以看到,我安裝的Apache默認解析php和phtm的,如果黑名單並沒有過濾phtm,就可以上傳phtm的木馬。

②大小寫繞過

例如phP,黑名單上不存在的話就可以繞過,過濾嚴格的話一般會用個strtolower()把后綴全變為小寫,那個時候就不行了。

4.檢查文件內容

①getimagesize() 函數用於獲取圖像信息:

構造圖片馬,或者用winhex在圖片后邊添加上木馬的內容,一個原理。

②檢驗關鍵字

例如<?php

<script language="php">eval($_POST['cmd']);</script>  

③檢驗文件大小

沒啥用,一般上傳的木馬超不過那個大小。

5。00截斷

計算機處理文件遇到0x00(代表NULL)則會自動截斷后邊的內容,而較低版本的php就會因為這個出現漏洞。
一般分為兩種那個情況:

①可以自己構造上傳路徑。

burp抓包在上傳路徑后邊加上muma.php%00,然后將%00進行url編碼(crtl+shift+u),(瀏覽器還要進行url解碼,所以先編碼后解碼,保證原來的字符不變)上傳。

②不知道上傳路徑:

文件名改為muma.php+.jpg,這個+ 其實就是個標識作用,改別的字符也行。burp抓包后,hex打開,將+的數值改為00,實際上代表就是0x00.
上傳。不過00截斷很舊了已經,現在基本找不到這種漏洞了。

6. .htaccess上傳

Apache才有效的一個配置文件,直接配置Apache達到為所欲為的目的,默認開啟。如果不開啟,找到httpd.conf配置文件:
Options FollowSymLinks

AllowOverride None
改為:
Options FollowSymLinks

AllowOverride All
即完成了開啟。

在有的時候黑名單過濾不嚴格,就會漏掉過濾.htaccess文件 。

這段代碼就是讓以ma.jpg的文件以php文件執行。上傳圖片后,不管圖片名字有沒有被自動重命名,訪問的圖片的地址看最后會有服務器上圖片的名字,然后用.htaccess進行配置即可。
也可以直接Addtype application/x-httpd-php .jpg.所有的jpg都會以php腳本運行。

7.白名單檢測擴展名

最難繞過的方法。繞過方法請參考其他方法。

8.雙寫繞過

如果對文件的內容例如<?php用str_replace()使其變為空,就可以構造特殊的內容例如<?p<?phphp,過濾后就變為了<?php,達到了繞過的目的。

不過我覺得沒啥用,他要是循環過濾那不就完了,寫代碼的時候肯定不會只給你過濾一次啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM