1.什么是逻辑漏洞逻辑漏洞hutool?
2.墨菲安全实验室Gitlab OAuth注册默认口令漏洞分析(CVE-2022-1162)
3.代码审计思路经验谈
4.四款源代码扫描工具
5.源码溢出是什么意思?
6.php代码审计学习之函数缺陷
什么是hutool?
详解Hutool路径遍历漏洞CVE--
Hutool是一个广泛使用的Java工具库,提供了丰富的源码原理功能以简化开发者在Java应用中的日常任务。其ZipUtil组件在处理压缩文件时,逻辑漏洞逻辑漏洞存在路径遍历漏洞CVE--。源码原理本文将深入分析该漏洞的逻辑漏洞逻辑漏洞细节、利用条件、源码原理牛牛源码社区影响范围以及修复方法。逻辑漏洞逻辑漏洞组件使用场景与漏洞概述
Hutool-core组件包括了Bean操作、源码原理日期处理、逻辑漏洞逻辑漏洞多种实用工具等功能,源码原理尤其在压缩文件和解压文件等操作中,逻辑漏洞逻辑漏洞ZipUtil类起到了关键作用。源码原理该组件的逻辑漏洞逻辑漏洞unzip函数在默认情况下未对压缩文件内的文件名进行充分检测,导致在解压过程中可能存在路径穿越的源码原理危险。漏洞细节与利用条件
该漏洞允许攻击者利用Hutool的逻辑漏洞逻辑漏洞unzip函数,通过未经校验的压缩文件内数据,实现任意文件覆盖效果。具体来说,攻击者可以通过构造恶意压缩文件,其中包含指向敏感文件路径的文件名(如/etc/passwd或ssh连接私钥文件),进而实现服务器被远程控制或远程命令执行。漏洞利用条件包括使用Hutool默认的unzip函数且未对压缩文件内的文件数据进行有效校验。影响版本与漏洞分析
CVE--影响了Hutool的所有版本小于4.1.。该漏洞本质上是一个标准的Zip Slip漏洞,其核心在于ZipUtil类在创建File对象时直接从zipEntry获取压缩文件的文件名,未对文件名进行过滤。这一过程可能导致目录穿越,进而引发安全问题。漏洞复现与修复策略
为了复现实验,可以使用Python脚本创建一个包含恶意文件名的压缩文件。通过Hutool的unzip函数对这个压缩文件进行解压操作,观察结果。结果通常会显示敏感文件被覆盖的情况。针对这一漏洞,有三种主要的修复策略:1. **升级至4.1.版本**:Hutool的修复版本引入了`FileUtil`替代了原始的`File`对象,通过`checkSlip`函数进行安全性检查,确保文件在指定的父目录下,防止路径遍历攻击。这种修复方法可以通过修改包管理文件(如`pom.xml`或`build.gradle`),qrcodeimage接口源码重新构建项目来实现。
2. **手动修改源码**:开发者可以下载Hutool组件的源码,自行实现相应的安全校验逻辑,以替换原始的解压流程,避免漏洞的产生。
3. **权限控制**:以较低权限的用户执行解压操作,限制对敏感目录和文件的访问权限,以此来防范Zip Slip攻击。
通过这些修复措施,可以有效防止Hutool路径遍历漏洞的利用,保障应用安全。
墨菲安全实验室Gitlab OAuth注册默认口令漏洞分析(CVE--)
GitLab官方于3月日修复了安全漏洞CVE--,该漏洞源于CE/EE版本产品的硬编码密码,允许攻击者直接登录使用OmniAuth注册的账号。受影响版本包括.7.0 ~ .7.6,.8.0 ~ .8.4,.9.0 ~ .9.1,且主要影响开启了OmniAuth注册场景的企业。漏洞源代码在两个月前引入,用于增加密码强度的测试,但在业务逻辑中被误用,导致在lib/gitlab/auth/o_auth/user.rb中通过OAuth创建用户时设置默认位密码,即“qweQWE!@#”。验证结果显示,攻击者可直接使用此默认密码登录已通过OAuth注册的账号。
代码审计思路经验谈
软件漏洞概述
漏洞是指在计算机系统安全方面存在的缺陷,可能导致系统或应用数据的保密性、完整性、可用性以及访问控制受到威胁。从另一个角度来看,漏洞可以被视为系统或软件安全策略的缺失或不足。如果软件设计和开发过程中严格遵守并实现安全策略,则可以实现安全性。此时,代码审计便是基于安全策略原理,对策略的确立或不足进行审计。
总体审计思路
1. 代码审计思路
在实际工作中,每个项目都有其预算,nsqd源码解析客户关注的点也各不相同。如何利用有限的资源,尽可能达到或超过客户预期,是项目成功与否的关键。通常,客户关注的点是容易检测出的代码安全问题。在审计上,按照/法则和推进先后顺序,需要将前中期审计重点放在常见安全风险点上,而不是技术难度和复杂度都高的风险点审计。
此时,合理的审计思路显得尤为重要。首先,根据项目预算确定项目时间和投入资源,根据时间和资源制定项目可执行方案。审计层面的思路是先快速了解项目架构,就像浏览书本的目录,对项目中各个模块的功能有基本的了解即可。为了提高整体效率,前期可以使用人工和工具的方式,利用工具进行初步扫描,人工进行初步审计,达到发现大多数简单安全风险的水平。中后期则进行纯人工审计,利用敏感和危险函数、数据流回溯、功能模块、安全策略、黑白盒审计等方法进行交叉审计和验证,尽可能多而全部地挖掘源代码中的安全风险问题。
2. 代码审计策略
2.1 全文通读审计
该策略是通过直接分析源代码去审计安全风险。这种方式对审计人员的能力要求较高,需要通读代码了解程序的答题结构,了解各个模块并理解代码各项功能。在阅读完整体代码之后,根据程序入口开始审计。
该方式的优点在于深度了解项目代码架构和功能后可以审计出较为复杂的安全风险点。缺点在于对审计人员的autosar 源码下载要求度较高,审计较为耗时。
示例(CMS):
我们可以先看源码文件中是否含有API、admin、system等关键字的目录,这些目录通常需要重点关注。
接着就是查看关键代码,比如functions.php文件中有一些系统的关键函数和一些过滤规则。
接下来可以再找一找其中的配置文件,我们可以去搜config等类型的文件名称,这些文件中会包含一些项目关键配置。
2.2 功能模块审计
功能模块的审计介于全文通读、敏感和危险函数审计的两种方式之间。在降低全文源码通读的难度的前提下,适当兼顾了代码审计的深度和广度,做到比起函数审计更为全面。
在模块层面上,可以进一步进行数据类型分析、对象分析、接口分析、算法分析、函数间逻辑调用分析,针对模块功能常见的安全风险点进行逐一审计,比如用户认证、文件上传、文件管理和密码找回、支付逻辑等等功能点。
示例(CMS):
首先我们需要在源码文件夹中查看upload、login、export等源码文件,然后根据相关的功能模块进行代码审计。
导出表格相关功能:
登录模块:
2.3 敏感和危险函数审计
敏感和危险函数审计,也是代码审计中最为常见及直接的审计方式。常见的安全风险大多数由于函数使用不当造成。根据审计经验,可以获知常见安全风险涉及的敏感和危险函数,全项目检索相关函数进行定位,通过函数前后调用关系进行审计,验证相关安全风险是idea 查找源码否存在。
该方式的优缺点也相对明显,优点在于可以快速上手进行审计,只需检索相应敏感和危险函数,快速定位到风险点,可定向审计同类型安全风险点,效果明显。缺点则是由于没有通读全文,对程序整体架构了解不够深入,在风险点的覆盖上不够全面,深度较为欠缺。
示例:
代码审计中常见的危险函数
3. 基本概念和审计方式
在进行代码审计之前,我们需要对代码审计的一些基本概念和审计方法有一定的了解。在软件开发过程中,代码审计是一种重要的安全实践,用于发现和纠正应用程序中的安全漏洞。它通过仔细检查应用程序的源代码来识别潜在的安全风险,确保应用程序在生产环境中的安全性和稳定性。
常用的审计方式有以下几种:
4. 代码审计方法
根据敏感和危险函数回溯参数,查询可控变量,寻找敏感功能点进行数据流上的审计。在日常渗透测试过程中通常关注三点:输入点,数据流,输出点。首先可以通过系统功能来判断输入点的位置,常见输入点为各种查询、用户登录界面、搜索功能、留言板或公告等参数。可以通过对应输入点的位置来追踪数据流,主要关注是否存在过滤代码对用户可控的参数做了合法性校验。
以下有几种常见思路:
1. 根据敏感和危险函数回溯参数传递过程因为大多数漏洞是由于函数的使用不当造成的。
优点:只需要搜索相应的敏感和危险函数,即可快速地挖掘想要的漏洞,可定向挖掘、高效、高质量。
缺点:由于没有了解整体代码,对项目的整体框架了解不够深入,不容易了解参数的完整传播过程,会存在误报,通常也比较难发现逻辑漏洞。
2. 查找可控变量,正向追踪变量传递过程,查找可能存在安全漏洞的变量,从变量处发现安全问题。常见的可操控变量:username、id、password、File、url、path、search、MultipartFile等。
3. 寻找敏感功能点,尤其关注于易出现漏洞的功能点,如:文件上传、留言板、登录认证功能、找回密码等通过从敏感功能点入手来查找安全问题。
4. 第三方组件、中间件对比,检查Web应用所使用的第三方组件或中间件是否受到已知漏洞的影响。
5. 检查开发框架是否存在已知漏洞,或者是否存在由于开发人员使用不当而引起的安全风险。
四款源代码扫描工具
一、DMSCA-企业级静态源代码扫描分析服务平台
DMSCA,端玛科技的企业级静态源代码扫描分析服务平台,专注于源代码安全漏洞、质量缺陷及逻辑缺陷的识别、跟踪与修复,为软件开发与测试团队提供专业建议,助力提升软件产品的可靠性与安全性。该平台兼容国际与国内行业合规标准,基于多年静态分析技术研发成果,与国内外知名大学和专家合作,深度分析全球静态分析技术优缺点,结合当前开发语言技术现状、源代码缺陷发展趋势与市场,推出新一代源代码企业级分析方案。DMSCA解决了传统静态分析工具的误报率高与漏报问题,为中国提供自主可控的高端源代码安全和质量扫描产品,并支持国家标准(GB/T- Java、GB/T- C/C++、GB/T- C#)。
二、VeraCode静态源代码扫描分析服务平台
VeraCode是全球领先的软件安全漏洞与质量缺陷发现平台,广受数千家软件科技公司青睐。
三、Fortify Scan
Fortify SCA是一款静态、白盒软件源代码安全测试工具,运用五大主要分析引擎,全面匹配、查找软件源代码中的安全漏洞,整理报告。
四、Checkmarx
Checkmarx的CxEnterprise是一款综合的源代码安全扫描与管理方案,提供用户、角色与团队管理、权限管理等企业级源代码安全扫描与管理功能。
源码溢出是什么意思?
源码溢出是指程序的处理数据超过了原本程序预设的范围,导致数据溢出所致的问题。在计算机领域,源码溢出也称为缓冲区溢出,是一种典型的安全漏洞类型。当程序对数据进行操作时,若数据长度超过了之前设定的范围,将会导致程序崩溃或者被黑客攻击。因此,源码溢出是一种程序设计中必须注意避免的错误类型。
源码溢出是计算机安全领域中需要重视的问题。因为黑客可以通过这种方式进行攻击,造成严重的危害。在进行网络应用开发时,开发人员应该尽可能防范源码溢出的漏洞。最常见的防范方法是加强程序输入数据的验证以及限制处理数据的最大值,同时更加严密地验证源码逻辑。
源码溢出对于软件安全监管非常重要,因为源码溢出的漏洞一旦被发现,黑客能够从中获得非法的数据,对整个系统造成极大的威胁。因此,除了在程序编写中做好数据的错误检测并限制输入数据的大小,IT管理人员还需要及时检测整个系统中存在的源码溢出问题,并及时解除漏洞,以确保系统的健康运行。
php代码审计学习之函数缺陷
原文链接:
在文件上传代码中,若文件名位于1-区间内,利用PHP的弱类型比较特性,文件可成功上传。例如,数字6被转换为6,因该值位于指定范围内,从而实现上传。
在piwigo2.7.1中,当case为"rate"时,将"rate"与"image_id"传入functions_rate.inc.php文件的"rate_picture"函数。查找"rate"是否存在于配置数组$conf['rate_items']中。只要"rate"值在(0,1,2,3,4,5)范围内,即可以绕过验证,但in_array函数第三参数未设置为true,导致安全漏洞。
CTF中,"stop_hack"用于过滤危险函数。通过获取GET参数ID,使用"stop_hack"进行过滤并拼接到SQL查询语句中。filter_var函数存在默认仅过滤双引号,不过滤单引号的缺陷,除非设置"quotestyle"选项为ENT_QUOTES,才能实现对单引号的过滤。
在anchor-cms源码分析中,关键代码未进行XSS过滤,存在安全风险。
在CTF实例中,利用"__autoload"函数实现任意对象实例化。通过获取get参数并使用"stop_hack"过滤后,拼接到SQL查询语句中,实现任意对象的实例化。
在Shopware 5.3.3的XXE代码分析中,获取"sort"参数并传入"RepositoryInterface"类的"unserialize"方法。通过"LogawareReflectionHelper"类的"unserialize"方法,新建反射类并传入参数,其中类名与参数均由可控的"sort"变量决定。
在CTF中,利用"__autoload"方法的错误使用,实现任意对象实例化。当"__autoload"方法不存在时,使用类似方法实现对象实例化,通过参数传递文件名和信息作为键名。
strpos函数使用不当引发漏洞。在查找特殊符号时,当未找到指定字符时返回"false",若第一个字符找到则返回"0",利用此特性可以进行注入。
DeDecms V5.7SP2中,用户密码重置漏洞允许任意密码修改。通过传入mid查询用户信息,当安全问题和答案不为空且匹配时执行sn函数,若未设置问题答案则安全问题为0,安全答案为null,使密码修改流程失效。
在api.php的buy函数中,使用"=="比较操作符进行弱类型比较,传入7个true值实现绕过。
在escapeshellarg与escapeshellcmd的不当使用中,通过构造字符串绕过转义规则,实现命令注入。
在postcard中,通过filter_var()函数的缺陷,利用双引号嵌套转义空格和单引号双引号重叠,实现数据绕过检测,进行注入。
在CmsEasy 5.5漏洞分析中,通过全局搜索和catid参数,寻找到可控制的配置项,利用eval函数执行恶意代码。
RabbitMetinfo 6.0.0中,未恰当的exit导致程序逻辑异常,导致重装漏洞。
在unserialize反序列化漏洞中,使用不当的unserialize方法,绕过数据类型检查,实现代码执行。
在Typecho-1.1漏洞分析中,通过base解码和反序列化操作实现代码执行,关键步骤涉及session变量的判断和使用。
深入研究preg_replace与代码执行,利用e模式修正符进行代码执行,通过构造特定参数绕过限制。
DM企业建站系统中,存在ENT_NOQUOTES设置导致的注入漏洞。
Turkey Baster实例中,利用addslashes过滤机制的绕过,通过构造特定类名实例化实现目标。
在苹果CMS视频分享程序8.0漏洞分析中,直接拼接SQL语句,导致SQL注入,通过过滤和url解码操作实现注入。
从变量覆盖到getshell的SnowmanDuomiCMS_3.0漏洞分析,通过全局变量覆盖实现shell注入。
PHP反序列化漏洞学习中,讨论ENT_COMPAT、ENT_QUOTES、ENT_NOQUOTES设置,以及ereg、us--Tsai-A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages等关键概念与实践。