在 Web 應用程式的所有測試當中,安全測試(security testing)可能是最重要的一環,但往往也是最容易被忽略的部分。《Web 安全測試錦囊妙技》所涵蓋的各個秘技,詳細闡述著開發者與測試者如何檢查最常見的 Web 安全議題,同時說明了如何實施單元測試(unit test)、回歸測試(regression test)、以及探索性測試(explorative test)。與特殊安全性評估不同,這些秘技是可以反覆應用、明確簡要、且系統化的 — 非常適於整合到你的標準測試組(test suite)當中。
本書秘技的涵蓋範圍甚廣,從觀察往來於客戶端與伺服器之間的訊息,一直到撰寫指令稿登入及執行 Web 應用程式功能的多階段測試。閱讀完本書之際,你將能夠建立試圖突破 Ajax 函式的測試,以及針對常見攻擊 — 跨網站指令稿(cross-site scripting)及注入攻擊(injection attack) — 的大型多步驟測試。
本書將協助你:
* 取得、安裝、及組態有用(且免費)的安全測試工具。
* 瞭解你的應用程式如何跟用戶溝通,以便在測試中更貼切地模擬真實的攻擊。
* 在模擬常見攻擊(如 SQL 注入、跨網站指令稿、及竄改表單隱藏欄位)的各種方法中做出最佳選擇。
* 以秘技中的指令稿與範例作為自動化測試的起點,讓你的測試可以反覆被實施。
別讓自己生活在恐懼之中,擔心三更半夜接到網站被駭客入侵的緊急電話,藉由《Web 安全測試錦囊妙技》,以及各個秘技所運用的免費工具,你將能夠把安全防護充分整合到你的測試組當中,每個晚上,安安心心,一覺到天明。
作者簡介:
Paco Hope 是 Cigital 的技術部經理、《Mastering FreeBSD and OpenBSD Security》(歐萊禮)一書的共同作者、以及軟體安全及品管領域的著名演講者。
Ben Walther 是 Cigital 的顧問,以及 Firefox 的 Edit Cookies 附加元件的貢獻者,其專業領域主要聚焦在軟體安全及品質保證。
各界推薦
名人推薦:
『貫穿全書的一個個絕佳範例,把理論落實到實務上,將攻擊排除在網站外。』
— Lee Copeland,計劃主持人,StarEast and StarWest Testing Conferences
『終於,一本清楚闡述並且教導安全測試機制的測試者手冊誕生了!隱匿在一個個實用祕技背後的,是對「Web 安全測試」這個主題認真、睿智、且精心鋪陳的闡述。這本書實實在在地為測試者增添強大的火力,讓他們發掘出連最有名的安全測試工具都找不到的安全漏洞。』
— Matt Fisher,Piscis LLC 的創始人暨執行長。
名人推薦:『貫穿全書的一個個絕佳範例,把理論落實到實務上,將攻擊排除在網站外。』
— Lee Copeland,計劃主持人,StarEast and StarWest Testing Conferences
『終於,一本清楚闡述並且教導安全測試機制的測試者手冊誕生了!隱匿在一個個實用祕技背後的,是對「Web 安全測試」這個主題認真、睿智、且精心鋪陳的闡述。這本書實實在在地為測試者增添強大的火力,讓他們發掘出連最有名的安全測試工具都找不到的安全漏洞。』
— Matt Fisher,Piscis LLC 的創始人暨執行長。
目錄
序
前言
第一章 簡介
1.1 何謂安全測試?
1.2 何謂 Web 應用程式?
1.3 Web 應用程式基礎
1.4 Web 應用程式安全測試
1.5 本書全然關乎「如何做」
第二章 安裝免費工具
2.1 安裝 Firefox
2.2 安裝 Firefox 擴充套件
2.3 安裝 Firebug
2.4 安裝 OWASP 的 WebScarab
2.5 在 Windows 上安裝 Perl 及相關套件
2.6 在 Linux、Unix、或 OS X 上安裝 Perl 以及使用 CPAN
2.7 安裝 CAL9000
2.8 安裝 ViewState Decoder
2.9 安裝 cURL
2.10 安裝 Pornzilla
2.11 安裝 Cygwin
2.12 安裝 Nikto 2
2.13 安裝 Burp Suite
2.14 安裝 Apache HTTP Server
第三章 基本觀察
3.1 觀看頁面的 HTML 原始碼
3.2 更進一步檢視原始碼
3.3 使用 Firebug 即時觀察請求標頭
3.4 使用 WebScarab 即時觀察 POST 資料
3.5 檢視隱藏表單欄位
3.6 使用 TamperData 即時觀察回應標頭
3.7 突顯 JavaScript 與註解
3.8 偵測 JavaScript 事件
3.9 修改特定的元素屬性
3.10 動態追蹤元素屬性
3.11 結論
第四章 Web 導向的資料編碼
4.1 識別位元資料表示法
4.2 操作 Base 64
4.3 轉換網頁裡的 Base 36 數字
4.4 使用 Perl 操作 Base 36
4.5 操作 URL 編碼資料
4.6 操作 HTML 實體資料
4.7 計算雜湊值
4.8 辨識時間格式
4.9 以程式化的方式編碼時間值
4.10 解碼 ASP.NET 的 ViewState
4.11 解碼多重編碼
第五章 竄改輸入
5.1 攔截及修改 POST 請求
5.2 規避輸入限制
5.3 竄改 URL
5.4 自動化 URL 竄改
5.5 測試 URL 長度處理
5.6 編輯 Cookie
5.7 偽造瀏覽器標頭資訊
5.8 上傳具有惡意名稱的檔案
5.9 上傳大型檔案
5.10 上傳惡意的 XML 實體檔案
5.11 上傳惡意的 XML 結構
5.12 上傳惡意的 ZIP 檔
5.13 上傳樣本病毒檔
5.14 規避使用者介面的限制
第六章 自動化大量掃描
6.1 使用 WebScarab 搜索網站
6.2 將搜索結果變成清單
6.3 削減要測試的 URL
6.4 利用試算表削減清單
6.5 使用 LWP 鏡射網站
6.6 使用 wget 鏡射網站
6.7 使用 wget 鏡射特定清單
6.8 使用 Nikto 掃描網站
6.9 解釋 Nikto 的掃描結果
6.10 使用 Nikto 掃描 HTTPS 網站
6.11 使用 Nikto 搭配認證
6.12 在特定起始點啟動 Nikto
6.13 透過 Nikto 使用特定的期程 Cookie
6.14 使用 WSFuzzer 測試 Web Service
6.15 解釋 WSFuzzer 的結果
第七章 使用 cURL 自動化特定任務
7.1 使用 cURL 擷取頁面
7.2 擷取 URL 的多種變形
7.3 自動追蹤重導向
7.4 使用 cURL 檢查跨網站指令稿
7.5 使用 cURL 檢查目錄橫跨
7.6 假扮特定類型的 Web 瀏覽器或設備
7.7 以互動的方式假扮另一個裝置
7.8 使用 cURL 模仿搜尋引擎
7.9 透過偽造 Referer 標頭欺騙工作流程
7.10 僅擷取 HTTP 標頭
7.11 使用 cURL 進行 POST
7.12 維護期程狀態
7.13 竄改 Cookie
7.14 使用 cURL 上傳檔案
7.15 建造多階段測試案例
7.16 結論
第八章 LibWWWPerl 自動化測試
8.1 撰寫擷取頁面的基本 Perl 指令稿
8.2 以程式化的方式改變參數
8.3 模擬 POST 表單輸入
8.4 捕捉與儲存 Cookie
8.5 檢查期程逾期
8.6 測試 Session Fixation
8.7 傳送惡意的 Cookie 值
8.8 上傳惡意的檔案內容
8.9 上傳具有惡意名稱的檔案
8.10 上傳病毒到應用程式
8.11 使用 Perl 剖析接收到的值
8.12 以程式化的方式編輯頁面
8.13 使用執行緒增進效能
第九章 尋找設計瑕疵
9.1 規避必要的穿梭瀏覽
9.2 試圖進行特權操作
9.3 濫用密碼回復功能
9.4 濫用可預測的識別符
9.5 預測憑證
9.6 尋找應用程式裡的隨機數字
9.7 測試隨機數字
9.8 濫用可重複性
9.9 濫用高負載動作
9.10 濫用限制機制
9.11 濫用競爭狀況
第十章 攻擊 Ajax
10.1 即時觀察 AJAX 請求
10.2 識別應用程式裡的 JavaScript
10.3 追溯 AJAX 活動的來源
10.4 攔截與修改 AJAX 請求
10.5 攔截與修改伺服器回應
10.6 以注入的資料破壞 AJAX
10.7 以注入的 XML 破壞 AJAX
10.8 以注入的 JSON 破壞 AJAX
10.9 破壞客戶端狀態
10.10 檢查跨網域存取
10.11 透過 JSON 劫持讀取私有資料
第十一章 操作期程
11.1 在 Cookie 裡尋找期程 ID
11.2 在請求中尋找期程 ID
11.3 尋找 Authorization 標頭
11.4 分析期程 ID 逾期
11.5 使用 Burp 分析期程 ID
11.6 使用 WebScarab 分析期程隨機性
11.7 改變期程避開限制
11.8 假扮其他用戶
11.9 鎖定期程
11.10 測試跨網站請求偽造
第十二章 多面向測試
12.1 利用 XSS 竊取 Cookie
12.2 利用 XSS 建立覆蓋物
12.3 利用 XSS 產生 HTTP 請求
12.4 以互動的方式嘗試基於 DOM 之 XSS
12.5 規避欄位長度限制(XSS)
12.6 以互動的方式嘗試跨網站追蹤
12.7 修改 Host 標頭
12.8 以暴力法猜解用戶名稱與密碼
12.9 以互動的方式嘗試 PHP Include 檔案注入
12.10 建立解壓縮炸彈
12.11 以互動的方式嘗試命令注入
12.12 以系統化的方式嘗試命令注入
12.13 以互動的方式嘗試 XPath 注入
12.14 以互動的方式嘗試 SSI 注入
12.15 以系統化的方式嘗試 SSI 注入
12.16 以互動的方式嘗試 LDAP 注入
12.17 以互動的方式嘗試紀錄注入
索引
序
前言
第一章 簡介
1.1 何謂安全測試?
1.2 何謂 Web 應用程式?
1.3 Web 應用程式基礎
1.4 Web 應用程式安全測試
1.5 本書全然關乎「如何做」
第二章 安裝免費工具
2.1 安裝 Firefox
2.2 安裝 Firefox 擴充套件
2.3 安裝 Firebug
2.4 安裝 OWASP 的 WebScarab
2.5 在 Windows 上安裝 Perl 及相關套件
2.6 在 Linux、Unix、或 OS X 上安裝 Perl 以及使用 CPAN
2.7 安裝 CAL9000
2.8 安裝 ViewState Decoder
2.9 安裝 cURL
2.10 安裝 Pornzilla
2.11 安裝 Cygwin
...