| |
|
开发:
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 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |