当前位置: 首页 > news >正文

【Java代码审计】代码审计的方法及常用工具

【Java代码审计】代码审计的方法及常用工具

  • 代码审计的常用思路
  • 代码审计辅助工具
    • 代码编辑器
    • 测试工具
    • 反编译工具
    • Java 代码静态扫描工具

代码审计的常用思路

1、接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递过程,观察是否有参数校验不严的变量传入高危方法中,或者在传递的过程中是否有代码逻辑漏洞

2、危险方法溯源(“逆向追踪”):检查敏感方法的参数,并查看参数的传递与处理,判断变量是否可控并且已经过严格的过滤

3、功能点定向审计:根据经验判断该类应用通常会在哪些功能中出现漏洞,直接审计该类功能的代码

4、第三方组件、中间件版本比对:检查 Web 应用所使用的第三方组件或中间件的版本是否受到已知漏洞的影响

5、补丁比对:通过对补丁做比对,反推漏洞出处

6、“黑盒测试”+“白盒测试”:白盒测试少直觉,黑盒测试难入微。虽然代码审计的过程须以“白盒测试”为主,但是在过程中辅以“黑盒测试”将有助于快速定位到接口或做更全面的分析判断。交互式应用安全测试技术 IAST 就结合了“黑盒测试”与“白盒测试”的特点

7、“代码静态扫描工具”+“人工研判”:对于某些漏洞,使用代码静态扫描工具代替人工漏洞挖掘可以显著提高审计工作的效率。然而,代码静态扫描工具也存在“误报率高”等缺陷,具体使用时往往需要进一步研判

8、开发框架安全审计:审计 Web 应用所使用的开发框架是否存在自身安全性问题,或者由于用户使用不当而引发的安全风险


代码审计辅助工具

代码编辑器

1、Sublime

Sublime 是一款轻量级的、功能强大的代码及文本编辑器,允许用户以插件的形式拓展功能

2、IDEA (推荐)

IntelliJ IDEA 是由 Jetbrains 公司开发的一款 Java IDE,自带反编译、动态调试以及代码搜索等功能,为漏洞定位和挖掘提供了极大的便利。相比 Eclipse 需要安装相关插件才可以完成反编译等工作,IntelliJ IDEA 自带的强大功能更有利于我们进行代码审计

image.png

3、Eclipse

Eclipse 是 Java 开发者非常喜欢的工具之一,它具有强大的编辑、调试功能,允许开发人员安装不同的插件,从而拓展不同的功能。例如,基于 Eclipse 的 FindBugs漏洞扫描插件可以帮助开发者寻找应用程序中的各种 Bug

测试工具

1、Burp Suite

Burp Suite 是渗透测试工作者必备的一款工具,同时对于代码审计者和安全研究人员来说,这也是一款比较重要的测试工具,其跨平台、便捷、强大的功能以及丰富的插件,深受信息安全从业者的喜爱

2、SwitchyOmega

SwitchyOmega 是一款代理管理插件,支持 Firefox 和 Chrome 浏览器,并支持HTTP、HTTPS、socket4 和 socket5 协议。在日常实际测试工作中,常需要切换代理,SwitchyOmega 可以方便、快速地完成代理设置的切换

image.png

3、Postman

Postman 是一款功能强大的网页调试工具,能够为用户提供强大的 Web API &HTTP 请求调试功能。Postman 能够发送任何类型的 HTTP 请求,方便测试人员观察响应的内容

image.png

4、Postwomen

Postman 是一款便捷的 API 接口调试工具,但是由于其高级功能需要付费,因此 Postwomen 应运而生。Postwomen 是一个用于替代 Postman 且免费开源、轻量级、快速且美观的 API 调试工具。Postwomen 由 Node.js 开发,除支持主流的Restful 接口调试外,还支持 GraphQL 和 WebSocket

5、Ysoserial

Ysoserial 是一款开源的 Java 反序列化测试工具,内部集成有多种利用链,可以快速生成用于攻击的代码,也可以将新公开的反序列化漏洞利用方式自行加入 Ysoserial 中

image.png

6、Marshalsec

Marshalsec 是一款开源的 Java 反序列化测试工具,不仅可以生成各类反序列化利用链,还可以快速启动恶意的 RMI 服务等

7、Beyond Compare

Beyond Compare 是由 Scooter Software 推出的文件比较工具,主要对比两个文件夹或者文件,并以颜色标示差异,比较范围包括目录、文档内容等。使用该工具可以方便代码审计人员快速地比对两个版本代码的差别

反编译工具

1、JD-GUI

JD-GUI 是一款具有 UI 界面的反编译工具,界面简洁大方,使用简单方便

2、FernFlower

FernFlower 反编译工具的功能比 JD-GUI 更强大。该工具虽然没有 UI 界面,但可以配合系统指令完成批量反编译的工作

3、CFR

CFR 也是功能强大的反编译工具,支持主流 Java 特性 - Java 8 lambda 表达式,以及 Java 7 字符串切换。在某些 JD-GUI 无法反编译的情况下,CFR 仍然能完美地进行反编译,也可以像 FernFlower 那样配合系统指令进行批量反编译

4、IntelliJ IDEA

IntelliJ IDEA 反编译工具能够自动解包已添加依赖的 Jar 包,并对其内容进行反编译。该工具拥有强大的动态调试和字符串匹配和搜索功能,为审计和调试漏洞的工作提供了极大便利

Java 代码静态扫描工具

1、Fortify SCA

Fortify SCA 是获得业界认可的静态代码检查工具,但它是收费的。Fortify SCA的核心在于规则库,用户可以自定义规则库,减少误报

image.png

2、 FindBugs(SpotBugs) 与 FindSecBugs 插件

FindBugs 是一款 Bug 扫描插件,在 IDEA 和 Eclipse 中都可进行安装。FindBugs可以帮助开发人员发现代码缺陷,减少 Bug,但其本身并不具备发现安全漏洞的能力,需要安装 FindSecBugs 拓展发现安全漏洞的能力

SpotBugs是Findbugs的继任者(Findbugs已经于2016年后不再维护),所以二者用法基本一样,可以独立使用,也可以作为插件使用。SpotBugs 需要运行在 JDK1.8 以上的版本,可以分析 JDK1.0~1.9版本编译的 Java 程序

IDEA安装SpotBugs插件:

image.png

下载https://find-sec-bugs.github.io/download.htm,用于安全检测的支持:

image.png

SpotBugs添加FindSecBugs规则库:

image.png

添加成功:

image.png

可根据需求选取要扫描的相关主题,风险警告和准确率,如图配置选择进行安全漏洞扫描。我们这里关注安全类型的 bug,所以勾选 “Security” 选项。默认报告配置最低风险警告(Minimum rank)是20,准确率(Minimum confidence)是 Medium

image.png

在项目目录右键会发现多了一个 “SpotBugs” 选项,可以选择分析某个模块或者整个项目。选择如下所示选项后便开始进行安全扫描:

image.png

扫描结果:

image.png

相关文章:

【Java代码审计】代码审计的方法及常用工具

【Java代码审计】代码审计的方法及常用工具 代码审计的常用思路代码审计辅助工具代码编辑器测试工具反编译工具Java 代码静态扫描工具 代码审计的常用思路 1、接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递过…...

我国吻合器市场规模不断扩大 国产化率有所增长

我国吻合器市场规模不断扩大 国产化率有所增长 吻合器是替代手工切除或缝合的一种医疗器械,其工作原理与订书机十分相似,可利用钛钉对组织进行离断或吻合。经过多年发展,吻合器种类逐渐增多,根据手术方式不同,吻合器大…...

深度剖析Comate智能产品:科技巧思,实用至上

文章目录 Comate智能编码助手介绍Comate应用场景Comate语言与IDE支持 Comate安装步骤Comate智能编码使用体验代码推荐智能推荐生成单测注释解释注释生成智能问答 Comate实战演练总结 Comate智能编码助手介绍 市面上现在有很多智能代码助手,当时互联网头部大厂百度也…...

Centos 7.9 配置VNCServer实现远程vnc连接

文章目录 1、Centos安装图形界面1.1、安装X Windows System图形界面1.2、安装GNOME图形界面 2、VNC SERVER配置2.1、VNC SERVER安装2.2、VNC SERVER配置1)创建vnc配置文件2)修改配置文件内容3)完整配置文件参考 2.3、设置vnc密码2.4、配置防火…...

设计模式-08 - 模板方法模式 Template Method

设计模式-08 - 模板方法模式 Template Method 1.定义 模板方法模式是一种设计模式,它定义了一个操作的骨架,而由子类来决定如何实现该操作的某些步骤。它允许子类在不改变算法结构的情况下重定义算法的特定步骤。 模板方法模式适合用于以下情况&am…...

Android 适配阿拉伯语之vector图标镜像

Android 适配阿拉伯语之vector图标镜像 android:autoMirrored“true” 属性简单而直接的方法来自动处理 RTL 环境中图标的翻转。 使用 android:autoMirrored“true” 在 Vector Drawable 中是一种非常方便的方法,因为它允许你使用相同的 drawable 资源来适应不同的…...

推荐4个可用的github国内镜像

Github是全球最大的代码托管云平台,超过1亿用户在平台上分享代码及数据,深受生物信息学软件开发者的喜爱,并且现在发表文章,若涉及到代码,编辑还要求我们把代码及数据存放在github上,以便检查数据的真实性和…...

从项目开始学习Vue——02(若依框架)

往期: 从项目开始学习Vue——01 目录标题 一、基础插件(一)路由Vue Router(二)导航守卫(路由拦截器)二、Vuex(一)什么是VuexVuex的部分介绍内容: &#xff08…...

使用JavaScript日历小部件和DHTMLX Gantt的应用场景(二)

DHTMLX Suite UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件,这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用…...

springboot整合redis多数据源(附带RedisUtil)

单数据源RedisUtil(静态) 单数据源RedisUtil,我这里implements ApplicationContextAware在setApplicationContext注入redisTemplate,工具类可以直接类RedisUtil.StringOps.get()使用 package com.vehicle.manager.core.util;import com.alibaba.fastjson.JSON; import lombok.e…...

Web实时通信的学习之旅:SSE(Server-Sent Events)的技术详解及简单示例演示

文章目录 一、什么是SSE二、SSE技术的基本原理三、SSE适用于场景四、Node服务端示例1、协议2、格式3、事件3.1、事件3.2、事件唯一标识符3.3、重连事件 4、具体示例 五、客户端示例1、检测客户端是否支持SSE2、创建客户端连接3、事件监听4、接收事件5、自定义事件6、错误处理7、…...

Apache Flume事务

Apache Flume 中的事务处理是指 Flume Agent 在处理事件流时的一种机制,用于确保数据的可靠传输和处理。 1. 事务概述: Flume 中的事务是指一组事件的传输和处理,这些事件在传输过程中要么全部成功完成,要么全部失败&#xff0…...

根据部门id删除该部门下的员工(事务)

application.properties: 或: application.yml: 新表: 日志对象类: 日志service类: 日志service接口: 日志mapper类: 部门service类: 员工mapper类:...

Java之String类

一、String类常用方法 1.引用类型的比较 我们知道在Java中两个引用遍历是不能用" "号来比较的,而String类重写了父类objects的equals方法, 实现了引用类型的比较 例子 import java.util.Scanner; public class Main { public static void…...

es终止快照恢复进程的方法

方法1、删除索引可以终止,恢复进程。 DELETE index_* // 按通配符删除以index_开头的索引 DELETE _all // 删除全部索引 POST *,-.*/_close 关闭索引 POST *,-.*/_open 打开索引 DELETE *,-.* 删除全部索引方法2、强制重启es 集群也可也终…...

ubantu安装rabbbitmq

ubantu安装rabbbitmq 安装Erlang1、在linux下直接安装2、上传Erlang文件后解压 安装rabbitmq开启web管理接口创建用户及修改guest密码,删除guest默认账号 安装Erlang 1、在linux下直接安装 #运行以下命令直接安装: sudo apt-get install erlang#可运行…...

了解 条码工具 Dynamsoft 在条码读取器中的形态运算

在图像处理中,术语形态学是指分析形状以填充小孔、去除噪声、提取轮廓等的一组操作。形态学操作很像空间卷积中的过滤过程。有两个部分在起作用:结构元素和预定义的计算规则。 点击下载Dynamsoft最新版https://www.evget.com/product/3691/download 结…...

NIO和NIO.2对比

Java NIO (New Input/Output) 是从Java 1.4版本开始引入的一个新的I/O API,用于替代原来的BIO(Blocking I/O)API。NIO提供了更加灵活和高效的网络通信方式,特别适合于高吞吐量的网络编程。NIO的主要特点是非阻塞模式,它…...

Google准备好了吗?OpenAI发布ChatGPT驱动搜索引擎|TodayAI

在科技界波澜壮阔的发展中,OpenAI正式宣布其最新突破——一个全新的基于ChatGPT技术的搜索引擎,旨在直接挑战谷歌在搜索领域的统治地位。这一创新将可能彻底改变用户上网搜索的方式。 据悉,这款AI驱动的搜索引擎利用了ChatGPT的强大功能&…...

乐观锁、悲观锁、互斥锁、读写锁

乐观锁和悲观锁是两种不同的锁机制,用于在多线程环境下解决资源竞争问题。互斥锁和读写锁是两种常见的锁类型,它们都可以用来实现乐观锁或悲观锁。 乐观锁 是一种无锁机制,它假设在多线程环境下对共享资源的操作不会发生冲突,因…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

C++使用 new 来创建动态数组

问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...