JAVA代码审计

JAVA代码审计小迪2020-6第55天如果去分析代码:工具加手工相结合的方法进行分析Java代码审计,主要从代码层面分析:主要分为三大类:1、常规性代码2、框架性代码(各种各样的开发框架)(最常见的框架漏洞是struts2框架漏洞)…

大家好,欢迎来到IT知识分享网。

小迪 2020-6    第55天

JAVA代码审计

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

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

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

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

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

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

JAVA代码审计

JAVA代码审计

必备知知识点

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

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

3、简要理解JAVAweb 执行流程

参考下图

3.https://www.cnblogs.com/1987721594zy/p/9186584.html     Java Web项目运行流程

3.https://blog.csdn.net/weily11/article/details/80643472       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 : 创建并返回一个包含基于客户请求性质的动态内容的完整的html页面; 创建可嵌入到现有的html页面中的一部分html页面(html片段); 读取客户端发来的隐藏数据; 读取客户端发来的显示数据; 与其他服务器资源(包括数据库和java的应用程序)进行通信;

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

包名为 com.公司名.项目名   模块名…..

JAVA代码审计

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审计思路

一、根据业务功能审计

优点:

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 进行代码审计,使用的工具: idea    或者 myeclipse 

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

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

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

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

JAVA代码审计

1、src

2、main

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

包名为 com.公司名.项目名   模块名…..

JAVA代码审计

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

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

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

JAVA代码审计

JAVA代码审计

JAVA代码审计

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

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

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

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

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

JAVA代码审计

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

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

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

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

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

https://www.cnblogs.com/kingsonfu/p/12419817.html    参考连接

JAVA代码审计

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

JAVA代码审计

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

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

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

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

JAVA代码审计

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

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

JAVA代码审计

3.https://www.cnblogs.com/1987721594zy/p/9186584.html     Java Web项目运行流程

3.https://blog.csdn.net/weily11/article/details/80643472       javaWeb的执行流程

3.https://www.cnblogs.com/kingsonfu/p/12419817.html

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/12894.html

(0)
上一篇 2024-03-09 21:00
下一篇 2024-03-10 14:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信