当前位置: 首页 > news >正文

WEB漏洞挖掘篇(一) 基本概念、十大常見WEB漏洞

前言

    在數位化時代,軟體無所不在。從我們手機上的App到銀行的後台系統,程式碼構成了現代社會的基石。然而,只要有程式碼,就可能存在錯誤(Bug);而其中那些能對系統的機密性、完整性或可用性造成負面影響的錯誤,我們稱之為漏洞。

    漏洞挖掘正是發現這些漏洞的過程。它既是一門科學,需要系統化的方法、嚴謹的工具和邏輯思維;它也是一門藝術,需要創造力、直覺和「跳出框框」的思考能力。無論你是想成為一名專業的安全研究員、滲透測試員,還是僅僅想為打造更安全的網路環境出一份力,學習漏洞挖掘都是一項極具價值且回報豐厚的技能。

    本篇博文將作為我們漏洞挖掘技術篇的開篇文章,將系統化地講解漏洞挖掘的完整流程,並淺談你最有可能遇到的十大常見漏洞,也就是我們往後會分析的漏洞。



目录

前言

一、漏洞挖掘的系統化流程

1.1 目標確定與範圍界定

1.2  資訊收集

1.2.1  被動收集(不與目標直接互動)

1.2.1.1  搜尋引擎技術

1.2.1.2  WHOIS查詢

1.2.1.3  DNS資訊

1.2.1.4  歷史記錄

1.2.1.5  證書透明度日誌

1.2.2  主動收集(與目標直接互動)

1.2.2.1  子域名枚舉

1.2.2.2  端口掃描

1.2.2.3  技術指紋識別

1.3  偵察與映射

1.3.1  目錄與文件暴力破解

1.3.2  參數發現

1.3.3  網站爬蟲

1.3.4  API分析

1.4  漏洞發現

1.4.1  自動化掃描

1.4.1.1  工具

1.4.2  手動測試

1.4.2.1  方法

1.4.2.2  核心工具

1.5  分析與漏洞驗證

1.5.1  去除誤報

1.5.2  證明漏洞影響

1.6  報告撰寫與負責任披露

1.6.1  撰寫報告 

1.6.2  負責任披露

二、十大常見Web漏洞深度剖析

2.1  存取控制破壞

2.2   加密機制失效

2.3  注入

2.4   不安全設計

2.5  安全設定缺陷

2.6  易受攻擊和過時的組件

2.7  身份驗證和授權破壞

2.8   軟體和數據完整性故障

2.9  安全日誌和監控失敗

2.10   伺服器端請求偽造

三、小結

附錄:推薦工具與學習資源


一、漏洞挖掘的系統化流程

        盲目地測試就像在黑暗中開槍,效率低下且容易迷失方向。專業的漏洞挖掘遵循一個結構化的流程,確保全面性並提高成功率。

  1.1 目標確定與範圍界定

在開始任何技術工作之前,首先要明確目標。

  • 目標是什麼? 你是想測試一個完整的企業級應用、一個手機App、一個網路設備還是一個特定的開源庫?

  • 範圍是什麼? 如果你參與的是Bug Bounty計劃,平台會明確規定哪些域名、子域名、IP地址屬於測試範圍,哪些是禁止測試的(例如第三方服務、員工帳戶等)。絕對不要測試超出授權範圍的目標!

  • 規則是什麼? 了解哪些測試方法是允許的(例如,是否允許DoS測試?是否允許暴力破解?)。遵守規則不僅是法律和道德要求,也能保護你自己。

  1.2  資訊收集

        這是整個流程中最關鍵、最耗時的階段。你的目標是盡可能多地收集關於目標的資訊,資訊越多,你的攻擊面就越廣。資訊收集分為被動和主動兩種。

    1.2.1  被動收集(不與目標直接互動)
        1.2.1.1  搜尋引擎技術

         使用site:inurl:filetype:等高級搜尋運算元尋找敏感文件、目錄列表、後台登入頁面等。

        1.2.1.2  WHOIS查詢

  了解域名註冊資訊、註冊商、註冊日期和管理員聯繫方式。

        1.2.1.3  DNS資訊

  使用dignslookup等工具查詢DNS記錄(A, AAAA, MX, TXT, CNAME等),發現子域名和相關服務。

        1.2.1.4  歷史記錄

  使用Wayback Machine(archive.org)查看網站歷史快照,或許能發現已下線但未被刪除的敏感頁面或文件。

        1.2.1.5  證書透明度日誌

      工具如crt.sh可以通過SSL證書發現甚至是被忽略的子域名。

    1.2.2  主動收集(與目標直接互動)
        1.2.2.1  子域名枚舉

   使用工具如Sublist3rAmasssubfinder等,結合字典進行暴力破解,盡可能地發現所有子域名。

        1.2.2.2  端口掃描

  使用Nmap對目標IP進行端口掃描,識別開放端口及其背後運行的服務(如Web伺服器、資料庫、SSH、FTP等)和版本資訊。

        1.2.2.3  技術指紋識別

  識別網站使用的技術堆疊,如前端框架(React, Angular)、後端語言(PHP, Java, Python)、Web伺服器(Apache, Nginx)、作業系統等。工具:Wappalyzer(瀏覽器外掛), WhatWeb

  1.3  偵察與映射

  在收集完基礎資訊後,需要對目標應用進行深入偵察,繪製出完整的「攻擊面地圖」。

    1.3.1  目錄與文件暴力破解

   使用DirBustergobusterffuf等工具,配合強大的字典,尋找隱藏的目錄、文件(如備份文件*.bak、設定文件config.php、Git倉庫/.git/)。

    1.3.2  參數發現

  識別所有接受用戶輸入的參數(URL參數、POST數據、HTTP頭部)。工具:Burp Suite的爬蟲功能、Arjun。

    1.3.3  網站爬蟲

  使用Burp Suite、OWASP ZAP或自訂腳本模擬用戶操作,遍歷網站的所有功能點,特別是表單、搜尋框、上傳點、API端點等。

    1.3.4  API分析

  現代應用大量依賴API(特別是RESTful API)。分析API文檔(如果有)、通過爬蟲發現API端點、檢查其授權機制和輸入驗證。

  1.4  漏洞發現

  這是核心的「挖掘」階段。根據前面繪製的地圖,對每個潛在的攻擊點進行測試。通常結合自動化工具和手動測試。

    1.4.1  自動化掃描

        使用工具進行初步篩選。它們速度快,能發現一些低懸果實,但誤報率高,無法發現複雜的邏輯漏洞。

        1.4.1.1  工具

  Burp Suite ScannerNessusNuclei

    1.4.2  手動測試

        這是體現研究員功力的地方。你需要根據漏洞類型,有針對性地構造Payload並觀察應用程式的回應。

        1.4.2.1  方法

        對每個輸入點嘗試插入各種特殊字元、Payload,並仔細分析回應的狀態碼、內容、時間延遲等。

        1.4.2.2  核心工具

        Burp Suite / OWASP ZAP。它們作為中間人代理,攔截、重放、修改所有HTTP/S請求,是手動測試的瑞士軍刀。

  1.5  分析與漏洞驗證

        自動化工具可能會提示「可能存在XX漏洞」,這需要你進行進一步分析以確認其真實性。

    1.5.1  去除誤報

        仔細分析伺服器的回應,判斷其是真正的漏洞特徵還是正常的業務邏輯。

    1.5.2  證明漏洞影響

        這是關鍵一步。你需要構造一個可重現的、能證明漏洞確實存在且具有危害性的PoC。

        例如,對於一個SQL注入,你的PoC應該能成功執行一條SQL命令(如' AND (SELECT sleep(5))-- - 導致延遲,或' UNION SELECT username, password FROM users-- - 來盜取資料)。

        一個好的PoC能讓開發人員清晰地理解問題所在。

  1.6  報告撰寫與負責任披露

  發現漏洞不是結束,如何溝通和處理它同樣重要。

    1.6.1  撰寫報告 
  • 撰寫清晰的報告: 一份好的漏洞報告應包括:

    • 標題: 簡明扼要。

    • 漏洞類型: SQLi, XSS等。

    • 影響等級: 通常分為Critical, High, Medium, Low, Informational。

    • 目標與版本: 受影響的URL/組件及其版本。

    • 詳細描述: 漏洞的成因。

    • 重現步驟: step-by-step指導如何重現漏洞,這是最重要的部分。

    • PoC: 附上截圖、視頻或可執行的代碼。

    • 修復建議: 提供建設性的修復方案。

    1.6.2  負責任披露

    私密地將報告提交給廠商或相關平台(如HackerOne, Bugcrowd),給予廠商合理的時間(通常是90天)進行修復,之後再選擇公開細節。切勿在未經同意的情況下公開漏洞細節!

二、十大常見Web漏洞深度剖析

  OWASP(開放Web應用程式安全計畫)發布的Top 10是世界上最權威的Web應用安全風險清單。我們以OWASP Top 10 2021為藍本進行介紹。

        2.1  存取控制破壞

  • 成因: 應用程式未能對用戶執行的操作實施有效的權限檢查,導致用戶可以執行其本不被允許的操作。

  • 危害: 越權存取其他用戶的資料、修改他人資訊、提升權限到管理員等。

  • 挖掘技巧:

    • 水平越權: 登錄後,修改URL中的用戶ID參數(如/user/profile?uid=123改為uid=124),看能否存取他人資料。

    • 垂直越權: 以普通用戶身分,嘗試訪問僅限管理員訪問的頁面(如/admin/delete-user.php)。

    • IDOR(不安全的直接物件引用) 是其中最常見的一類。

  • 案例: 將訂單詳情頁面的訂單ID從1001改為1002,看到了另一個用户的訂單資訊。

        2.2   加密機制失效

  • 成因: 未使用加密技術或使用不當(弱算法、弱金鑰、自定義加密、明文傳輸)。

  • 危害: 敏感數據(密碼、信用卡號、個人資訊)洩露。

  • 挖掘技巧:

    • 檢查傳輸是否使用HTTPS?是否有混合內容(HTTP載入HTTPS資源)?

    • 檢查密碼是否明文儲存或使用弱哈希(如MD5, SHA1)且未加鹽?

    • 檢查加密通訊的設定(如SSL/TLS版本、加密套件)是否安全?

  • 案例: 在網路抓包中,發現登錄請求中的密碼以明文形式傳輸。

        2.3  注入

  • 成因: 將不可信的使用者數據作為指令或查詢的一部分發送給直譯器(如SQL, OS, LDAP資料庫),欺騙直譯器執行非預期的命令。

  • 危害: 數據洩露、數據篡改、繞過認證、執行系統命令。

  • 挖掘技巧:

    • SQL注入(SQLi): 在任何輸入點嘗試插入單引號'、分號;等,觀察數據庫錯誤訊息或行為異常。使用UNIONsleep()SELECT等命令驗證。

    • 命令注入(Command Injection): 在輸入點(如ping功能)插入系統命令分隔符(;|&& + whoamiid等)。

    • 工具: sqlmap是檢測SQL注入的自動化神器。

  • 案例: 在搜尋框輸入' OR 1=1-- -,導致所有產品列表被顯示出來。

        2.4   不安全設計

  • 成因: 這是一個較新的類別,指在軟體設計和架構層面就存在的安全缺陷,無法通過簡單的「實現」或「配置」來修復。

  • 危害: 各種業務邏輯漏洞,如 flawed authentication, flawed recovery process。

  • 挖掘技巧: 需要深入理解業務流程,思考「設計是否可能被濫用?」。

    • 註冊時能否使用與他人相同的電話號碼/郵箱?

    • 優惠券能否被無限次使用?

    • 密碼重置流程是否能被繞過(如僅依賴知識問答)?

  • 案例: 電商網站的「推薦好友獲積分」功能,通過修改HTTP請求中的用戶ID參數,可以為任何用戶添加積分。

        2.5  安全設定缺陷

  • 成因: 任何組件(雲服務、Web伺服器、應用框架、庫文件)的不安全配置。

  • 危害: 未授權的存取、資訊洩露、功能被濫用。

  • 挖掘技巧:

    • 檢查是否存在預設帳戶/密碼?

    • 檢查是否開啟了不必要的服務和端口?

    • 檢查目錄列表是否被開啟?

    • 檢查錯誤訊息是否洩露了堆疊追踪等敏感資訊?

    • 檢查HTTP安全頭部(如X-Content-Type-OptionsHSTS)是否配置正確?

  • 案例: 訪問https://example.com/.git/,發現整個Git倉庫被下載,源碼和配置信息洩露。

        2.6  易受攻擊和過時的組件

  • 成因: 使用已知含有漏洞的第三方庫、框架和軟體組件。

  • 危害: 攻擊者可以利用該組件的公開漏洞輕鬆攻擊你的應用。

  • 挖掘技巧:

    • 使用掃描工具識別組件及其版本。

    • 工具: OWASP Dependency-Checkretire.js (for JavaScript), 各種SCA(軟體組成分析)工具。

    • 比對國家漏洞資料庫(NVD)、廠商安全公告等,確認是否存在已知漏洞。

  • 案例: 網站使用存在遠程代碼執行漏洞的舊版Apache Struts框架(如Equifax事件)。

        2.7  身份驗證和授權破壞

  • 成因: 與身份驗證和會話管理相關的功能實現不當。

  • 危害: 攻擊者可以破譯密碼、會話令牌或利用實施缺陷暫時性或永久性地冒充其他用戶身份。

  • 挖掘技巧:

    • 檢查登錄功能能否暴力破解?是否缺乏帳戶鎖定或CAPTCHA機制?

    • 檢查登錄後的回應是否暴露了敏感資訊(如Set-Cookie: user=admin)?

    • 檢查會話令牌(Session Token)是否隨機?登出後會話是否依然有效?

    • 檢查密碼策略是否足夠強健(如允許弱密碼「123456」)?

  • 案例: 重置密碼的令牌極其簡單(如/reset-password?token=1234),且不會過期,導致可以被暴力破解。

        2.8   軟體和數據完整性故障

  • 成因: 使用來自不可信來源的軟體或數據,或未能驗證其完整性。

  • 危害: 未經授權的代碼執行、供應鏈攻擊。

  • 挖掘技巧: 檢查應用是否從不可信的源(如HTTP站點)加載資源或庫?更新機制是否未使用安全通訊(如簽名)?

  • 案例: 應用程式從一個未受保護的HTTP伺服器自動更新,攻擊者可以中間人劫持更新流程,分發惡意版本。

        2.9  安全日誌和監控失敗

  • 成因: 未能記錄、監控和回應安全事件。

  • 危害: 攻擊無法被檢測、響應和事後調查。

  • 挖掘技巧: 此漏洞較難從外部發現,通常需要廠商自檢。但可以嘗試攻擊後觀察是否有告警或被封IP。

  • 案例: 網站沒有對登錄失敗進行日誌記錄,導致無法發現持續的暴力破解攻擊。

        2.10   伺服器端請求偽造

  • 成因: 應用程式未對用戶提供的URL進行驗證和過濾,導致攻擊者可以誘使伺服器向任意域發起請求。

  • 危害: 掃描內網、存取內部服務、繞過防火牆。

  • 挖掘技巧: 尋找任何能讓你提供URL的功能:Webhook設定、文件導入、轉碼功能、圖像加載等。嘗試讓伺服器訪問http://localhosthttp://169.254.169.254(雲元數據服務)等內部地址。

  • 案例: 在「通過URL導入個人頭像」功能中,輸入file:///etc/passwd,導致伺服器回傳了系統敏感文件內容。

三、小結

        漏洞挖掘是一段充滿挑戰和樂趣的旅程。它要求你保持持續學習的熱情,因為技術和漏洞形態總在不斷演化。記住以下幾點:

  1. 基礎為王: 紮實的網路協議(HTTP/S)、作業系統、程式語言基礎是你看清問題本質的關鍵。

  2. 實踐出真知: 搭建自己的靶場環境(如DVWAWebGoatHackTheBox)進行練習。

  3. 保持好奇心與耐心: 一個不起眼的參數或許就是通往金庫的大門。一次失敗的測試是常態,成功需要堅持。

  4. 遵守道德與法律: 永遠在授權範圍內進行測試。你的技能應該用來建設,而非破壞。

        希望這篇文章能讓你對漏洞挖掘有初步的認識。往後漏洞挖掘篇的內容將一一詳解上述的漏洞,大家敬請期待了。


附錄:推薦工具與學習資源

  • 綜合平台: HackTheBox, TryHackMe, PortSwigger Web Security Academy (免費且極其優秀!)

  • 工具集:

    • 代理/套件: Burp Suite Professional/Community, OWASP ZAP

    • 掃描與枚舉: Nmap, Nessus, Nuclei

    • 子域名發現: Sublist3r, Amass, subfinder

    • 目錄/文件暴力破解: Gobuster, DirBuster, ffuf

    • 注入檢測: sqlmap

    • 社群與計劃: HackerOne, Bugcrowd

  • 必讀文檔: OWASP Top 10, OWASP Testing Guide, OWASP Cheat Sheet Series

http://www.dtcms.com/a/359390.html

相关文章:

  • 自底向上了解CPU的运算
  • Google 的 Agent2Agent 协议 (A2A):带示例的指南
  • 「日拱一码」068 机器学习——迁移学习TL
  • SIEPIC工具和PDK安装
  • C#语言入门详解(17)字段、属性、索引器、常量
  • 云计算与服务器
  • 【C#】在一个任意旋转的矩形(由四个顶点定义)内绘制一个内切椭圆
  • 在AlmaLinux或CentOS 8上编译安装ZLMediaKit流媒体服务器
  • Mysql中事务隔离级别有哪些?
  • 【行业洞察】多智能体的风口浪尖--微软MagenticOne/UI
  • android中常见布局及其约束
  • 鸿蒙创新赛活动——Mac提交压缩失败后续
  • [linux仓库]解剖Linux内核:文件描述符(fd)的‘前世今生’与内核数据结构探秘
  • 如何绕过 disable-devtool.js 打开控制台
  • mac Monterey 安装erlang23
  • 【高级】系统架构师 | 信息系统基础
  • Wi-Fi技术——MAC特性
  • Java提供高效后端支撑,Vue呈现直观交互界面,共同打造的MES管理系统,含完整可运行源码,实现生产计划、执行、追溯一站式管理,提升制造执行效率
  • 基于EHO与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 现代C++性能陷阱:std::function的成本、异常处理的真实开销
  • HarmonyOS 应用开发:基于API 12+的现代化实践
  • 第4章从一条记录说起-InnoDB记录结构
  • openssl使用SM2进行数据加密和数据解密
  • Linux中卸载和安装Nginx
  • 第24章学习笔记|用正则表达式解析文本文件(PowerShell 实战)
  • Git版本管理工具零基础学习
  • ThinkPHP8学习篇(五):数据库(一)
  • windows docker 中的mysql 无法被外部浏览器访问如何解决
  • windows环境下安装dify到本地
  • 线程池、锁策略