小迪 2020-6    第55天

java 审批流实例 java实现逐级审核_java 审批流实例

如果去分析代码:工具 加 手工 相结合的方法进行分析

Java代码审计,主要从代码层面分析:

主要分为三大类:1、常规性代码    

                           2、框架性代码 ( 各种各样的开发框架)

                                                  (最常见的 框架漏洞是  struts2 框架漏洞  )

                           3、中间件代码 漏洞  (中间件:apache、tomcat、weblogic、negix 等等 )

java 审批流实例 java实现逐级审核_java 审批流实例_02

java 审批流实例 java实现逐级审核_xml_03

必备知知识点

1、简要理解 JAVA web 项目组成

2、代码方面,框架方面,中间件容器方面等

3、简要理解JAVAweb 执行流程

参考下图

3.     Java Web项目运行流程

3.       javaWeb的执行流程

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 :

4、公司项目, copyright由项目发起的公司所有

包名为 com.公司名.项目名

java 审批流实例 java实现逐级审核_java_04

5、持久层:dao、 persist、 mapper

6、实体类: entity.、model、bean、 javabean、pojo

7、业务逻辑: service、biz

8、控制器: controller、 servlet、 action、web

9、过选器:filter

10、异常: exception

11、监听器:listener

12、在不同的框架下一般旬的命名规则不同,但大概如上,不同功能的Java文件放在不

同的包中,根据Java文件的功能充一安放及命名。

Java Web项目运行流程:

java 审批流实例 java实现逐级审核_xml_05

人工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 文件,确定是否配置相关拦截器。

(如果有过滤器,那么这个项目的源码就会受到 过滤器的保护 )

(被攻击时,会受到过滤器的拦截 )

案例一、简易Demo段SQL注入及预编译

java 审批流实例 java实现逐级审核_xml_06

对 JAVA 进行代码审计,使用的工具: idea    或者 myeclipse 

常规的java 代码 是由 jsp 格式 去 书写的 ,或者 java 格式

(最要看该项目是否 引用 其他框架,如果没有引用其他框架,那么大部分格式 就是 jsp

   引用框架就要考虑 框架使用了什么 格式,可能包括 java 、jar 等 格式 )

Java 的 web 页面的代码,通常在 src 文件夹下

java 审批流实例 java实现逐级审核_xml_07

1、src

2、main

3、webapp (web 页面的代码 在这个目录下面 )

包名为 com.公司名.项目名

java 审批流实例 java实现逐级审核_java 审批流实例_08

代码审计,通常只看 java  和 webapp   这两个目录。

如果看到jar 文件,需要先进行反编译。再进行查看源码。

或者直接将 jar 文件 拖到 idea 工具里面,自动进行反编译。

java 审批流实例 java实现逐级审核_xml_09

java 审批流实例 java实现逐级审核_xml_10

java 审批流实例 java实现逐级审核_xml_11

预编译机制 是防止 sql 注入 漏洞,最有效的一种防御机制

(但,预编译也是可以绕过的 ,需要看情况,并非所有都可以绕过 。大部分的预编译 是绕过不了的

代码审计 是否存在 sql 注入漏洞,需要看sql 语句是否使用 预编译

如果是直接 调用 参数 ,那么就是不安全的。

但并非 直接 调用 参数 的sql语句 就一定会存在 sql注入漏洞,因为代码中可能 还存在 过滤器。

java 审批流实例 java实现逐级审核_java_12

查看 是否 有 过滤器 的关键字 :filter

找到 有过滤器,然后对过滤器的代码进行分析,上面的sql 语句的参数  是否受到过滤器的 影响。

如果没有影响,那么上面就可能存在 sql 注入漏洞。

案例二、IDEA审计插件 FindBugs安装使用

FindBugs最要是用来 找bug,但也可以找安全漏洞的功能

    参考连接

java 审批流实例 java实现逐级审核_java 审批流实例_13

点击开始,就会自动分析 是否存在相关漏洞。

java 审批流实例 java实现逐级审核_java_14

(这个插件,不能分析 jsp 文件,只能分析java 格式的文件 )

案例三、Fortify_SCA代码自动审计神器使用

使用工具 跑一下,然后根据工具 给出的提示,分析代码。

java 审批流实例 java实现逐级审核_Java_15

java 审批流实例 java实现逐级审核_Java_16

java 审批流实例 java实现逐级审核_xml_17

java 审批流实例 java实现逐级审核_xml_18

java 审批流实例 java实现逐级审核_Java_19

java 审批流实例 java实现逐级审核_Java_20

java 审批流实例 java实现逐级审核_xml_21

java 审批流实例 java实现逐级审核_java_22

java 审批流实例 java实现逐级审核_java 审批流实例_23

案例四、Ofcms后台SQL注入  全局搜索关键字

案例五、Ofcms后台任意文件上传  ,功能点测试

java 审批流实例 java实现逐级审核_java 审批流实例_24

3.     Java Web项目运行流程

3.       javaWeb的执行流程