文件上傳漏洞
不同的網站要不同的webshell。我們使用是php開發的網站。
一服務器白名單繞過
1.1MIME類型檢測繞過
利用burp來整。可以修改Content-Type來發送php,把類型改為image就ok。
不過都是可以在發送圖形時,摻一點php代碼就。
1.2?00截斷繞過
該類型漏洞比較老且條件苛刻,實戰當中幾乎不會出現,僅理解原理即可.
二服務器黑名單繞過
服務端?名單(Blacklist)是?種安全防護機制,它會明確禁?某些已知的危險元素,但這玩意太多了,所以相比于白名單較為容易繞過。
缺點 | 說明 | 案例 |
覆蓋不全 | 無法窮盡所有危險項 | 漏掉.phtml 導致繞過 |
靜態防御 | 難以應對新型攻擊變種 | 新型擴展名不斷出現 |
維護成本高 | 需持續更新黑名單 | 每個新漏洞都需添加規則 |
誤殺風險 | 可能組織合法請求 | 禁止 select 影響正常查詢 |
繞過手段多 | 攻擊者創新速度快 | 大小寫/編碼/截斷等多種方式 |
依賴實現細節 | 受服務器解析邏輯影響 | IS/APACHE/Nginx處理差異 |
2.1特殊可解析后綴
就是說除了代碼中的禁止個后綴名的,我們可以寫入許多 Web 服務器配置也會將以下擴展名識別為 PHP 腳本并執?其中的代碼:

- .phtml:傳統上?于 "PHP + HTML" 混合?件,許多默認配置中已啟?
- .phps:本應?于顯示 PHP 源代碼(Source),但如果配置不當,可能會被執???顯示
- php5:?于 PHP 5 特定腳本,在?些服務器上顯式?持
- .pht:較少?但可被解析的擴展
- 其他變種:.php4? ?.php3 (舊版 PHP 3)? ? .php7? ? ?.phar (PHP 歸檔?件)
2.2.htaccess?件繞過

2.2.1什么是.htaccess 呢?
- 網頁301重定向、?定義404錯誤??、
- 改變?件擴展名、允許/阻?特定的?戶或者?錄的訪問(我們就是著重與這個)
- 禁??錄列表、配置默認?檔等功能。
.htaccess?件?效的前提條件
- mod_rewrite模塊開啟
- AllowOverride All
由于沒有過濾 .htaccess ?件,可以重寫?件解析規則繞過,上傳?個.htaccess文件
<FilesMatch "a.jpg"> #名字非常重要,發送后下面的名字要相同
Sethandler application/x-httpd-php
</FilesMatch>
記住?filename要改為".htaccess "。.htaccess針對的是文件夾生效的。這樣子就會把a.jpg當成php來解析。
然后再把a.jpg發送進去,記住名字一定改為a.jpg
2.3.user.ini?件繞過
2.4??寫繞過
通過Upload-labs(Pass-06)查看源代碼,可以看到又禁了很多后綴名。但是沒有后綴名大小寫進進行統一。可以利?大小寫進?繞過。PhP,Php
2.5空格繞過


不過上傳成功了,但是我們無法訪問成功。原理:在Windows系統中會?動去除?件名最后的空格,靶場是linux環境。
因此在Windows系統中可以使用此方法繞過。
2.6點繞過

2.8::$DATA繞過
在Windows中,如果?件名 + ::$DATA 會把 ::$DATA 之后的數據當成?件流處理,不會檢測后綴名,且保持::$DATA之前的文件名。使?它的?的就是不檢查后綴名。
這個是圖片展現了防止::$DATA繞過。


2.9配合解析繞過
.php. .(兩個點之間有個空格)
.php. ::$DATA
2.10雙寫后綴名繞過
phpinfo.pphphp 替換后變成 phpinfo.php
三.服務端內容檢查繞過
3.1文件頭檢查
Upload-labs(?Pass-14)?根據下?描述,?需要使?圖片進行上傳,?然后使用文件包含漏洞進行利用獲?取Webshell?。查看源碼,?發現web后端代碼檢查了上傳?件的前兩個字節并且根據字節判定文件后綴,
只能上傳后綴為圖片的文件。從代碼看,都可以看出類似白名單。
繞過是與文件包含有關系的。特點就是無論后面是什么,都會把它當是php代碼來執行。
3.2突破getimagesize和exif_imagetype
3.3二次渲染繞過

- GIF:渲染前后的兩張 GIF,沒有發生變化的數據塊部分直接插? Webshell 即可
- JPG:需要使用腳本將數據插?到特定的數據塊,而且可能會不成功,所以需要多次嘗試
- PNG:沒有 GIF 那么簡單,需要將數據寫?到 PLTE 數據塊 或者 IDAT 數據塊






3.4條件競爭
代碼看出,當你上傳文件時,會判斷是否是圖片,如果是的話重新命名,如果不是的話,就會直接刪除代碼。也就是說,不管我們上傳是不是圖片,都會短暫的保留在服務器里面,只要我們在電腦判斷期間讓上傳的php代碼執行速度快過刪除速度就行了。
如果趕在被刪除之前執行并生成新的webshell而新的webshell是不會被刪除的。這個也叫做條件競爭上傳繞過。

#一旦執行就會生成新的webshell
<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["aa"])?>');?>
我們進行競爭分為兩步
1.利用burp的Intruder模塊來不斷地上傳php文件
記住要把插件關掉,否則會崩潰。
2訪問php?件
再重發get請求,多試一試幾次就成了。
從這里可以看出已經成了。再次訪問一下創建的文件,再用蟻劍連接
四.中間件解析漏洞
文件上傳漏洞在不同的系統?、架構以及行為中,?利用形式也是各不相同?。常用的web容器有IIS、?Tomcat?、Nginx?、Apache等?。以下主要以?較經典的解析漏洞做解釋。
IIS?5.x/6.0?解析漏洞
漏洞原理
- 當創建.asp的?件?錄的時候 ,在此?錄下的任意文件, 服務器都解析為asp文件 。例如如下: 漏洞?錄利?形式:www.xxx.com/xx.asp/xx.jpg。xx.jpg的內容可以為—段合法的asp腳本文件。
-
服務器默認不解析;以后的內容,?導致xx.asp;.jpg被解析成xx.asp
漏洞?件利?形式:www.xxx.com/xx.asp;.jpg?xx.jpg的內容可以為—段合法的asp腳本?件。
微軟認為這不是漏洞所以沒有補丁。
Nginx?解析漏洞
漏洞原理:Nginx?件解析漏洞主要發?在PHP環境與Nginx的配合使用中,核心問題是Nginx和PHP-FPM對請求URI的處理不—致導致的。
觸發條件:
- ??Nginx版本?<?0.8.41
-
配置了??fastcgi_split_path_info??且正則表達式不安全
Apache?解析漏洞
Apache?在1.x和2.x版本中存在解析漏洞?,例如如下地址格式
www.xxxx.com/post_shell.php.mage.edu
Apache從右到左開始判斷后綴?,若edu非可識別后綴,?再判斷mage,?直到找到可識別后綴才停止,?然后將?該可識別后綴進解析,?因此如上地址解析為訪問apache.php文件。
五.Upload_Auto_Fuzz
主要功能
windwos特性
- NTFS數據流(::$DATA)
- 保留設備名(CON, AUX)
- 長文件名截斷
內容欺騙
- 魔術字節注?(GIF/PNG/PDF頭)
- SVG+XSS組合攻擊
- 文件內容混淆(注釋插?、編碼變異)
安裝?式
該插件是python開發,因此需要先安裝jython。
這樣就好了。