Hello,java代码审计,vulhub部署

简介: 1.写在前面🎂市面上关于java代码审计的课程和教程比较少,所以我打算开设一个新的专栏,在这个专栏里面免费和大家分享一些从0到1的关于java代码审计相关的知识


1.写在前面🎂


市面上关于java代码审计的课程和教程比较少,所以我打算开设一个新的专栏,在这个专栏里面免费和大家分享一些从0到1的关于java代码审计相关的知识


我们将研发部门视为一类重要的读者群体。我们曾经和规模大小不一、业务类型各异的客户进行过交流。在交流的时候,可以明显地感觉到“偏科现象”。例如,产品经理、项目经理重业务而轻安全,开发人员可以编写丰富多彩的应用却不了解网站安全漏洞,测试人员可以抓住Bug但擒不住漏洞🎂


2.为什么要学java代码审计


背景需求


在我们实战经验中,Java相关组件的高危漏洞出现频次是比较高的。在网络空间攻防战中,如果能抢先攻击者一步掌握漏洞信息,就能在防守中占据主导地位。代码审计是发现漏洞非常有效的一种手段,是黑盒渗透测试的一个重要补充。


随着国内网络空间安全技术的发展,最初的一些只会使用黑客工具的“脚本小子”逐渐被能够进行代码分析、编写脚本的专业安全人员所代替。可以说,一个优秀的安全人员,必须要懂编程。但是懂编程仅仅是第一步,懂编程的人不胜其数,但将编程能力演变成代码审计能力,并且利用代码审计能力去挖掘漏洞的人却少之又少。代码审计是一门技术活,而对于Java 代码审计来说,又因为 Java 语言的多样性,导致 Java 审计技术难度更大,在市面上也很少能够看到系统性的Java代码审计的教程


黑夜给了我黑色的眼睛,我却用它寻找漏洞👀


实际需求


在“攻”方面,传统的通过扫描器扫描站点或利用 NDay来渗透的方式已经受到了很大的制约,现在及未来的典型渗透测试流程是:确定站点指纹→通过旁站扫描备份或开源程序得到源代码→代码审计→利用审计出来的漏洞制定修订措施,所以代码审计能力也越发重要


在“防”方面,国内有大量网站都曾遭到过拖库,其中相当一部分漏洞是因为代码导致的。如果企业安全人员具备代码审计的能力,能够提前做好代码审计工作,在黑客发现系统漏洞之前找出安全隐患,提前部署相应安全防御措施,可落实“安全左移”,提高应用系统的安全性,从而“治未病”


3.JAVA代码审计概述

代码审计(Code Audit)是一种以发现安全漏洞、程序错误和程序违规为目标的源代码分析技能。在实践过程中,可通过人工审查或者自动化工具的方式,对程序源代码进行检查和分析,发现这些源代码缺陷引发的安全漏洞,并提供代码修订措施和建议


4.代码审计的常用思路


接口排查(“正向追踪”):先找出从外部接口接收的参数,并跟踪其传递过程,观察是否有参数校验不严的变量传入高危方法中,或者在传递的过程中是否有代码逻辑漏洞(为了提高排查的全面性,代码审计人员可以向研发人员索要接口清单)

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

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

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

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

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

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

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


5.使用Vulhub快速搭建漏洞验证环境


Vulhub简介


Vulhub是基于Docker-compose技术的一款漏洞集成环境,旨在帮助研究人员更快速地搭建漏洞环境,避免在环境配置上浪费不必要的时间,使漏洞研究更专注于漏洞本身。Vulhub操作简单,即使没有Docker知识基础也可以轻松进行环境搭建。研究者只需进入特定的文件夹,使用命令即可完成一个特定漏洞环境的搭建。


下载vulhub到服务器


git clone https://github.com/vulhub/vulhub.git


下载并解压Vulhub后,目录结构如图所示。所有与Tomcat相关的漏洞都存放在Tomcat文件夹中,可根据Tomcat的每个漏洞的CVE编号细分文件夹。要启动相应的漏洞环境时,只需进入相应的文件夹使用Docker-compose命令启动即可。



启动漏洞环境


启动漏洞环境十分简单,进入相应的漏洞文件夹中,输入一条命令即可完成。例如启动一个漏洞编号为CVE-2017-10271的漏洞环境,操作步骤如下。


进入\weblogic\CVE-2017-10271文件夹中


在cmd中输入docker-compose up –d,启动命令会根据该文件夹中的docker-compose.yml定义将相应的镜像拉取到本地,并且会自动启动容器以及进行必要的端口映射



启动成功:



成功运行容器后,即可通过浏览器访问漏洞环境,进行相应的漏洞验证和研究工作


目录
相关文章
|
2月前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
3月前
|
Kubernetes jenkins 持续交付
从代码到k8s部署应有尽有系列-java源码之String详解
本文详细介绍了一个基于 `gitlab + jenkins + harbor + k8s` 的自动化部署环境搭建流程。其中,`gitlab` 用于代码托管和 CI,`jenkins` 负责 CD 发布,`harbor` 作为镜像仓库,而 `k8s` 则用于运行服务。文章具体介绍了每项工具的部署步骤,并提供了详细的配置信息和示例代码。此外,还特别指出中间件(如 MySQL、Redis 等)应部署在 K8s 之外,以确保服务稳定性和独立性。通过本文,读者可以学习如何在本地环境中搭建一套完整的自动化部署系统。
69 0
|
3月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
21天前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
15 1
|
1月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
39 2
|
1月前
|
SQL 安全 Java
代码审计-JAVA----javaweb代码审计思路
代码审计-JAVA----javaweb代码审计思路
|
2月前
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
58 1
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
70 0
|
3月前
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
3月前
|
缓存 负载均衡 算法
Java性能优化实战:从代码到部署的全方位攻略
在软件开发的世界里,性能是金。本文将通过浅显易懂的语言和具体案例,带你了解如何从编写更高效的Java代码开始,到利用JVM调优工具,再到部署环境的精细调整,全面提升你的Java应用性能。你将学会如何识别瓶颈、选择正确的数据结构和算法、进行垃圾回收调优,以及使用现代硬件优势来加速你的应用。无论你是新手还是资深开发者,这篇文章都将为你的Java性能优化之旅提供宝贵的指导。