Java代码安全审计
(入门篇)
目录
第一章 初识Java代码审计
1.1代码审计的意义
1.2 Java代码审计的所需基础
1.3代码审计的常用思路
第二章 代码审计环境搭建
2.1 JDK的下载与安装
2.1.1 JDK的下载
2.1.2 JDK的安装
2.1.3 添加JDK到系统环境
2.2 Docker容器编排
2.2.1 Docker基本原理及操作
2.2.2 使用Vulhub快速搭建漏洞验证环境
2.3 远程调试
2.3.1 对Weblogic进行远程调试
2.3.2 对Tomcat进行远程调试
2.3.3 Vmware虚拟机搭建远程调试环境
2.4 项目构建工具
2.4.1 Maven基础知识及掌握
2.4.2 Swagger特点及使用
第三章 代码审计辅助工具
3.1 代码编辑器
3.1.1 Sublime
3.1.2 IDEA
3.1.3 Eclipse
3.2 测试工具
3.2.1 Burp Suite
3.2.2 SwitchyOmega
3.2.3 Max Hacker Bar
3.2.4 Postman
3.2.5 Postwomen
3.2.6 TamperData
3.2.7 Ysoserial
3.2.8 marshalsec
3.2.9 Mysql 监视工具
3.2.10 Beyond Compare
3.3 反编译工具
3.3.1 JD-GUI
3.3.2 FernFlower
3.3.3 CRF
3.3.4 IntelliJ IDEA
3.4 Java代码静态扫描工具
3.4.1 Fortify SCA
3.4.2 VCG
3.4.3 FindBugs与FindSecBugs插件
3.4.4 SpotBugs
3.5 公开漏洞查找平台
3.5.1 CVE(http://cve.mitre.org/)
3.5.2 NVD(https://nvd.nist.gov/)
3.5.3 CNVD(https://www.cnvd.org.cn/)
3.5.4 CNNVD(http://www.cnnvd.org.cn/)
3.6 小结
第四章 Java EE基础知识补充
4.1 Java EE 分层模型
4.1.1 Java EE的核心技术
4.1.2 Java EE分层模型
4.2 了解MVC模式与MVC框架
4.2.1 Java MVC 模式
4.2.2 Java MVC框架
4.3 Java Web的核心技术——Servlet
4.3.1 Servlet 的配置
4.3.2 Servlet 的访问流程
4.3.3 Servlet 的接口方法
4.3.4 Servlet 的生命周期
4.4 Java Web 过滤器——filter
4.4.1 filter 的配置
4.4.2 filter 的使用流程及实现方式
4.4.3 filter 的接口方法
4.4.4 filter 的生命周期
4.5 Java反射机制
4.5.1 什么是反射
4.5.2 反射的用途
4.5.3 反射的基本运用
4.5.4 不安全的反射
4.6 ClassLoader类加载机制
4.6.1 ClassLoader类
4.6.2 loadClass()方法的流程
4.6.3 自定义的类加载器
4.6.4 loadClass()方法和Class.forName的区别
4.6.5 URLClassLoader
4.7 Java动态代理
4.7.1 静态代理
4.7.2 动态代理
4.7.3 CGLib 代理
4.8 Javassist动态编程
4.9 可用于JavaWeb的安全开发框架
4.9.1 Spring Security
4.9.2 Apache Shiro
4.9.3 OAuth2.0
4.9.4 JWT
第五章 “OWASP Top10 2017”漏洞的代码审计
5.1注入
5.1.1 漏洞简介
5.1.2 SQL注入
5.1.3 命令注入
5.1.4 代码注入
5.1.5 表达式注入
5.1.6 模板注入
5.1.7 小结
5.2失效的身份认证
5.2.1 漏洞简介
5.2.2 Webgoat8 JWT Token猜解实验
5.2.3 小结
5.3敏感信息泄露
5.3.1 漏洞简介
5.3.2 TurboMail 5.2.0敏感信息泄露漏洞
5.3.3 开发组件敏感信息泄露漏洞
5.3.4小结
5.4 XML 外部实体注入(XXE)
5.4.1 漏洞简介
5.4.2 读取系统文件
5.4.3 DoS攻击
5.4.4 Blind XXE
5.4.5 修复案例
5.4.6小结
5.5 失效的访问控制
5.5.1 漏洞简介
5.5.2 横向越权
5.5.3 纵向越权
5.5.4 小结
5.6 安全配置错误
5.6.1 漏洞简介
5.6.2 Tomcat 任意文件写入(CVE-2017-12615)
5.6.3 Tomcat AJP 文件包含漏洞(CVE-2020-1938)
5.6.4 Spring Boot 远程命令执行
5.6.5 小结
5.7 跨站脚本(XSS)
5.7.1 漏洞简介
5.7.2 反射型XSS
5.7.3 存储型XSS
5.7.4 DOM型XSS
5.7.5 修复建议
5.7.6小结
5.8 不安全的反序列化
5.8.1漏洞简介
5.8.2 反序列化基础
5.8.3漏洞产生的必要条件
5.8.4 反序列化拓展
5.8.5 Apache Commons Collections反序列化漏洞
5.8.6 FastJSON反序列化漏洞
5.8.7小结
5.9 使用含有已知漏洞的组件
5.9.1漏洞简介
5.9.2 Weblogic中组件的漏洞
5.9.3 富文本编辑器漏洞
5.9.4小结
5.10 不足的日志记录和监控
5.10.1漏洞简介
5.10.2 CRLF 日志注入
5.10.3未记录可审计性事件
5.10.4对日志记录和监控的安全建议
5.10.5小结
第六章 “OWASP Top10 2017”之外常见漏洞的代码审计
6.1 CSRF
6.1.1 CSRF简介
6.1.2 实际案例及修复方式
6.1.3 小结
6.2 SSRF
6.2.1 SSRF简介
6.2.2实际案例及修复方式
6.2.3小结
6.3 URL跳转与钓鱼
6.3.1 URL 跳转漏洞简介
6.3.2 实际案例及修复方式
6.3.3 小结
6.4 文件操作
6.4.1 简介
6.4.2漏洞发现与修复案例
6.4.3 小结
6.5 Web后门
6.5.1 简介
6.5.2 Java Web 后门案例讲解
6.5.3 小结
6.6 逻辑漏洞
6.6.1 简介
6.6.2 漏洞发现与修复案例
6.6.3 小结
6.7 前端配置不当
6.7.1 简介
6.7.2 漏洞发现与修复案例
6.7.3 小结
6.8 拒绝服务攻击
6.8.1 简介
6.8.2 漏洞发现与修复案例
6.8.3 小结
6.9 点击劫持漏洞
6.9.1 简介
6.9.2 漏洞发现与修复案例
6.9.3 小结
6.10 HTTP参数污染
6.10.1 简介
6.10.2 漏洞发现与修复案例
6.10.3 小结
第七章 Java EE开发框架安全审计
7.1 开发框架审计技巧简介
7.1.1 SSM框架审计技巧
7.1.2 Struts2框架审计技巧
7.1.3 SpringBoot框架审计技巧
7.2 开发框架使用不当范例(Struts2 远程代码执行)
第八章 JSPXCMS代码审计实战
8.1 JSPXCMS简介
8.2 安装
8.2.1 安装环境需求
8.2.2 安装步骤
8.3 目录结构及功能说明
8.3.1 目录结构
8.3.2 功能说明
8.4 第三方组件漏洞审计
8.5 单点漏洞审计
8.5.1 SQL 审计
8.5.2 XSS 审计
8.5.3 SSRF 审计
8.5.4 RCE 审计
8.6 本章总结
第九章 小话IAST与RASP
9.1 IAST简介
9.2 RASP简介
9.3 单机版OpenRASP Agent实验探究
9.3.1 实验环境
9.3.2 实验过程
9.4 OpenRASP Java Agent原理浅析
9.5 本章小结