0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统逻辑漏洞挖掘实践

上海控安 来源:上海控安 作者:上海控安 2023-09-20 17:14 次阅读

作者 |林海文 上海控安可信软件创新研究院汽车网络安全组

来源 |鉴源实验室

01

前 言

当谈及安全测试时,逻辑漏洞挖掘一直是一个备受关注的话题,它与传统的安全漏洞(如SQL注入、XSS、CSRF)不同,无法通过WAF、杀软等安全系统的简单扫描来检测和解决。这类漏洞往往涉及到权限控制和校验方面的设计问题,通常在系统开发阶段未充分考虑相关功能的安全性。

举例来说,攻击者可以利用这些逻辑漏洞,通过利用程序员在设计中的疏忽,实施交易数据篡改、敏感信息盗取以及资产窃取等操作。这种类型的漏洞潜在危害极大,可能导致企业遭受资产损失和声誉受损的风险,而传统的安全防御设备和措施往往无法有效应对这些问题,显得力不从心。

02

挖掘思路总结(部分)

当提到逻辑漏洞时,有各种各样的漏洞类型。其中,账户、验证码、越权这三个模块是最常见且相对较容易被攻击的部分。下面,我们可以看一下这三个模块中常见的挖洞姿势。

wKgaomUKt9GAOU9oAAEdK26buMs792.jpg

03

一些挖掘实例

3.1 验证码

3.1.1修改返回包绕过

这种方法基于返回的状态码来验证用户凭证的正确性,通常情况下,正确的验证码返回状态码为1,错误则为0。因此,攻击者可以通过抓取响应包,并将错误的状态码修改为1,从而成功绕过验证。

找到系统登录界面修改账户密码的地方,采用邮箱修改密码;选择发送验证码后,随机输入一串验证码,发送数据,然后抓包。请求包如下:

wKgZomUKt9OALuX2AACJGn7ixHU006.png

wKgaomUKt9OAXXhHAACc1MAtW5A082.png

再拦截一下响应包。如下图,可以直接看到“data:false”进行了一个判断。修改false为true后放包:

wKgZomUKt9SAc0JDAAD9mfMNuGE603.png

成功绕过,直接跳转到修改密码处:

wKgaomUKt9SARKr0AAAsoTxqWLQ262.png

填入新的密码,点击确认,修改成功。

wKgZomUKt9WAeDJ9AAAlalmZKhk282.png

3.1.2验证码传递特殊参数绕过

验证码安全控制的失效问题。通常,常见的系统安全措施包括设置6位数验证码,有效期为30分钟或更短,验证失败6次后验证码会直接失效。然而,有些系统采用标志位来控制验证码的状态和生命周期。当标志位为1时,系统将验证码标记为失效,用户无法再使用该验证码来修改密码;而当标志位为0时,系统将验证码标记为有效,用户可以继续完成密码修改流程。

同样的,在个人中心处发现存在修改密码的功能点,仍旧是通过邮箱重置密码。点击“获取验证码”:

wKgaomUKt9WARxb4AABTws2pqV4577.png

等待6分钟后输入正确的验证码并抓包(此处6分钟为验证码过期时间),响应报文提示验证码已经失效。请求及响应包如下:

wKgZomUKt9WAD9NhAAGAvCD8NZQ672.png

将此处sourceFlag标注为u从1修改为0,发送报文,看到右侧响应,成功绕过时效性以及错误次数的限制:

wKgaomUKt9aAdNhxAAHDVani7l0137.png

3.2 账户

3.2.1遍历猜解已有账号

这种漏洞可能存在于用户注册、密码重置或验证码验证流程中。在注册过程中,如果系统内部已存在相同账户,通常无法成功注册。对于密码重置策略不够安全的网站,比如允许用户通过相对简单的信息(如用户名、电子邮件地址或手机号码)来重置密码,攻击者可以通过遍历或猜测这些信息来找到有效的用户账号。此外,如果网站在验证码验证过程中没有足够的限制或防护机制,攻击者可以尝试多次提交验证码,通过遍历可能的验证码值来找到有效的组合。

同样的,在个人中心处发现存在修改密码的功能点,仍旧是通过邮箱重置密码。点击“获取验证码”:

wKgZomUKt9aAPYfFAABT1RU3SJg094.png

等待6分钟后输入正确的验证码并抓包(此处6分钟为验证码过期时间),响应报文提示验证码已经失效。请求及响应包如下:

wKgaomUKt9eACEJVAAJjilFLEzs593.png

修改email为不存在的用户邮箱,发送报文得到response,提示当前用户不存在。那么可以采用常见用户遍历的方式进行猜解:

wKgZomUKt9eAJF8KAAGMjB6TtoE488.png

3.3 越权

3.3.1越权修改账户密码

网站未能有效验证和控制用户在修改邮箱地址时的权限。攻击者可以绕过身份验证,访问其他用户的邮箱地址修改页面,并进行未经授权的邮箱地址修改。这表明在系统设计阶段可能没有进行全面的用户身份验证,或者存在身份验证方面的漏洞,因此可能导致任意账户密码的重置。

在个人中心修改账户密码的地方,采用邮箱修改密码;选择发送验证码后,输入正确的验证码,点击下一步,成功验证进到修改新密码这一步。

wKgaomUKt9iATwRqAABT1RU3SJg911.png

wKgZomUKt9iAC7mcAAAuiX0wosI420.png

输入新密码,发送数据,然后抓包。请求包如下:

wKgaomUKt9mAZ6E6AACtNkzJr3w292.png

修改email地址为admin@*.com(admin用户的id),将拦截到的报文给发送出去:

wKgZomUKt9mAZk4pAACgUFKxYME594.png

成功修改admin账户的密码:

wKgaomUKt9mAJgfBAAAlUqfIvIU310.png

使用admin用户的新密码登录成功:

wKgZomUKt9qAdGnDAABreYq79J8836.png

3.3.2越权修改其他用户密码

在正常情况下,当用户试图修改他们自己的密码时,系统应该首先验证用户的身份,以确保他们有权访问和修改他们自己的帐户信息。身份验证通常包括要求用户提供当前密码或其他身份验证凭证。然而,在某些情况下,系统未充分执行身份验证检查,例如将 "id" 参数设置为目标用户的帐户标识。这使得攻击者可以通过篡改请求中的 "id" 参数来伪装成其他用户的帐户,而无需提供正确的身份验证凭证。

利用已知账户登录进系统,选择更改登录口令功能,修改新口令点击确定,抓包如下:

wKgaomUKt9qAEETcAABF6hDwQGE546.png

burp拦截报文,可发现它的Id字段可控:

wKgZomUKt9uASrZNAAHS7g28WG4104.png

修改id为2,根据服务器回应的报文,成功篡改id为2的用户的密码:

wKgaomUKt9yAUL8TAAHY-VEO3GY767.png

3.3.3越权登陆

通常情况下,登录过程应依赖于用户提供的凭据,例如用户名和密码。然而,在某些系统中,存在由客户端提供的参数,如certSn,用于标识用户会话。攻击者可以修改certSn参数以绕过授权检查,导致服务器未能正确验证会话是否属于请求的用户。这种漏洞使得攻击者能够手动修改certSn的数值,从而进行账户猜解攻击。

插入一张key(非RA管理员),点击登录,抓包如下:

wKgZomUKt9yAD42zAAA8JHjhbyc331.png

观察到其存在Certsn参数:

wKgZomUKt9yASpdwAAIL0AMAkJE077.png

可增加或者减小当前数值来修改该参数,成功登录RA管理员账号:

wKgaomUKt92AcefWAAHJeP6j2Y4196.png

wKgZomUKt92AEgsPAAAb1G4ilxY437.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 漏洞
    +关注

    关注

    0

    文章

    193

    浏览量

    15115
收藏 人收藏

    评论

    相关推荐

    源代码审计怎么做?有哪些常用工具

    ,跟踪函数可控参数,审计代码逻辑缺陷并尝试构造payload。从开发者的位置去思考问题,可以快速定位问题。 学习面向对象编程以及面向过程编程,编写一些项目提升对代码的理解能力,再是对各种漏洞可以独立挖掘利用并能理解
    发表于 01-17 09:35

    浅析闭源系统下的Evilparcel漏洞

    Evilparcel漏洞可以导致Bundle在多次序列化和反序列化过程中内容发生改变。结合LAW跳板,可以实现权限提升,严重影响系统安全
    发表于 11-16 14:43 159次阅读
    浅析闭源<b class='flag-5'>系统</b>下的Evilparcel<b class='flag-5'>漏洞</b>

    如何处理重现使用仿真发现的死锁漏洞

    在上一部分中,我们重点讨论了在组件上设置形式验证的最佳实践。那么现在设置已经准备就绪,协议检查器可以避免不切实际的情况(这也有助于发现一个新漏洞),基本抽象也可以提高性能。现在的任务便是如何处理重现
    的头像 发表于 11-02 09:17 244次阅读
    如何处理重现使用仿真发现的死锁<b class='flag-5'>漏洞</b>

    网站常见漏洞checklist介绍

    在做网站渗透之前除了关注一些通用漏洞,这些漏洞通常能很容易的利用扫描器扫出,被WAF所防护,然而有一些逻辑漏洞WAF和扫描器就无法发现了,就需要人工来测试。
    的头像 发表于 10-16 09:10 460次阅读
    网站常见<b class='flag-5'>漏洞</b>checklist介绍

    深刻认识新型电力系统的构建逻辑

    新型电力系统构建应遵循历史逻辑、现实逻辑、发展逻辑等三大逻辑,在夯实新型电力系统构建的优势基础上
    发表于 10-10 10:30 186次阅读

    高速数字系统设计—互连理论和设计实践手册

    高速数字系统设计——互连理论和设计实践手册
    发表于 09-28 07:49

    机器学习与数据挖掘方法和应用

    机器学习与数据挖掘方法和应用(经典)
    发表于 09-26 07:56

    统一系统脆弱性管理平台:让“网络安全漏洞”无处遁形

    网络安全漏洞是网络节点的系统软件或应用软件在逻辑设计上的缺陷,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使网络攻
    的头像 发表于 09-25 10:30 331次阅读
    统一<b class='flag-5'>系统</b>脆弱性管理平台:让“网络安全<b class='flag-5'>漏洞</b>”无处遁形

    用于缓解高速缓存推测漏洞的固件接口

    操作系统和管理程序软件能够针对这些漏洞应用适当的解决方法,并发现这些固件服务的存在。 这些接口被指定为SMC呼叫约定(SMCCC)[3]和电源状态协调接口(PSCI)[4]的扩展,以确保受影响的CPU
    发表于 08-25 07:36

    机器学习与数据挖掘的区别 机器学习与数据挖掘的关系

    机器学习与数据挖掘的区别 , 机器学习与数据挖掘的关系 机器学习与数据挖掘是如今热门的领域。随着数据规模的不断扩大,越来越多的人们认识到数据分析的重要性。但是,机器学习和数据挖掘
    的头像 发表于 08-17 16:30 1526次阅读

    python数据挖掘案例

    Python数据挖掘的强大功能。 一、金融领域 1.股票价格预测 股票市场是一个复杂的系统,而股票价格的预测对于投资者来说常常是至关重要的。Python数据挖掘可以分析股票价格的历史数据,并建立模型来预测未来股票价格的走势,从而
    的头像 发表于 08-17 16:29 849次阅读

    常见的漏洞扫描工具

    漏洞扫描工具是现代企业开展渗透测试服务中必不可少的工具之一,可以帮助渗透测试工程师快速发现被测应用程序、操作系统、计算设备和网络系统中存在的安全风险与漏洞,并根据这些
    的头像 发表于 06-28 09:42 1103次阅读
    常见的<b class='flag-5'>漏洞</b>扫描工具

    批量漏洞挖掘工具安装教程

    介绍 QingScan一个批量漏洞挖掘工具,黏合各种好用的扫描器。 是一款聚合扫描器,本身不生产安全扫描功能,但会作为一个安全扫描工具的搬运工;当添加一个目标后,QingScan会自动调用各种扫描器
    的头像 发表于 06-12 09:12 595次阅读
    批量<b class='flag-5'>漏洞</b><b class='flag-5'>挖掘</b>工具安装教程

    NPATCH漏洞无效化解决方案

    那些敞开的大门,才能确保其信息化系统应用安全。然而,因为老旧系统供应商不再维护补丁、漏洞修 复会引发风险、漏洞修复需要投入大量的人力和时间等现实问题,绝大部分企业
    的头像 发表于 05-25 14:46 1068次阅读
    NPATCH<b class='flag-5'>漏洞</b>无效化解决方案

    某CMS的命令执行漏洞通用挖掘思路分享

    大概是在上半年提交了某个CMS的命令执行漏洞,现在过了那么久,也想通过这次挖掘通用型漏洞,整理一下挖掘思路,分享给大家。
    的头像 发表于 05-18 17:18 2282次阅读
    某CMS的命令执行<b class='flag-5'>漏洞</b>通用<b class='flag-5'>挖掘</b>思路分享