代码审计的源码获取
-
通过fofa进行指纹识别提取关键指纹
-
将获取到的关键信息去github和gitee进行获取
-
源码网站如站长之家,zuidaima.com,bbs52jscn.com
-
拖源码,获取目标权限拖源码
-
同指纹站点目录扫描
代码审计工具
-
SpotBugs
-
fortify scan
代码审计流程
访问流程(根据各个流程可能出现的漏洞针对性审计)
首先如果要进行代码审计那就还是要先理解下web访问流程
-
web前端访问(参数传入)
-
filter--->servlet---->controller(参数控制,过滤)
-
service(业务功能处理调用)
-
dao (调用底层jdbc 持久化)
第三方依赖 如pom.xml中引入的依赖 去看网上是否有已出现的漏洞进行比对poc测试。
代码审计方法
- 如下对关键字全局查找溯源,最常用的方式
- 密码硬编码、
Password、pass、jdbc
- 密码明文存储
- xss
getParamter、<%=、param
- SQL注入
select、 dao、from、delete、update、insert
- 任意文件下载
download、fileName. filePath.write. getFile、getWriter
- 任意文件删除
delete、deleteFile、fileName、filePath
- 文件上传
upload、write、 fileName、filePath
- 命令注入
getRuntime.exec. cmd、 shell、 processBuilder.star
- XML注入
DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser、SAXReader、XMLReader、SAXSource,``
TransformerFactory、SAXTransformerFactory.SchemaFactory` - JNDI注入
lookup
- 反序列化漏洞
ObjectlnputStream.readObject、ObjectInputStream.readUnshared、XMLDecoder.readObject. Yaml.load、XSream.fromXML、ObjectMapper.readValue、JSON.parseObject
- url跳转
sendRedirect. setHeader、forward
- 日志记录敏感信息
log、log.info、logger.info
- 密码硬编码、