本書總結了當前流行的高危漏洞的形成原因、攻擊手段及解決方案,并通過大量的示例代碼復現(xiàn)漏洞原型,制作模擬環(huán)境,更好地幫助讀者深入了解Web 應用程序中存在的漏洞,防患于未然。
本書從攻到防,從原理到實戰(zhàn),由淺入深、循序漸進地介紹了Web 安全體系。全書分4 篇共16 章,除介紹Web 安全的基礎知識外,還介紹了Web 應用程序中常見的安全漏洞、開源程序的攻擊流程與防御,并著重分析了“拖庫”事件時黑客所使用的攻擊手段。此外,還介紹了滲透測試工程師其他的一些檢測方式。
推薦序
縱觀國內網絡安全方面的書籍,大多數(shù)都是只介紹結果,從未更多地考慮過程。而本書恰
恰是從實用角度出發(fā),本著務實的精神,先講原理,再講過程,最后講結果,是每個從事信息安全的從業(yè)人員不可多得的一本實用大全。尤其是一些在企業(yè)從事信息安全的工作人員,可以很好地依據(jù)書中的實際案例進行學習,同時,在校學生也可以依據(jù)本書的案例進行深入學習,有效地貼近企業(yè),更好地有的放矢。
——陳亮 OWASP 中國北京主負責人
我有幸見證了《Web 安全深度剖析》誕生的全過程,作者認真嚴謹?shù)膶懽黠L格,深入求證
的研究態(tài)度,深厚的程序員功底,豐富的網絡和現(xiàn)場教育培訓經驗,使本書成為適合Web 滲透測試的必選作品。本書內容豐富,知識點全面,適合網絡安全愛好者和從業(yè)者學習研究。
—一劍西來 紅黑聯(lián)盟站長, 暗影團隊管理員
我收到《Web 安全深度剖析》樣章后,一口氣通讀下來,感覺酣暢淋漓。作者用深入淺出
的手法,貼近實戰(zhàn),基本涵蓋了Web 安全技術中實際遇到的方方面面。本書適合Web 安全從業(yè)人員研讀,也推薦有志在Web 安全方向發(fā)展的人學習。
——lake2 騰訊安全平臺部副總監(jiān)
與其說這是一本Web 安全的書籍,不如說是一本滲透實戰(zhàn)教程,該書總結了不少常見的
Web 滲透思路和奇技淫巧,非常適合初學者和有一些基礎的人閱讀。安全圈有一句老話:未知攻,焉知防。這本書可以幫助大家找到學習安全知識的興趣,也可以找到學習安全知識的方法。
——林偉(網名:陸羽)
360 網絡攻防實驗室負責人,國內知名安全社區(qū)T00ls.net 創(chuàng)始人之一
前 言
本書總結了當前流行的高危漏洞的形成原因、攻擊手段及解決方案,并通過大量的示例代碼復現(xiàn)漏洞原型,制作模擬環(huán)境,更好地幫助讀者深入了解Web應用程序中存在的漏洞,防患于未然。
本書拋開一些研究性、純理論性的內容,也就是外表看似很高端,但實用性不大的課題,所總結的漏洞可以說是刀刀見血、劍劍穿心,直接危害到企業(yè)安全的漏洞。
本書也是筆者多年來工作的總結,幾乎每個場景都是最常見的,如果你從事Web滲透測試相關的工作,就會遇到本書中的場景。
本書結構
本書從攻到防,從原理到實戰(zhàn),由淺入深、循序漸進地介紹了Web安全體系。全書分4篇共16章,這是一個龐大的體系,幾乎可以囊括目前常見的一切Web安全類技術。
本書目錄結構就非常像滲透測試人員的一次檢測流程,從信息探測到漏洞掃描、漏洞利用、提權等。
基礎篇
第1章到第4章為基礎篇,是整個Web安全中最基礎的技術。
第1章描述了服務器是如何被黑客入侵的,并從中引出Web安全的概念,同時也告訴讀者如何更快、更好地學習Web安全。
第2章詳細講述了Web安全的一個核心知識點:HTTP協(xié)議。如果是零基礎的讀者,建議一定要多看HTTP協(xié)議,因為后續(xù)章節(jié)中的多內容都會涉及HTTP協(xié)議。
第3章介紹了信息探測的知識點。滲透測試人員工作時,一般都是從信息探測入手的,也就是常說的踩點。信息探測是滲透測試的基本功,是必須學習的內容。本章介紹了Google Hack、Nmap、DirBuster、指紋識別等技術。
第4章講解了滲透測試人員常用的安全測試工具,包括:BurpSuite、AWVS、APPSCAN等工具。
原理篇
第5章到第10章為原理篇,閱讀本篇內容需要讀者具備一定的代碼功底。在這些章節(jié)中講述了Web應用程序中最常見的安全漏洞。筆者將這些常見的高危漏洞提取出來,每個漏洞作為單獨的一個章節(jié)來講解,從原理到利用。
第5章是SQL注入章節(jié),討論了MySQL、SQL Server、Oracle數(shù)據(jù)庫的注入方式、注入技巧和不同數(shù)據(jù)庫的注入差異。
攻擊者對數(shù)據(jù)庫注入的目的有:數(shù)據(jù)竊取、文件讀寫、命令執(zhí)行,掌握了其核心思想后,對SQL注入的學習就比較容易。
在講解SQL注入原理后,介紹了SQLMap、Havij等注入工具,同時也介紹了繞過部分WAF的思路。
第6章介紹了XSS攻擊,其中講解了XSS的形成原理、三種XSS類型、會話劫持、蠕蟲等前端技術,最后提出了XSS有效的解決方案。
第7章講解了上傳漏洞和Web容器的漏洞。有時候程序是沒有問題的,但如果與Web容器漏洞相結合可,能就會造成上傳漏洞。
第8章描述了命令執(zhí)行漏洞的形成原因和利用方式,同時也介紹了Struts2命令執(zhí)行漏洞及命令執(zhí)行漏洞的修復方案。
第9章講解了PHP包含漏洞的原理和利用方式,同時也介紹了包含漏洞的修復方案。
第10章討論的知識點比較廣泛,比如CSRF、邏輯漏洞、遠程部署漏洞、代碼注入等高危漏洞。
實戰(zhàn)篇
第11章講述了開源程序的攻擊流程與防御,并著重分析了“拖庫”事件時黑客所使用的攻擊手段。
綜合篇
如果僅僅掌握Web安全漏洞,而對其他漏洞、攻擊手法一竅不通,是無法全面找出漏洞的,在綜合篇里介紹了滲透測試工程師其他的一些檢測方式。
第12章詳細講述了暴力破解的測試方式,分別使用Hydra、Burp Suite、Medusa等工具對MSSQL、MySQL、Web應用程序進行破解,最后講述了驗證碼的安全性及防止暴力破解的解決方案。
第13章講述了旁注攻擊,當目標Web應用程序無法尋找到漏洞時,攻擊者常常會使用旁注攻擊來入侵目標。本章剖析了旁注攻擊的幾個關鍵點,包括IP逆向查詢、SQL跨庫查詢、繞過CDN等技術。
第14章講述了提權。服務器提權可以更好地解釋服務器的脆弱性,本章對Linux、Windows提權均做了分析。比如Windows下的三種提權方式:本地溢出提權、第三方組件提權和系統(tǒng)關鍵點利用。另外,也剖析了一部分提權時的采用手段,比如DLL劫持、端口轉發(fā)、服務器添加后門等技術。
第15章講述了ARP攻擊與防御。安全是一個整體,并不是Web應用程序找不到漏洞時,黑客就沒辦法了,黑客使用ARP欺騙技術可以輕松劫持到你的密碼。本章從ARP協(xié)議開始講解,接著深入講解ARP欺騙的原理,其中介紹了Cain、Ettercap、NetFuke等嗅探工具。
第16章講述了社會工程學。社會工程學可以說是APT攻擊中的關鍵一環(huán),也被稱為沒有“技術”卻比“技術”更強大的滲透方式。
需要的工具
本書的核心是從原理到實戰(zhàn)案例的剖析,很多時候,工具只是作為輔助使用。讀者請注意一點:在實際的滲透中,更多地靠經驗、思路,工具反而是其次,不要被眾多的“神器”所迷惑,工具僅僅是讓我們更方便、高效一些,工具是“死”的,目前的軟件開發(fā)水平還完全達不到智能化,工具只能按照程序員的思維流程來執(zhí)行。所以,我們完全依賴的還是自己的大腦。
本書所使用的工具可以在下載。
本書是寫給誰的
本書最適合滲透測試人員、Web開發(fā)人員、安全咨詢顧問、測試人員、架構師、項目經理、設計等人員閱讀,也可以作為對Web安全、滲透測試有興趣的學生的教材,這是一本實用的Web安全教材。
滲透測試人員:滲透測試崗位是要求的技術在大學并沒有課程設置并沒有,也沒有正規(guī)、專業(yè)的技術培訓?梢哉f,做滲透測試的人員都要靠自學,付出比其他人更多的努力才能勝任這個工作。筆者希望讀者從本書中學習到知識,進一步提高自己的滲透測試水平。
Web開發(fā)人員:程序員不一定是黑客,但是有一定水平的黑客、白帽子一定是程序員。因此,一個合格的程序員學習安全知識是非常快的。本書介紹了大量的示例代碼,并分析其中的漏洞,從開發(fā)人員的角度講述如何避免和修復漏洞,希望開發(fā)人員能夠通過本書的學習提高自己防御安全的水平,站在新的高度去看待程序。
信息安全相關專業(yè)的學生:本書也適合信息安全等相關專業(yè)的學生閱讀,書中所有的知識點幾乎都是從零開始的,你們可以循序漸進地學習。同時,筆者也希望能給大學老師帶來一些靈感,然后培育出更多的網絡安全人才。
在學習時,筆者常把原理性的知識比喻為內功,而具體的實操、技術點比喻為招式,只有招式而沒有內功是根本無法變成高手的,而有了內功和招式才可能成為高手。
安全是把雙刃劍,劍在手中,至于是用其來做好事還是做壞事,只在于一念之差。筆者強烈要求各位讀者僅在法律的許可范圍內使用本書所提供的信息。
致謝
感謝EvilShad0w團隊的每一位成員,你仍在一起交流技術、討論心得時從來都是無私地分享,你們都有一顆對技術狂熱的心,在我眼里,你們都是技術帝。
感謝破曉團隊的每一位成員,感謝你們相信我,愿意跟我一起闖,你們的存在是支撐我繼續(xù)下去的力量。
感謝聯(lián)合實驗室的成員,是你們在百忙之中細細品味這本書,并指出不足之處。
感謝袁海君、杜萌萌、LiuKer、7z1、天藍藍、小K、小歪、巖少、晴天小鑄、GBM的支持,有你們的支持,我才能完成這本書的寫作,也感謝你們對這本書做出的貢獻,我將謹記于心。這里要特別感謝小杜,你為我審閱稿子,找出書中的許多錯誤。
感謝紅黑聯(lián)盟站長一劍西來、天云祥科技有限公司CEO楊奎,你們給了我許多機會,也教會了我如何去思考。
感謝我的領導沈局、鄔江、鄧小剛,你們對待我就像對待自己的學生一樣,教導了我許多。
最后,感謝我的父母,感謝你們將我撫育成人,為我付出一切。這份愛時刻提醒著我,要努力、要上進!
路雖然,行則必達。事雖難,做則必成。
破曉-SecBug.Org
張炳帥,畢業(yè)于北京航空航天大學,國內著名Web安全研究團隊破曉成員,2013年加入中電長城網際CS.Lab實驗室,信息安全高級研究員。從事信息安全研究6年,擅長Java,樂于開源和分享研究成果,希望有一天能通過Code改變世界!
第1篇 基礎篇
第1章 Web安全簡介
1.1 服務器是如何被入侵的
1.2 如何更好地學習Web安全
第2章 深入HTTP請求流程
2.1 HTTP協(xié)議解析
2.1.1 發(fā)起HTTP請求
2.1.2 HTTP協(xié)議詳解
2.1.3 模擬HTTP請求
2.1.4 HTTP協(xié)議與HTTPS協(xié)議的區(qū)別
2.2 截取HTTP請求
2.2.1 Burp Suite Proxy 初體驗
2.2.2 Fiddler
2.2.3 WinSock Expert
2.3 HTTP應用:黑帽SEO之搜索引擎劫持
2.4 小結
第3章 信息探測
3.1 Google Hack
3.1.1 搜集子域名
3.1.2 搜集Web信息
3.2 Nmap初體驗
3.2.1 安裝Nmap
3.2.2 探測主機信息
3.2.3 Nmap腳本引擎
3.3 DirBuster
3.4 指紋識別
3.5 小結
第4章 漏洞掃描
4.1 Burp Suite
4.1.1 Target
4.1.2 Spider
4.1.3 Scanner
4.1.4 Intruder
4.1.5 輔助模塊
4.2 AWVS
4.2.1 WVS向導掃描
4.2.2 Web掃描服務
4.2.3 WVS小工具
4.3 AppScan
4.3.1 使用AppScan掃描
4.3.2 處理結果
4.3.3 AppScan輔助工具
4.4 小結
第2篇 原理篇
第5章 SQL注入漏洞
5.1 SQL注入原理
5.2 注入漏洞分類
5.2.1 數(shù)字型注入
5.2.2 字符型注入
5.2.3 SQL注入分類
5.3 常見數(shù)據(jù)庫注入
5.3.1 SQL Server
5.3.2 MySQL
5.3.3 Oracle
5.4 注入工具
5.4.1 SQLMap
5.4.2 Pangolin
5.4.3 Havij
5.5 防止SQL注入
5.5.1 嚴格的數(shù)據(jù)類型
5.5.2 特殊字符轉義
5.5.3 使用預編譯語句
5.5.4 框架技術
5.5.5 存儲過程
5.6 小結
第6章 上傳漏洞
6.1 解析漏洞
6.1.1 IIS解析漏洞
6.1.2 Apache解析漏洞
6.1.3 PHP CGI解析漏洞
6.2 繞過上傳漏洞
6.2.1 客戶端檢測
6.2.2 服務器端檢測
6.3 文本編輯器上傳漏洞
6.4 修復上傳漏洞
6.5 小結
第7章 XSS跨站腳本漏洞
7.1 XSS原理解析
7.2 XSS類型
7.2.1 反射型XSS
7.2.2 存儲型XSS
7.2.3 DOM XSS
7.3 檢測XSS
7.3.1 手工檢測XSS
7.3.2 全自動檢測XSS
7.4 XSS高級利用
7.4.1 XSS會話劫持
7.4.2 XSS Framework
7.4.3 XSS GetShell
7.4.3 XSS蠕蟲
7.5 修復XSS跨站漏洞
7.5.1 輸入與輸出
7.5.2 HttpOnly
7.6 小結
第8章 命令執(zhí)行漏洞
8.1 OS命令執(zhí)行漏洞示例
8.2 命令執(zhí)行模型
8.2.1 PHP命令執(zhí)行
8.2.2 Java命令執(zhí)行
8.3 框架執(zhí)行漏洞
8.3.1 Struts2代碼執(zhí)行漏洞
8.3.2 ThinkPHP命令執(zhí)行漏洞
8.3 防范命令執(zhí)行漏洞
第9章 文件包含漏洞
9.1 包含漏洞原理解析
9.1.1 PHP包含
9.1.2 JSP包含
9.2 安全編寫包含
9.3 小結
第10章 其他漏洞
10.1 CSRF
10.1.1 CSRF攻擊原理
10.1.2 CSRF攻擊場景(GET)
10.1.3 CSRF攻擊場景(POST)
10.1.4 瀏覽器Cookie機制
10.1.5 檢測CSRF漏洞
10.1.6 預防跨站請求偽造
10.2 邏輯錯誤漏洞
10.2.1 挖掘邏輯漏洞
10.2.2 繞過授權驗證
10.2.3 密碼找回邏輯漏洞
10.2.4 支付邏輯漏洞
10.2.5 指定賬戶惡意攻擊
10.3 代碼注入
10.3.1 XML注入
10.3.2 XPath注入
10.3.3 JSON注入
10.3.4 HTTP Parameter Pollution
10.4 URL跳轉與釣魚
10.4.1 URL跳轉
10.4.2 釣魚
10.5 WebServer遠程部署
10.5.1 Tomcat
10.5.2 JBoss
10.5.3 WebLogic
10.6 小結
第3篇 實戰(zhàn)篇
第11章 實戰(zhàn)入侵與防范
11.1 開源程序安全剖析
11.1.1 0day攻擊
11.1.2 網站后臺安全
11.1.3 MD5還安全嗎
11.2 拖庫
11.2.1 支持外連接
11.2.2 不支持外連接
11.3 小結
第4篇 綜合篇
第12章 暴力破解測試
12.1 C/S架構破解
12.2 B/S架構破解
12.3 暴力破解案例
12.4 防止暴力破解
12.5 小結
第13章 旁注攻擊
13.1 服務器端Web架構
13.2 IP逆向查詢
13.3 SQL跨庫查詢
13.4 目錄越權
13.5 構造注入點
13.6 CDN
13.7 小結
第14章 提權
14.1 溢出提權
14.2 第三方組件提權
14.2.1 信息搜集
14.2.2 數(shù)據(jù)庫提權
14.2.3 FTP提權
14.2.4 PcAnywhere提權
14.3 虛擬主機提權
14.4 提權輔助
14.4.1 3389端口
14.4.2 端口轉發(fā)
14.4.3 啟動項提權
14.4.4 DLL劫持
14.4.5 添加后門
14.5 服務器防提權措施
14.6 小結
第15章 ARP欺騙攻擊
15.1 ARP協(xié)議簡介
15.1.1 ARP緩存表
15.1.2 局域網主機通信
15.1.3 ARP欺騙原理
15.2 ARP攻擊
15.2.1 Cain
15.2.2 Ettercap
15.2.3 NetFuke
15.3 防御ARP攻擊
15.4 小結
第16章 社會工程學
16.1 信息搜集
16.2 溝通
16.3 偽造
16.4 小結
嚴正聲明