![]() ![]() |
黑客攻防技術寶典 ![]()
《黑客攻防技術寶典.Web實戰(zhàn)篇(第2版)》是探索和研究Web 應用程序安全漏洞的實踐指南。作者利用大量的實際案例和示例代碼,詳細介紹了各類Web 應用程序的弱點,并深入闡述了如何針對Web 應用程序進行具體的滲透測試。本書從介紹當前Web 應用程序安全概況開始,重點討論滲透測試時使用的詳細步驟和技巧,最后總結書中涵蓋的主題。每章后還附有習題,便于讀者鞏固所學內容。
第2 版新增了Web 應用程序安全領域近年來的發(fā)展變化新情況,并以嘗試訪問的鏈接形式提供了幾百個互動式“漏洞實驗室”,便于讀者迅速掌握各種攻防知識與技能。 本書適合各層次計算機安全人士和Web 開發(fā)與管理領域的技術人員閱讀。
安全技術寶典全新升級 深入剖析,實戰(zhàn)演練,使你如飲醍醐
Dafydd Stuttard,世界知名安全顧問、作家、軟件開發(fā)人士。牛津大學博士,MDSec公司聯合創(chuàng)始人,尤其擅長Web應用程序和編譯軟件的滲透測試。Dafydd以網名PortSwigger蜚聲安全界,是眾所周知的Web應用程序集成攻擊平臺Burp Suite的開發(fā)者。
Marcus Pinto,資深滲透測試專家,劍橋大學碩士,MDSec公司聯合創(chuàng)始人。Marcus為全球金融、政府、電信、博彩、零售等行業(yè)頂尖組織和機構提供Web應用程序滲透測試和安全防御的咨詢與培訓。
第1章 Web應用程序安全與風險
1.1 Web應用程序的發(fā)展歷程 1.1.1 Web應用程序的常見功能 1.1.2 Web應用程序的優(yōu)點 1.2 Web應用程序安全 1.2.1 “本站點是安全的” 1.2.2 核心安全問題:用戶可提交任意輸入 1.2.3 關鍵問題因素 1.2.4 新的安全邊界 1.2.5 Web應用程序安全的未來 1.3 小結 第2章 核心防御機制 2.1 處理用戶訪問 2.1.1 身份驗證 2.1.2 會話管理 2.1.3 訪問控制 2.2 處理用戶輸入 2.2.1 輸入的多樣性 2.2.2 輸入處理方法 2.2.3 邊界確認 2.2.4 多步確認與規(guī)范化 2.3 處理攻擊者 2.3.1 處理錯誤 2.3.2 維護審計日志 2.3.3 向管理員發(fā)出警報 2.3.4 應對攻擊 2.4 管理應用程序 2.5 小結 2.6 問題 第3章 Web應用程序技術 3.1 HTTP 3.1.1 HTTP請求 3.1.2 HTTP響應 3.1.3 HTTP方法 3.1.4 URL 3.1.5 REST 3.1.6 HTTP消息頭 3.1.7 cookie 3.1.8 狀態(tài)碼 3.1.9 HTTPS 3.1.10 HTTP代理 3.1.11 HTTP身份驗證 3.2 Web功能 3.2.1 服務器端功能 3.2.2 客戶端功能 3.2.3 狀態(tài)與會話 3.3 編碼方案 3.3.1 URL編碼 3.3.2 Unicode編碼 3.3.3 HTML編碼 3.3.4 Base64編碼 3.3.5 十六進制編碼 3.3.6 遠程和序列化框架 3.4 下一步 3.5 問題 第4章 解析應用程序 4.1 枚舉內容與功能 4.1.1 Web抓取 4.1.2 用戶指定的抓取 4.1.3 發(fā)現隱藏的內容 4.1.4 應用程序頁面與功能路徑 4.1.5 發(fā)現隱藏的參數 4.2 分析應用程序 4.2.1 確定用戶輸入入口點 4.2.2 確定服務器端技術 4.2.3 確定服務器端功能 4.2.4 解析受攻擊面 4.2.5 解析Extreme Internet Shopping應用程序 4.3 小結 4.4 問題 第5章 避開客戶端控件 5.1 通過客戶端傳送數據 5.1.1 隱藏表單字段 5.1.2 HTTP cookie 5.1.3 URL參數 5.1.4 Referer消息頭 5.1.5 模糊數據 5.1.6 ASP.NET ViewState 5.2 收集用戶數據:HTML表單 5.2.1 長度限制 5.2.2 基于腳本的確認 5.2.3 禁用的元素 5.3 收集用戶數據:瀏覽器擴展 5.3.1 常見的瀏覽器擴展技術 5.3.2 攻擊瀏覽器擴展的方法 5.3.3 攔截瀏覽器擴展的流量 5.3.4 反編譯瀏覽器擴展 5.3.5 附加調試器 5.3.6 本地客戶端組件 5.4 安全處理客戶端數據 5.4.1 通過客戶端傳送數據 5.4.2 確認客戶端生成的數據 5.4.3 日志與警報 5.5 小結 5.6 問題 第6章 攻擊驗證機制 6.1 驗證技術 6.2 驗證機制設計缺陷 6.2.1 密碼保密性不強 6.2.2 蠻力攻擊登錄 6.2.3 詳細的失敗消息 6.2.4 證書傳輸易受攻擊 6.2.5 密碼修改功能 6.2.6 忘記密碼功能 6.2.7 “記住我”功能 6.2.8 用戶偽裝功能 6.2.9 證書確認不完善 6.2.10 非唯一性用戶名 6.2.11 可預測的用戶名 6.2.12 可預測的初始密碼 6.2.13 證書分配不安全 6.3 驗證機制執(zhí)行缺陷 6.3.1 故障開放登錄機制 6.3.2 多階段登錄機制中的缺陷 6.3.3 不安全的證書存儲 6.4 保障驗證機制的安全 6.4.1 使用可靠的證書 6.4.2 安全處理證書 6.4.3 正確確認證書 6.4.4 防止信息泄露 6.4.5 防止蠻力攻擊 6.4.6 防止濫用密碼修改功能 6.4.7 防止濫用賬戶恢復功能 6.4.8 日志、監(jiān)控與通知 6.5 小結 6.6 問題 第7章 攻擊會話管理 7.1 狀態(tài)要求 7.2 會話令牌生成過程中的薄弱環(huán)節(jié) 7.2.1 令牌有一定含義 7.2.2 令牌可預測 7.2.3 加密令牌 7.3 會話令牌處理中的薄弱環(huán)節(jié) 7.3.1 在網絡上泄露令牌 7.3.2 在日志中泄露令牌 7.3.3 令牌-會話映射易受攻擊 7.3.4 會話終止易受攻擊 7.3.5 客戶端暴露在令牌劫持風險之中 7.3.6 寬泛的cookie范圍 7.4 保障會話管理的安全 7.4.1 生成強大的令牌 7.4.2 在整個生命周期保障令牌的安全 7.4.3 日志、監(jiān)控與警報 7.5 小結 7.6 問題 第8章 攻擊訪問控制 8.1 常見漏洞 8.1.1 完全不受保護的功能 8.1.2 基于標識符的功能 8.1.3 多階段功能 8.1.4 靜態(tài)文件 8.1.5 平臺配置錯誤 8.1.6 訪問控制方法不安全 8.2 攻擊訪問控制 8.2.1 使用不同用戶賬戶進行測試 8.2.2 測試多階段過程 8.2.3 通過有限訪問權限進行測試 8.2.4 測試“直接訪問方法” 8.2.5 測試對靜態(tài)資源的控制 8.2.6 測試對HTTP方法實施的限制 8.3 保障訪問控制的安全 8.4 小結 8.5 問題 第9章 攻擊數據存儲區(qū) 9.1 注入解釋型語言 9.2 注入SQL 9.2.1 利用一個基本的漏洞 9.2.2 注入不同的語句類型 9.2.3 查明SQL注入漏洞 9.2.4 “指紋”識別數據庫 9.2.5 UNION操作符 9.2.6 提取有用的數據 9.2.7 使用UNION提取數據 9.2.8 避開過濾 9.2.9 二階SQL注入 9.2.10 高級利用 9.2.11 SQL注入之外:擴大數據庫攻擊范圍 9.2.12 使用SQL注入工具 9.2.13 SQL語法與錯誤參考 9.2.14 防止SQL注入 9.3 注入NoSQL 9.4 注入XPath 9.4.1 破壞應用程序邏輯 9.4.2 謹慎XPath注入 9.4.3 盲目XPath注入 9.4.4 查找XPath注入漏洞 9.4.5 防止XPath注入 9.5 注入LDAP 9.5.1 利用LDAP注入 9.5.2 查找LDAP注入漏洞 9.5.3 防止LDAP注入 9.6 小結 9.7 問題 第10章 測試后端組件 10.1 注入操作系統(tǒng)命令 10.1.1 例1:通過Perl注入 10.1.2 例2:通過ASP注入 10.1.3 通過動態(tài)執(zhí)行注入 10.1.4 查找OS命令注入漏洞 10.1.5 查找動態(tài)執(zhí)行漏洞 10.1.6 防止OS命令注入 10.1.7 防止腳本注入漏洞 10.2 操作文件路徑 10.2.1 路徑遍歷漏洞 10.2.2 文件包含漏洞 10.3 注入XML解釋器 10.3.1 注入XML外部實體 10.3.2 注入SOAP 10.3.3 查找并利用SOAP注入 10.3.4 防止SOAP注入 10.4 注入后端HTTP請求 10.4.1 服務器端HTTP重定向 10.4.2 HTTP參數注入 10.5 注入電子郵件 10.5.1 操縱電子郵件標頭 10.5.2 SMTP命令注入 10.5.3 查找SMTP注入漏洞 10.5.4 防止SMTP注入 10.6 小結 10.7 問題 第11章 攻擊應用程序邏輯 11.1 邏輯缺陷的本質 11.2 現實中的邏輯缺陷 11.2.1 例1:征求提示 11.2.2 例2:欺騙密碼修改功能 11.2.3 例3:直接結算 11.2.4 例4:修改保險單 11.2.5 例5:入侵銀行 11.2.6 例6:規(guī)避交易限制 11.2.7 例7:獲得大幅折扣 11.2.8 例8:避免轉義 11.2.9 例9:避開輸入確認 11.2.10 例10:濫用搜索功能 11.2.11 例11:利用調試消息 11.2.12 例12:與登錄機制競賽 11.3 避免邏輯缺陷 11.4 小結 11.5 問題 第12章 攻擊其他用戶 12.1 XSS的分類 12.1.1 反射型XSS漏洞 12.1.2 保存型XSS漏洞 12.1.3 基于DOM的XSS漏洞 12.2 進行中的XSS攻擊 12.2.1 真實XSS攻擊 12.2.2 XSS攻擊有效載荷 12.2.3 XSS攻擊的傳送機制 12.3 查找并利用XSS漏洞 12.3.1 查找并利用反射型XSS漏洞 12.3.2 查找并利用保存型XSS漏洞 12.3.3 查找并利用基于DOM的XSS漏洞 12.4 防止XSS攻擊 12.4.1 防止反射型與保存型XSS漏洞 12.4.2 防止基于DOM的XSS漏洞 12.5 小結 12.6 問題 第13章 攻擊用戶:其他技巧 13.1 誘使用戶執(zhí)行操作 13.1.1 請求偽造 13.1.2 UI偽裝 13.2 跨域捕獲數據 13.2.1 通過注入HTML捕獲數據 13.2.2 通過注入CSS捕獲數據 13.2.3 JavaScript劫持 13.3 同源策略深入討論 13.3.1 同源策略與瀏覽器擴展 13.3.2 同源策略與HTML5 13.3.3 通過代理服務應用程序跨域 13.4 其他客戶端注入攻擊 13.4.1 HTTP消息頭注入 13.4.2 cookie注入 13.4.3 開放式重定向漏洞 13.4.4 客戶端SQL注入 13.4.5 客戶端HTTP參數污染 13.5 本地隱私攻擊 13.5.1 持久性cookie 13.5.2 緩存Web內容 13.5.3 瀏覽歷史記錄 13.5.4 自動完成 13.5.5 Flash本地共享對象 13.5.6 Silverlight獨立存儲 13.5.7 Internet Explorer userData 13.5.8 HTML5本地存儲機制 13.5.9 防止本地隱私攻擊 13.6 攻擊ActiveX控件 13.6.1 查找ActiveX漏洞 13.6.2 防止ActiveX漏洞 13.7 攻擊瀏覽器 13.7.1 記錄鍵擊 13.7.2 竊取瀏覽器歷史記錄與搜索查詢 13.7.3 枚舉當前使用的應用程序 13.7.4 端口掃描 13.7.5 攻擊其他網絡主機 13.7.6 利用非HTTP服務 13.7.7 利用瀏覽器漏洞 13.7.8 DNS重新綁定 13.7.9 瀏覽器利用框架 13.7.10 中間人攻擊 13.8 小結 13.9 問題 第14章 定制攻擊自動化 14.1 應用定制自動化攻擊 14.2 枚舉有效的標識符 14.2.1 基本步驟 14.2.2 探測“觸點” 14.2.3 編寫攻擊腳本 14.2.4 JAttack 14.3 獲取有用的數據 14.4 常見漏洞模糊測試 14.5 整合全部功能:Burp Intruder 14.6 實施自動化的限制 14.6.1 會話處理機制 14.6.2 CAPTCHA控件 14.7 小結 14.8 問題 第15章 利用信息泄露 15.1 利用錯誤消息 15.1.1 錯誤消息腳本 15.1.2 棧追蹤 15.1.3 詳盡的調試消息 15.1.4 服務器與數據庫消息 15.1.5 使用公共信息 15.1.6 制造詳盡的錯誤消息 15.2 收集公布的信息 15.3 使用推論 15.4 防止信息泄露 15.4.1 使用常規(guī)錯誤消息 15.4.2 保護敏感信息 15.4.3 盡量減少客戶端信息泄露 15.5 小結 15.6 問題 第16章 攻擊本地編譯型應用程序 16.1 緩沖區(qū)溢出漏洞 16.1.1 棧溢出 16.1.2 堆溢出 16.1.3 “一位偏移”漏洞 16.1.4 查找緩沖區(qū)溢出漏洞 16.2 整數漏洞 16.2.1 整數溢出 16.2.2 符號錯誤 16.2.3 查找整數漏洞 16.3 格式化字符串漏洞 16.4 小結 16.5 問題 第17章 攻擊應用程序架構 17.1 分層架構 17.1.1 攻擊分層架構 17.1.2 保障分層架構的安全 17.2 共享主機與應用程序服務提供商 17.2.1 虛擬主機 17.2.2 共享的應用程序服務 17.2.3 攻擊共享環(huán)境 17.2.4 保障共享環(huán)境的安全 17.3 小結 17.4 問題 第18章 攻擊Web服務器 18.1 Web服務器配置缺陷 18.1.1 默認證書 18.1.2 默認內容 18.1.3 目錄列表 18.1.4 WebDAV方法 18.1.5 Web服務器作為代理服務器 18.1.6 虛擬主機配置缺陷 18.1.7 保障Web服務器配置的安全 18.2 易受攻擊的服務器軟件 18.2.1 應用程序框架缺陷 18.2.2 內存管理漏洞 18.2.3 編碼與規(guī)范化漏洞 18.2.4 查找Web服務器漏洞 18.2.5 保障Web服務器軟件的安全 18.3 Web應用程序防火墻 18.4 小結 18.5 問題 第19章 查找源代碼中的漏洞 19.1 代碼審查方法 19.1.1 “黑盒”測試與“白盒” 測試 19.1.2 代碼審查方法 19.2 常見漏洞簽名 19.2.1 跨站點腳本 19.2.2 SQL注入 19.2.3 路徑遍歷 19.2.4 任意重定向 19.2.5 OS命令注入 19.2.6 后門密碼 19.2.7 本地代碼漏洞 19.2.8 源代碼注釋 19.3 Java平臺 19.3.1 確定用戶提交的數據 19.3.2 會話交互 19.3.3 潛在危險的API 19.3.4 配置Java環(huán)境 19.4 ASP.NET 19.4.1 確定用戶提交的數據 19.4.2 會話交互 19.4.3 潛在危險的API 19.4.4 配置ASP.NET環(huán)境 19.5 PHP 19.5.1 確定用戶提交的數據 19.5.2 會話交互 19.5.3 潛在危險的API 19.5.4 配置 PHP 環(huán)境 19.6 Perl 19.6.1 確定用戶提交的數據 19.6.2 會話交互 19.6.3 潛在危險的API 19.6.4 配置Perl環(huán)境 19.7 JavaScript 19.8 數據庫代碼組件 19.8.1 SQL注入 19.8.2 調用危險的函數 19.9 代碼瀏覽工具 19.10 小結 19.11 問題 第20章 Web應用程序黑客工具包 20.1 Web瀏覽器 20.1.1 Internet Explorer 20.1.2 Firefox 20.1.3 Chrome 20.2 集成測試套件 20.2.1 工作原理 20.2.2 測試工作流程 20.2.3 攔截代理服務器替代工具 20.3 獨立漏洞掃描器 20.3.1 掃描器探測到的漏洞 20.3.2 掃描器的內在限制 20.3.3 掃描器面臨的技術挑戰(zhàn) 20.3.4 當前產品 20.3.5 使用漏洞掃描器 20.4 其他工具 20.4.1 Wikto/Nikto 20.4.2 Firebug 20.4.3 Hydra 20.4.4 定制腳本 20.5 小結 第21章 Web應用程序滲透測試方法論 21.1 解析應用程序內容 21.1.1 搜索可見的內容 21.1.2 瀏覽公共資源 21.1.3 發(fā)現隱藏的內容 21.1.4 查找默認的內容 21.1.5 枚舉標識符指定的功能 21.1.6 調試參數 21.2 分析應用程序 21.2.1 確定功能 21.2.2 確定數據進入點 21.2.3 確定所使用的技術 21.2.4 解析受攻擊面 21.3 測試客戶端控件 21.3.1 通過客戶端傳送數據 21.3.2 客戶端輸入控件 21.3.3 測試瀏覽器擴展組件 21.4 測試驗證機制 21.4.1 了解驗證機制 21.4.2 測試密碼強度 21.4.3 測試用戶名枚舉 21.4.4 測試密碼猜測的適應性 21.4.5 測試賬戶恢復功能 21.4.6 測試“記住我”功能 21.4.7 測試偽裝功能 21.4.8 測試用戶名唯一性 21.4.9 測試證書的可預測性 21.4.10 檢測不安全的證書傳輸 21.4.11 檢測不安全的證書分配 21.4.12 測試不安全的存儲 21.4.13 測試邏輯缺陷 21.4.14 利用漏洞獲取未授權訪問 21.5 測試會話管理機制 21.5.1 了解會話管理機制 21.5.2 測試令牌的含義 21.5.3 測試令牌的可預測性 21.5.4 檢查不安全的令牌傳輸 21.5.5 檢查在日志中泄露的令牌 21.5.6 測試令牌?會話映射 21.5.7 測試會話終止 21.5.8 測試會話固定 21.5.9 檢查 CSRF 21.5.10 檢查cookie范圍 21.6 測試訪問控件 21.6.1 了解訪問控制要求 21.6.2 使用多個賬戶測試 21.6.3 使用有限的權限測試 21.6.4 測試不安全的訪問控制方法 21.7 測試基于輸入的漏洞 21.7.1 模糊測試所有請求參數 21.7.2 測試 SQL 注入 21.7.3 測試 XSS和其他響應注入 21.7.4 測試 OS 命令注入 21.7.5 測試路徑遍歷 21.7.6 測試腳本注入 21.7.7 測試文件包含 21.8 測試特殊功能方面的輸入漏洞 21.8.1 測試 SMTP 注入 21.8.2 測試本地代碼漏洞 21.8.3 測試SOAP注入 21.8.4 測試 LDAP 注入 21.8.5 測試XPath注入 21.8.6 測試后端請求注入 21.8.7 測試XXE注入 21.9 測試邏輯缺陷 21.9.1 確定關鍵的受攻擊面 21.9.2 測試多階段過程 21.9.3 測試不完整的輸入 21.9.4 測試信任邊界 21.9.5 測試交易邏輯 21.10 測試共享主機漏洞 21.10.1 測試共享基礎架構之間的隔離 21.10.2 測試使用ASP主機的應用程序之間的隔離 21.11 測試Web服務器漏洞 21.11.1 測試默認證書 21.11.2 測試默認內容 21.11.3 測試危險的HTTP方法 21.11.4 測試代理功能 21.11.5 測試虛擬主機配置不當 21.11.6 測試Web服務器軟件漏洞 21.11.7 測試Web應用程序防火墻 21.12 其他檢查 21.12.1 測試基于 DOM 的攻擊 21.12.2 測試本地隱私漏洞 21.12.3 測試脆弱的SSL加密算法 21.12.4 檢查同源策略配置 21.13 檢查信息泄露
你還可能感興趣
我要評論
|