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

news2024/12/26 9:33:32

【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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1662120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3DGS+3D Tiles融合已成 ,更大的场景,更细腻的效果~

最近国外同行Kieran Farr发布了一个他制作的3D GussianSplatting(高斯泼溅)Google Map 3D Tiles的融合叠加的demo案例(如下所示)。 准确来说这是一个数据融合的实景场景,该实景场景使用了倾斜三维和3D GussianSplatting两种实景表达技术&…

深入理解Java TreeSet:实现与使用案例分析

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

【WPF学习笔记(一)】WPF应用程序的组成及Window类介绍

WPF应用程序的组成及Window类介绍 WPF应用程序的组成及Window类介绍前言正文1、WPF介绍1.1 什么是WPF1.2 WPF的特点1.3 WPF的控件分类 2、XAML介绍2.1 XAML的定义2.2 XAML的特点2.3 XAML的命名空间 3、WPF应用程序组成3.1 App.config3.2 App.xaml3.3 App.xaml.cs3.4 MainWindow…

react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)

技术要点 动态样式 className{tabItem ${currentType item.value && "active"}}安装 lodash npm i --save lodash使用 lodash 对对象数组排序(不会改变源数组) _.orderBy(dataList, "readNum", "desc")src\De…

十二种网络威胁防护方案

一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任…

Python之数据分析基础

导言: “21世纪的竞争是数据的竞争,谁掌握数据,谁就掌握未来”。如何将大量看似杂乱无章的数据进行聚合,并发现潜在的规律也变得越来越重要。本文将先说明数据分析的步骤,再通过python完成实例数据的处理、分析最终展…

19.接口自动化-Jekins学习

1.CI-持续集成 频繁的(一天多次)将代码集成到主干 目的:让产品快速迭代,保持高质量 好处: 快速发现错误,每次更新都集成到主干,可以快速发现错误,定位错误也容易防止分支大幅偏离主…

示波器基础1-带宽

数字示波器最重要的基本特征之一是其带宽,了解带宽及其对技术指标的影响对于选择合适的示波器非常有帮助。 这里我们对示波器带宽的一些基本方面做一简要介绍。 当我们谈到示波器的带宽时,重要的是要区分模拟带宽和数字带宽。模拟带宽主要受仪器模拟输入…

TriCore: Architecture

说明 本文是 英飞凌 架构文档 TriCore TC162P core archiecture Volume 1 of 2 (infineon.com) 的笔记,稍作整理方便查阅,错误之处,还请指正,谢谢 :) 1. Architecture 2. General Purpose & System Register 名词列表&#…

Spring Cloud Alibaba 网关 Gateway 集成(7)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

用标准的GNU/Linux命令替换Alpine上的精简版命令

Alpine Linux 是一个基于 musl libc 和 busybox 的轻量级Linux发行版,busybox 实现了很多常用类Unix命令的精简版,特点是体积很小,舍弃了很多不常用参数,我们简单对比一下标准Linux自带的 date 命令 和 Alpine下默认的 date 命令便…

Babel基础知识及实现埋点插件

目录 前言 AST 遍历 Visitors Paths(路径) Paths in Visitors(存在于访问者中的路径) State(状态) Scopes(作用域) Bindings(绑定) API babylo…

LeetCode 112. 路径总和 || LeetCode 113. 路径总和ii

LeetCode 112. 路径总和 1、题目 题目链接:112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true…

唤醒手腕 Go 语言 并发编程、Channel通道、Context 详细教程(更新中)

并发编程概述 ​ 一个进程可以包含多个线程,这些线程运行的一定是同一个程序(进程程序),且都由当前进程中已经存在的线程通过系统调用的方式创建出来。进程是资源分配的基本单位,线程是调度运行的基本单位&#xff0c…

CentOS 7安装配置docker

CentOS 7、8安装、配置docker 这里宿主机的型号选择是centos7.9.2009的版本 1.宿主机关闭防火墙和selinux,配置ipv4 #设置SELinuxdisabled vim /etc/selinux/config SELinuxdisabled 查看防火墙状态:firewall-cmd --state 关闭防火墙:syst…

C# WinForm —— 14 CheckedListBox 复选列表框介绍

1. 简介 类似 ListBox,提供项的列表,区别就是 CheckedListBox 每一个项前面有个复选框 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 ckl 开头BackColor背景颜色BoderStyle边框样式:无、FixedSingle、F…

探索静态住宅代理IP:网络安全的隐形守护者

在当今这个数字化高速发展的时代,网络安全问题愈发凸显其重要性。无论是企业级的网络运营,还是个人用户的网络活动,都需要一个安全、稳定的网络环境。而在这个环境中,静态住宅代理IP以其独特的优势,逐渐成为了网络安全…

如何通过PHP语言实现远程控制空调

如何通过PHP语言实现远程控制空调呢? 本文描述了使用PHP语言调用HTTP接口,实现控制空调,通过不同规格的通断器,来控制不同功率的空调的电源。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备名称…

Go实现树莓派I2C读取SHT30温度湿度传感器

简介 树莓派其实本身包含很多资源引脚, 合理利用其实可以自制智能家居的一部分,本身硬件和Linux系统等高级语言支持加生态, 不说了, 做就好了… I2C 功能开启 参考之前的文章就可以了 Go实现树莓派读取bh1750光照强度 查看I2C总…

linux性能监控之top

说完了atop和htop,我们在来说说Linux自带的top,我们先看看命令效果: 可以看到是一个实时的系统监控工具,提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。 我们先来解析下命…