🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 代码层面分类 1. 常规性代码 1. 框架性代码 ( 各种各样的开发框架) (最常见的 框架漏洞是 struts2 框架漏洞 ) 1. 中间件代码 漏洞 (中间件:apache、tomcat、weblogic、negix 等等 ) ## JavaWeb的执行流程 **context-param——> listener——>filter——>servlet** * **context-param** 该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。 * **listener** 该元素用来注册一个监听器类。可以收到事件什么时候发生以及用什么作为响应的通知。事件监听程序在建立、修改和删除会话或servlet环境时得到通知。常与context-param联合使用。 * **filter** 用于指定WEB容器的过滤器, filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应;在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;根据程序需要修改请求和响应;在servlet被调用之后截获servlet的执行。 **(进行java 源代码审计,需要先看源代码, 是否有过滤器。过滤器是怎样写的,起到什么作用 )** * **servlet** 创建并返回一个包含基于客户请求性质的动态内容的完整的html页面; 创建可嵌入到现有的html页面中的一部分html页面(html片段); 读取客户端发来的隐藏数据; 读取客户端发来的显示数据; 与其他服务器资源(包括数据库和java的应用程序)进行通信; ## 框架内命名思路 **公司项目, copyright由项目发起的公司所有** * 包名为**com.公司名.项目名**   模块名….. * 持久层:dao、 persist、 mapper * 实体类: entity.、model、bean、 javabean、pojo * 业务逻辑: service、biz * 控制器: controller、 servlet、 action、web * 过选器:filter * 异常: exception * 监听器:listener **不同功能的Java文件放在不同的包中,根据Java文件的功能充一安放及命名。** ## Java Web项目运行流程 ![](https://img.kancloud.cn/79/4b/794bf89c7a79bcadfaa35bcd1728be46_1086x1468.png) ## 人工java审计思路 一、根据业务功能审计 优点: 1、明确程序的架构 以及业务逻辑,明确数据流向。 2、可以从获取参数-->表现层->业务层一>持久层,通读源码 缺点:耗时 二、根据敏感函数审计 优点:可以快高效的挖出想要的漏洞,判断敏感函数上下文,追踪参数源头 缺点:覆盖不了逻辑漏洞,不了解程序的基本框架 ## 审计开始前 **1、确定框架** 通过以下三种方式确定框 ``` 1、web.xml 2、看导入的 jar包 或者 pom.xml 3、看配置文件 ``` **举例:** ``` Struts2 配置文件: struts.xml Spring 配置文件: applicationContext,xml Spring MVC 配置文件: spring-mve,xml Hibernate 配置文件: Hibernate.cfg,xml Mybaits 配置文件: mybatis-config,xml ``` **2、查看是否存在栏截器** 通过查看 web.xml 文件,确定是否配置相关拦截器。 * 如果有过滤器,那么这个项目的源码就会受到 过滤器的保护 * 被攻击时,会受到过滤器的拦截 ## **Fortify\_SCA代码自动审计神器** ![](https://img.kancloud.cn/c5/25/c5254b330a192212f15fc1ae9b2b8108_517x336.png)