可爱柚
keaiu.com

代码审计之路之白盒挖掘机

Java审计其实和PHP审计的思路一样,唯一不同的可能是复杂的框架和代码。
1.正向跟踪
从数据层查找变量,一级一级调用,最后到控制器,这种相对简单、快速。
2.逆向思维,追踪变量,对象调用
查找变量,有没有传参数,是谁调用了这个变量,又是谁调用了这个方法,先从控制器找变量,然后逆着找方法,调用关系,最后到DAO层数据。这种方法一般比较浪费时间,跟踪到最后可能发现变量不可控。
3.直接挖掘漏洞点
比如搭建后,访问平台,发现有上传的功能,直接去控制器找上传相关代码,进行审计。
4.通读全文代码
这是最纯粹、最直接的方式。
SQL注入
大多数JavaEE网站,用的相对多的是SpringMVC架构,那么用到的Mybatis框架就会比较多,所以搜索SQL关键字就是”${}”优先,其次是以下的关键字。
如果是SpringBoot ,可能会使用注解等方式,如:
@query(selectid from user where name = ?);
以上语句写了”?”,则代表是预编译语句,就不会产生注入,如果写的是变量,就可能产生注入了。 
${}
select
insert
update
in
like
obderby
statement
文件上传
在文件上传功能中,先看框架——比如Spring框架,默认不会解析jsp文件。然后看代码有没有定义黑名单数组等等。
org.apache.comons.fileupload
file
xxxstream
RequestMethod
MultipartHttpServletRequest

xss

getParamter
<%=
param
el表达式

 

目录遍历

path
System.GetProperty("yser.dir")
fileInputStream
file.read
filePath

xml注入类似xxe

DocumentBuilder
XMLStreamReader
SAXBuilder
SAXParserSAXReader 
XMLReader
SAXSource
TransformerFactory
SAXTransformerFactory
SchemaFactory

命令执行

ProcessBuilder
start
Runtime
getRuntime
exec

序列化

readObject
readUnshared
XMLDecoder.readObject
Yaml.load
XStream.fromXML
ObjectMapper.readValue
JSON.parseObject

任意文件删除

delete

逻辑漏洞没什么关键字,可以去看User控制器,或者看过滤器,寻找有无校验。

打赏
转载请标注文章来源>可爱柚 » 代码审计之路之白盒挖掘机

请柚子喝肥宅快乐水

微信扫一扫打赏