《Java代碼審計(jì) 入門篇》由淺入深、系統(tǒng)地介紹了Java代碼審計(jì)的流程、Java Web漏洞產(chǎn)生的原理以及實(shí)戰(zhàn)講解,并力求語(yǔ)言通俗易懂、舉例簡(jiǎn)單明了,便于讀者閱讀領(lǐng)會(huì)。同時(shí)結(jié)合具體案例進(jìn)行講解,可以讓讀者身臨其境,快速了解和掌握主流的Java代碼安全審計(jì)技巧。
閱讀《Java代碼審計(jì) 入門篇》不要求讀者具備代碼審計(jì)的相關(guān)背景,如有相關(guān)經(jīng)驗(yàn),對(duì)理解本書內(nèi)容會(huì)更有幫助。《Java代碼審計(jì) 入門篇》也可作為高等院校信息安全專業(yè)的教材。
1.系統(tǒng)介紹Java代碼安全審計(jì)入門技術(shù),助力安全人員剖析Web安全漏洞
2.內(nèi)容結(jié)構(gòu)劃分合理,理論與實(shí)踐結(jié)合入門Java代碼審計(jì)
3.豐富詳細(xì)案例講解,扎實(shí)掌握J(rèn)ava代碼審計(jì)知識(shí)技能
4.提供腳本源代碼及環(huán)境工具資源下載
徐焱,北京交通大學(xué)安全研究員,MS08067安全實(shí)驗(yàn)室創(chuàng)始人。從2002年開始接觸網(wǎng)絡(luò)安全,有豐富的滲透測(cè)試經(jīng)驗(yàn),主要研究方向?yàn)閮?nèi)網(wǎng)滲透測(cè)試和APT攻擊。已出版圖書《網(wǎng)絡(luò)攻防實(shí)戰(zhàn)研究:漏洞利用與提權(quán)》、《Web安全攻防:滲透測(cè)試實(shí)戰(zhàn)指南》,在《黑客防線》、《黑客X檔案》、《黑客手冊(cè)》、FreeBuf、360安全客、阿里云盾先知、嘶吼等媒體發(fā)表過多篇技術(shù)文章。
第 1章 初識(shí)Java代碼審計(jì)1
1.1 代碼審計(jì)的意義 1
1.2 Java代碼審計(jì)所需的基礎(chǔ)能力 3
1.3 代碼審計(jì)的常用思路 4
第 2章 代碼審計(jì)環(huán)境搭建 5
2.1 JDK的下載與安裝 5
2.1.1 JDK的下載 5
2.1.2 JDK的安裝 6
2.1.3 添加JDK到系統(tǒng)環(huán)境 8
2.2 Docker容器編排 10
2.2.1 Docker基本原理及操作 11
2.2.2 使用Vulhub快速搭建漏洞驗(yàn)證環(huán)境 21
2.3 遠(yuǎn)程調(diào)試 24
2.3.1 對(duì)Jar包進(jìn)行遠(yuǎn)程調(diào)試 24
2.3.2 對(duì)Weblogic進(jìn)行遠(yuǎn)程調(diào)試 27
2.3.3 對(duì)Tomcat進(jìn)行遠(yuǎn)程調(diào)試 31
2.3.4 VMware虛擬機(jī)搭建遠(yuǎn)程調(diào)試環(huán)境 35
2.4 項(xiàng)目構(gòu)建工具 35
2.4.1 Maven基礎(chǔ)知識(shí)及掌握 36
2.4.2 Swagger特點(diǎn)及使用 40
第3章 代碼審計(jì)輔助工具簡(jiǎn)介 41
3.1 代碼編輯器 41
3.1.1 Sublime 41
3.1.2 IDEA 42
3.1.3 Eclipse 43
3.2 測(cè)試工具 43
3.2.1 Burp Suite 43
3.2.2 SwitchyOmega 46
3.2.3 Max HackerBar 47
3.2.4 Postman 48
3.2.5 Postwomen 49
3.2.6 Tamper Data 49
3.2.7 Ysoserial 50
3.2.8 Marshalsec 50
3.2.9 MySQL監(jiān)視工具 51
3.2.10 Beyond Compare 55
3.3 反編譯工具 56
3.3.1 JD-GUI 56
3.3.2 FernFlower 56
3.3.3 CFR 57
3.3.4 IntelliJ IDEA 58
3.4 Java代碼靜態(tài)掃描工具 58
3.4.1 Fortify SCA 58
3.4.2 VCG 59
3.4.3 FindBugs與FindSecBugs插件 60
3.4.4 SpotBugs 60
3.5 公開漏洞查找平臺(tái) 61
3.5.1 CVE 61
3.5.2 NVD 62
3.5.3 CNVD 63
3.5.4 CNNVD 63
3.6 小結(jié) 64
第4章 Java EE基礎(chǔ)知識(shí) 65
4.1 Java EE分層模型 65
4.1.1 Java EE的核心技術(shù) 66
4.1.2 Java EE分層模型 66
4.2 了解MVC模式與MVC框架 67
4.2.1 Java MVC 模式 68
4.2.2 Java MVC框架 69
4.3 Java Web的核心技術(shù)Servlet 70
4.3.1 Servlet 的配置 70
4.3.2 Servlet的訪問流程 73
4.3.3 Servlet的接口方法 73
4.3.4 Servlet 的生命周期 76
4.4 Java Web過濾器filter 77
4.4.1 filter的配置 77
4.4.2 filter的使用流程及實(shí)現(xiàn)方式 79
4.4.3 filter的接口方法 80
4.4.4 filter 的生命周期 82
4.5 Java反射機(jī)制 82
4.5.1 什么是反射 83
4.5.2 反射的用途 83
4.5.3 反射的基本運(yùn)用 84
4.5.4 不安全的反射 91
4.6 ClassLoader類加載機(jī)制 92
4.6.1 ClassLoader類 92
4.6.2 loadClass()方法的流程 93
4.6.3 自定義的類加載器 94
4.6.4 loadClass()方法與Class.forName的區(qū)別 95
4.6.5 URLClassLoader 96
4.7 Java動(dòng)態(tài)代理 97
4.7.1 靜態(tài)代理 97
4.7.2 動(dòng)態(tài)代理 98
4.7.3 CGLib代理 100
4.8 Javassist動(dòng)態(tài)編程 101
4.9 可用于Java Web的安全開發(fā)框架 103
4.9.1 Spring Security 103
4.9.2 Apache Shiro 104
4.9.3 OAuth 2.0 105
4.9.4 JWT 107
第5章 OWASP Top 10 2017漏洞的代碼審計(jì) 109
5.1 注入 110
5.1.1 注入漏洞簡(jiǎn)介 110
5.1.2 SQL注入 110
5.1.3 命令注入 117
5.1.4 代碼注入 121
5.1.5 表達(dá)式注入 125
5.1.6 模板注入 130
5.1.7 小結(jié) 133
5.2 失效的身份認(rèn)證 134
5.2.1 失效的身份認(rèn)證漏洞簡(jiǎn)介 134
5.2.2 WebGoat8 JWT Token猜解實(shí)驗(yàn) 134
5.2.3 小結(jié) 141
5.3 敏感信息泄露 142
5.3.1 敏感信息泄露簡(jiǎn)介 142
5.3.2 TurboMail 5.2.0敏感信息泄露 142
5.3.3 開發(fā)組件敏感信息泄露 146
5.3.4 小結(jié) 146
5.4 XML外部實(shí)體注入(XXE) 147
5.4.1 XXE漏洞簡(jiǎn)介 147
5.4.2 讀取系統(tǒng)文件 148
5.4.3 DoS攻擊 150
5.4.4 Blind XXE 151
5.4.5 修復(fù)案例 154
5.4.6 小結(jié) 156
5.5 失效的訪問控制 157
5.5.1 失效的訪問控制漏洞簡(jiǎn)介 157
5.5.2 橫向越權(quán) 157
5.5.3 縱向越權(quán) 164
5.5.4 小結(jié) 168
5.6 安全配置錯(cuò)誤 168
5.6.1 安全配置錯(cuò)誤漏洞簡(jiǎn)介 168
5.6.2 Tomcat任意文件寫入(CVE-2017-12615) 169
5.6.3 Tomcat AJP 文件包含漏洞(CVE-2020-1938) 173
5.6.4 Spring Boot遠(yuǎn)程命令執(zhí)行 192
5.6.5 小結(jié) 203
5.7 跨站腳本(XSS) 203
5.7.1 跨站腳本漏洞簡(jiǎn)介 203
5.7.2 反射型XSS漏洞 204
5.7.3 存儲(chǔ)型XSS漏洞 206
5.7.4 DOM型XSS漏洞 211
5.7.5 修復(fù)建議 212
5.7.6 小結(jié) 212
5.8 不安全的反序列化 212
5.8.1 不安全的反序列化漏洞簡(jiǎn)介 212
5.8.2 反序列化基礎(chǔ) 213
5.8.3 漏洞產(chǎn)生的必要條件 214
5.8.4 反序列化拓展 215
5.8.5 Apache Commons Collections反序列化漏洞 218
5.8.6 FastJson反序列化漏洞 225
5.8.7 小結(jié) 235
5.9 使用含有已知漏洞的組件 235
5.9.1 組件漏洞簡(jiǎn)介 235
5.9.2 Weblogic中組件的漏洞 237
5.9.3 富文本編輯器漏洞 238
5.9.4 小結(jié) 241
5.10 不足的日志記錄和監(jiān)控 241
5.10.1 不足的日志記錄和監(jiān)控漏洞簡(jiǎn)介 241
5.10.2 CRLF注入漏洞 242
5.10.3 未記錄可審計(jì)性事件 243
5.10.4 對(duì)日志記錄和監(jiān)控的安全建議 244
5.10.5 小結(jié) 244
第6章 OWASP Top 10 2017之外常見漏洞的代碼審計(jì) 245
6.1 CSRF 245
6.1.1 CSRF簡(jiǎn)介 245
6.1.2 實(shí)際案例及修復(fù)方式 246
6.1.3 小結(jié) 249
6.2 SSRF 249
6.2.1 SSRF簡(jiǎn)介 249
6.2.2 實(shí)際案例及修復(fù)方式 250
6.2.3 小結(jié) 262
6.3 URL跳轉(zhuǎn) 263
6.3.1 URL跳轉(zhuǎn)漏洞簡(jiǎn)介 263
6.3.2 實(shí)際案例及修復(fù)方式 264
6.3.3 小結(jié) 267
6.4 文件操作漏洞 267
6.4.1 文件操作漏洞簡(jiǎn)介 267
6.4.2 漏洞發(fā)現(xiàn)與修復(fù)案例 268
6.4.3 小結(jié) 286
6.5 Web后門漏洞 287
6.5.1 Web后門漏洞簡(jiǎn)介 287
6.5.2 Java Web 后門案例講解 287
6.5.3 小結(jié) 292
6.6 邏輯漏洞 293
6.6.1 邏輯漏洞簡(jiǎn)介 293
6.6.2 漏洞發(fā)現(xiàn)與修復(fù)案例 293
6.6.3 小結(jié) 299
6.7 前端配置不當(dāng)漏洞 300
6.7.1 前端配置不當(dāng)漏洞簡(jiǎn)介 300
6.7.2 漏洞發(fā)現(xiàn)與修復(fù)案例 300
6.7.3 小結(jié) 305
6.8 拒絕服務(wù)攻擊漏洞 305
6.8.1 拒絕服務(wù)攻擊漏洞簡(jiǎn)介 305
6.8.2 漏洞發(fā)現(xiàn)與修復(fù)案例 306
6.8.3 小結(jié) 322
6.9 點(diǎn)擊劫持漏洞 323
6.9.1 點(diǎn)擊劫持漏洞簡(jiǎn)介 323
6.9.2 漏洞發(fā)現(xiàn)與修復(fù)案例 324
6.9.3 小結(jié) 327
6.10 HTTP參數(shù)污染漏洞 327
6.10.1 HTTP參數(shù)污染漏洞簡(jiǎn)介 327
6.10.2 漏洞發(fā)現(xiàn)與修復(fù)案例 328
6.10.3 小結(jié) 330
第7章 Java EE開發(fā)框架安全審計(jì) 331
7.1 開發(fā)框架審計(jì)技巧簡(jiǎn)介 331
7.1.1 SSM框架審計(jì)技巧 331
7.1.2 SSH框架審計(jì)技巧 360
7.1.3 Spring Boot框架審計(jì)技巧 373
7.2 開發(fā)框架使用不當(dāng)范例(Struts2 遠(yuǎn)程代碼執(zhí)行) 377
7.2.1 OGNL簡(jiǎn)介 377
7.2.2 S2-001漏洞原理分析 379
第8章 Jspxcms代碼審計(jì)實(shí)戰(zhàn) 390
8.1 Jspxcms簡(jiǎn)介 390
8.2 Jspxcms的安裝 391
8.2.1 Jspxcms的安裝環(huán)境需求 391
8.2.2 Jspxcms的安裝步驟 391
8.3 目錄結(jié)構(gòu)及功能說明 399
8.3.1 目錄結(jié)構(gòu) 399
8.3.2 功能說明 402
8.4 第三方組件漏洞審計(jì) 406
8.5 單點(diǎn)漏洞審計(jì) 408
8.5.1 SQL審計(jì) 408
8.5.2 XSS 審計(jì) 411
8.5.3 SSRF審計(jì) 418
8.5.4 RCE審計(jì) 431
8.6 本章總結(jié) 440
第9章 小話IAST與RASP 441
9.1 IAST簡(jiǎn)介 441
9.2 RASP簡(jiǎn)介 443
9.3 單機(jī)版OpenRASP Agent實(shí)驗(yàn)探究 444
9.3.1 實(shí)驗(yàn)環(huán)境 444
9.3.2 實(shí)驗(yàn)過程 444
9.4 OpenRASP Java Agent原理淺析 448
9.5 本章總結(jié) 452
附錄 Java安全編碼規(guī)范索引 453