IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA代码审计 -> 正文阅读

[Java知识库]JAVA代码审计

小迪 2020-6??? 第55天

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

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

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

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

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

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

必备知知识点

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.公司名.项目名?? 模块名…..

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

一、根据业务功能审计

优点:

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

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

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

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

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

1、src

2、main

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:44:42  更:2021-07-14 10:45:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:29:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码