入门知识

总体目标方向

先熟悉一些基本的流程

安装配置对应环境与分析工具

常规漏洞代码审计分析

一些框架漏洞代码审计分析

学习方向

个人认为主要的方向如下:
	
	学习了解java的基本使用
	
	学习掌握常见Web漏洞的原理(注入、XSS、SSRF等)
	
	学习审计常见漏洞
	
	学习审计中间件框架的知识(weblogic、fastjson等)

代码审计流程

配置分析环境
	没什么说的,没环境还分析个锤子
	
熟悉业务流程
	功能总体分为多少块,每一块的功能代码是如何实现的
	
分析程序架构
	比如说是MVC,每一层用了哪些第三方的架构,每一层用了哪些第三方的插件
	
工具自动化分析
	先使用工具对代码扫描一遍
	
人工审计结果(分两种)
		
	验证工具扫描结果,排除误报
		
	时间充裕的情况下,从前端jsp页面到后边参数的传递,到参数接收过滤处理,
	到返回前端结果,每一步都要研究明白,分析可能存在的问题。

War包

作用:

Web网站发布到中间件(tomcat、web logic等)部署,都是以war包的形式。

中间件服务器将war包进行解析,假如我们能拿到这些war包,

就可以反编译后进行代码审计

结构:

JAVA代码上线评审 java源代码审计_中间件

主要的审计过程都在Class文件

Java的内置对象

我们知道java之中的对象的使用一般都是要先new一下,在使用。

但是其包含九大内置对象,无需声明(new)而直接使用。

		Request(请求)
		Response(相应)
		PageContext(在jsp中直接使用的java代码)
		
		Session(回话)
		Application(两个页面交互使用的共享对象)
		Out(直接输出的对象)
		
		Config
		Page
		Exception

Java中危险的函数

getParameter()		
	获取传入的参数,主要看看是否存在过滤,
	假设没有任何过滤,而是直接拿来使用,那么就极有可能存在漏洞

getcookies()
	主要是看函数获取会话是干嘛的,假设仅仅是用来做对比和校验,
	那或许不存在风险,但是假设是将拿到的会话保存到数据库中就很危险。
	
	因为获取到的会话是从前端传递过来的,是不可信且存在风险的。

getQueryString()
	数据库语句执行而get的一个字符串

get headers()
	获取前端传值数据包头的值

Runtime.exec()
	可以直接执行系统命令

logger.info
	输出的命令,存在信息泄露的风险

三个关键字

Password
	存在泄露的风险
	
Upload
	上传相关漏洞
	
Download
	下载相关漏洞