信息资料共享
学习网络安全的一些良好习惯
网安常用在线工具
下载的课程资料提示病毒,被拦截隔离怎么办?
学习网络安全需要什么电脑配置?
简历优化指导
怎么提高学习效率(加快学习速度)
八大学习方法打造学习力
打鸡血合集(没有动力,坚持不下去)
看课程容易分神、犯困的问题
黑客故事系列
网络安全术语大全
网络安全常用字典合集
Linux常用命令
Linux常用命令在线查询
windows常用命令
Docker常用命令
pip常用命令
Redis常用命令
网络空间搜索引擎
漏洞情报/威胁情报
漏洞文库合集(离线镜像)
漏洞文库大全
网络安全考什么证书比较好?
如何查看学习路线
云服务器(VPS/ECS)在学习网络安全中的用途
中间件/框架/组件/CMS/OA相关漏洞课程汇总
课程中的Java相关漏洞
Java代码审计总结
最新国标文档查阅
安全测试案例库(测试点)
护网日薪过千是骗局吗?
HW研判指南
历年护网时间
软考中级信息安全工程师怎么备考
下载软件如何避免下载捆绑软件、安装器、全家桶
常见安全社区论坛、公众号、博客
【汇总】云安全技术资料
k8s渗透测试资料汇总
信创资料(信创安全)
Web漏洞知识点总结(Excel版本)
CentOS7停止维护,如何选择系统
PHP伪协议参考资料
Online_tools-master的工具
IDEA激活码
Cobalt Strike CS中文版本
支持Kali的无线网卡
C盘满了怎么办?
javascript代码美化
应急响应靶场(靶机)
【KMS】Windows/Server/Office/Vision/Project激活
win10/windows10激活工具
微软补丁下载
SQL语句练习网站
Kali工具与课程对应关系
shodan会员账号怎么买
CSDN资料下载、专栏文章查看
BurpSuite常用插件
Oracle SQL注入靶场
2023年SRC BP2022.8版本
JDK大全
java jdk api文档下载
无涯老师上课用的机械键盘
勒索软件解密工具大全
metasploitable-linux-2.0.0靶机使用方法
Windows如何显示文件扩展名(后缀)和隐藏文件
PDF处理工具
攻击非法网站(菠菜等)违法吗?
暗链检测工具
Office2013及破解工具下载
HTTP常见请求头和响应头字段
编写SQL语句的一些常见误区
Host碰撞资料
本文档使用 MrDoc 发布
-
+
首页
Java代码审计总结
# 一、搭建运行环境 拿到项目源码以后,先导入代码,运行数据库(比如MySQL)和其他依赖系统(比如Redis、Kafka),然后启动工程 # 二、pom.xml 依赖jar包漏洞检查 如果依赖的jar包有漏洞,会导致项目存在漏洞,比如`log4j`、`shiro`、`struts2`等等。 可以使用 OWASP 的 `Dependency-Check` 工具,可以检查pom.xml里面有漏洞的jar包 参考资料: https://www.cnblogs.com/linyb-geek/p/16106789.html # 三、IDEA基本操作 文件内搜索:Ctrl+F 全局搜索:Ctrl+Shift+F 搜索文件名:双击Shift 查看上一级调用函数或者定义:CTRL+左键、Ctrl + B 查看引用:AL+F7 或者直接右键 查看当前文件结构:Ctrl + F12 上一个或者下一个位置:Ctrl + Alt + ← → 查看类结构图:右键Diagrams Debug技能: Step Into 单步进入:F7 Step Over 单步跳过:F8 Step Out 单步跳出:Shift + F8 F9 恢复程序,跳到下一个断点 # 四、手工审计 参考《Java代码审计》课程里面的各种漏洞的特征、搜索关键字 目前覆盖到的漏洞: ## 1、SQL注入漏洞 1、从用户输入到后端代码 2、搜索关键词,回溯参数: `select|insert|update|delete|java.sql.Connection|Statement|.execute|.executeQuery|jdbcTemplate|queryForInt|queryForObject|queryForMap|getConnection|PreparedStatement|Statement|execute|jdbcTemplate|queryForInt|queryForObject|queryForMap|executeQuery|getConnection` 搜索关键函数: `setObject()、setInt()、setString()、setSQLXML()` 对于MyBatis: 搜索Mapper.xml文件中的`${` order by 绕过预编译,对于MyBatis: 搜索`order by ${` %和IN查询绕过预编译 对于MyBatis: 搜索`like '%${` 和 `IN ${` 过滤绕过 分析、测试过滤代码 ## 2、SSTI服务端模板注入漏洞 1、对参数进行FUZZ `ssti-payload.txt` 2、工具:SSTImap ``` git clone https://github.com/vladko312/SSTImap.git cd SSTImap pip install requirements.txt python sstimap.py -u http://localhost:8090/path?lang=en python sstimap.py -u http://localhost:8090/fragment?section=1 python sstimap.py -u http://localhost:8090/doc/ ``` 3、SSTI漏洞审计 1、从pom文件或者readme文档找相关依赖 2、分析Controller,重点内容 ——1)return内容可控 ——2)URL路径可控 ## 3、文件操作漏洞 1、如何找到文件操作代码位置? 关键字——工具类——service——controller——前端界面 2、如何分析是否存在漏洞?(操作限制) 文件操作审计关键词 ``` java.io.FileInputStream java.io.FileOutputStream java.io.RandomAccessFile org.apache.commons.fileupload——Apache包名 org.apache.commons.fileupload.disk.DiskFileItemFactory org.apache.commons.fileupload.FileUploadBase org.apache.commons.io.FileUtils FileItemIteratorImpl——以上类的内部类 FileItemStreamImpl——以上类的内部类 org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity——httpclient类 org.springframework.web.multipart.MultipartFile——Spring文件处理类 org.springframework.web.multipart.MultipartHttpServletRequest com.oreilly.servlet.MultipartRequest——cos包 javax.servlet.http.Part——servlet包 java.nio.channels.AsynchronousFileChannel sun.nio.ch.FileChannelImpl——nio包 sun.nio.fs.CopyFile sun.nio.fs.UnixChannelFactory sun.nio.fs.WindowsChannelFactory FileUpload——常见类名 UploadHandleServlet——常见类名 FileLoadServlet——常见类名 filePath/download/deleteFile/move/getFile mkdirs getOriginalFilename() getPath()、getAbsolutePath()、getWriter()、getFile() Files.readAllBytes、Files.readAllLines upload、download、write、fileName、filePath、deleteFile ``` 文件上传 主要是分析黑名单扩展名拦截、白名单扩展名拦截、HTTP Header的Content-Type验证、文件头验证、二次渲染等。 文件写入 文件的内容和文件的保存路径,是否可控。 文件下载/文件读取/文件删除 是否限制了可操作文件的路径,文件类型,文件所有者;是否将敏感文件进行了排除。 ## 4、代码执行漏洞 审计关键字:类、函数名 ``` java.lang.Runtime.getRuntime().exec Reflection、getMethod().invoke() java.lang.ProcessBuilder.start() java.lang.ProcessImpl java.lang.UNIXProcess ScriptEngine、ScriptEngineManager、GroovyShell、GroovyClassLoader Compiler Executor eval …… ``` 审计关键字:参数名 ``` request.getParameter("xxx") @RequestParam @RequestBody @PathVariable exec=、command=、execute、ping=、include=、exclude=、jump=、code=、reg=、do=、func=、arg=、option=、load=、process=、step=、read=、function=、req=、feature=、exe=、module=、payload=、run=、print=…… ``` 其他审计点 ``` 1、代码里面直接或者间接使用了执行命令的函数,比如exec()、反射 2、由脚本语言引起,比如Groovy、JavascriptEngine 3、表达式注入引起,比如OGNL、SpEL、MVEL、EL、Fel、JST+EL等 4、服务端模板注入引起,比如Freemarker、Velocity、Thymeleaf 5、第三方组件的反序列化引起,比如Fastjson、Shiro、Struts2、Weblogic、Xstream 6、JNDI注入引起,比如Fastjson、Log4j、Kafka 7、上传webshell、注入内存马、反弹shell…… …… ``` ## 5、XXE漏洞 | 类型 | 代码 | 描述 | | --- | --- | --- | | DOM | DOMParser | JDK自带,树形解析器 | | SAX | SAXParser | JDK自带,流式解析器 | | JAXB | JAXBParser | JDK自带,支持注解 | | jdom2 | JDOMParser | dom4j-2.0.1.jar | | DOM4J | DOM4JParser | jdom-2.0.2.jar | 白盒审计(源代码审计) 1、搜XML解析相关的关键字,包括包名、类名、方法名、变量名等 2、检查有无相关安全设置,是否禁用DTD和外部实体解析 3、分析调用链,寻找可控参数入口(倒推) (静态代码审计工具) # 五、审计工具 IDEA插件:墨菲安全 https://www.cnblogs.com/ios9/p/16224691.html 审计工具:`Fotify SCA` 注意:工具都会有误报的情况,必须在项目运行的情况下进行验证
无涯
2024年8月23日 10:44
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码