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