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

常见场景的业务逻辑漏洞以及安全设计

前言

目前常规漏洞的挖掘越来越困难,在这种情况下,我们可以多去看看业务逻辑方面的漏洞,也是复杂的系统,越有可能出现这方面的问题。本篇文章就来看看常见的一些场景下都有哪些业务漏洞。

由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流,谢谢大家了~~

常见的场景

1713249870_661e1e4e7ba85ee7c73df.png!small?1713249870933

验证码

验证码可以解决很多业务安全问题,比如撞库、垃圾注册,等等,可谓防御业务风险必备神器。验证码有图片验证码、滑动验证码、短信/邮箱/电话、二维码等分类,而据保守估计起码有80%以上的验证码是存在可以爆破和简单识别的问题,设计一个有效的验证码尤为重要。

常见问题

验证码问题主要分为两类:验证码绕过,验证码资源滥用

验证码绕过:空验证码,万能验证码,验证码可爆破,验证码无效等等

验证码滥用:短信/邮件轰炸,

1713249889_661e1e6176c8a20bbc257.png!small?1713249890915

安全设计

可以从下面几个方面去设计

1)验证码使用一次强制刷新

2)短信或者邮件验证码必须要6位以上字母和数字混合,图片或者语音验证码需要加强混淆干扰,比如图片文字变形,增加干扰斑点等。语音验证码增加背景噪声。

3)验证码要动态生成,不能统一生成多次调用

4)设置验证码错误次数

5)不把验证码放到HTML页面或者Cookie中

6)限制单个手机号在一个时间段内请求接收短信的次数

7)限制某个IP在一个时间段内请求接收短信的次数

用户登录

用户登录是最常见的一个功能,登录就意味着权限授予,如果攻击者能任意登录管理员的账号,也就拥有了管理员的权限,更多的访问权限就能带来更多的安全问题,所以在登录的安全尤为重要。

1713249912_661e1e78bd0d8497b0b4f.png!small?1713249913162

常见问题

1)任意用户登录(注册)

任意用户登录指的是我们可以通过漏洞登录任意一个账号。能导致任意用户登录的问题如下:

登录验证码可爆破

账号通过验证登录,但是验证码设置比较简单并且可以爆破,此时我们可以通过暴力破解的方式登录任意账号。

验证码明文返回

登录验证码在数据包中被返回

1713249972_661e1eb4f32cda0ef1c1b.png!small?1713249973560

存在万能验证码

在js等文件中可以找到通用的登录凭证;一般是测试为了功能测试方便,设置了诸如000000,123456(六位验证码爆破能发现)之类的万能验证码,项目上线时忘记下掉,导致任意用户登录

验证码未绑定用户

a.后端仅验证了验证码是否正确,没有验证验证码与获取手机号的对应关系,导致可以先输入自己的手机号A获取验证码,再输入他人手机号B获取验证码后,填写自己手机号A接收到的验证码,达到登录手机号B的目的

b.后端仅验证码了手机号与验证码是否一致,并未校验手机号是否为号主本人的,导致可以使用自己的手机号+验证码绕过。常见于用户绑定的功能处。

获取验证码的手机号字段可双写

输入自己的手机号抓包,将手机字段后面加一个逗号或者分号后再加一个手机号,或者双写手机号字段phone=13333333333&phone=18888888888,当两个手机号均收到一个验证码时大概率漏洞存在。使用自己的手机号便可以任意登录其他手机号

1713249995_661e1ecbea44260a7e3ba.png!small?1713249996450

验证码为空/任意验证码可成功验证

验证码为空时,手机号正确则成功登录(账号密码登录体系也发现过这种情况,空密码的情况下账号存在即登录)

凭证泄露

当登录凭证泄露的时候也可以导致可以登录任意用户,泄露用户凭证的途径如下:

1713250011_661e1edb82ccf455f5d40.png!small?1713250011935

凭证可伪造

登录凭证如果比较简单,我们可以通过伪造凭证登录任意账号

1713250017_661e1ee1a1acfa89ad23e.png!small?1713250019087

多步登录时改变其它步的参数

​ 以两步登录为例,登录输入账号密码/手机号验证码/其他的凭证信息后第一个请求校验其正确性后,第二个请求根据后端返回的账号/手机号/用户id等字段去获取用户凭证的登录逻辑。

只要修改第一个请求中的返回包或者修改第二个请求中的字段即可

更改登录Type

部分系统有免密登录/快捷登录之类的功能,只要一个账号就能登录,当遇到登录数据包中含有type之类的字段时,可以尝试此方法

1713250031_661e1eefbba843d1c8cf2.png!small?1713250032333

账号数据覆盖

常见于用账号信息更新处,例如修改手机号、账户重新绑定功能、修改账号等功能点处

修改请求中的oldmobile字段为其他手机号,成功将其他用户的账户数据覆盖到新手机号中,达到任意用户登录。

2)登录无验证码防护

登录无验证码防护时,可以暴力破解用户名和密码

3)撞库

没有限制时间段内IP登录错误次数。

4)API无凭证登录

API登录时没有带上唯一的token,只提供了有用户ID。如下以前爆出的一个漏洞

1713250074_661e1f1af3b6790d6f08f.png!small?1713250075431

安全设计

可以从下面的几个方面去设计安全的登录

1)用户名密码加密传输

2)登录验证码不可预测

3)多步登录之间验证上一步的结果

4)验证码要与用户绑定

5)不允许注册已存在的用户

6)登录失败次数限制

7)登录失败次数限制

用户注册

用户注册的漏洞其实很多跟登录时差不多,有下面的几个,这里就不在多做介绍

1713250089_661e1f29de09b687ba0fc.png!small?1713250091044

安全设计

1)设计验证码。

2)采集用户机器唯一识别码,拦截短时间内多次注册。

3)根据账号格式自学习识别垃圾账号。

密码找回场景

密码找回是出现逻辑问题最多的一个功能,因为它的交互流程最多,目前找回密码的方式比较常见的有邮箱验证码、手机验证码以及密保问题

常见问题

1713250102_661e1f3675a0e7e6ff891.png!small?1713250103352

很多的利用跟用户注册也是相同的,要注意重置链接的安全性以及不可预测,同时要绑定用户

安全设计

1)接收验证码的邮箱和手机号不可由用户控制,应该直接从数据库中读取出来。

2)加强验证凭证复杂度,防止被暴力破解。

3)限制验证凭证错误次数,单个用户在半个小时内验证码错误三次,半小时内禁止找回密码。

4)验证凭证设置失效时间。

5)验证凭证不要保存在页面。

6)输入用户邮箱或ID、手机号取验证凭证的地方需要设置验证码防止短信轰炸和批量找回等。

7)验证凭证跟用户名、用户ID、用户邮箱绑定,找回密码时验证当前凭证是否是当前用户的。

支付场景

曾经有不少体量不小的电子商务网站都出现过支付漏洞,最终导致的结果是不花钱或者花很少的钱买更多的东西,还真的有不少人测试漏洞之后真的收到了东西,这种天上掉馅饼的漏洞太有诱惑力了。

1713250126_661e1f4e70c58dd33fd3e.png!small?1713250127009

常见问题

这里介绍几个常见的漏洞

1)修改支付金额/修改购买数量

通过修改数据包中的总价或者购买数量,达到零元购或者一份的价钱购买多个商品的目的。

2)条件竞争

并发购买,简单来说就是在购买一个物品的时候,抓支付操作的包,然后再高并发下实现多次购买,就有可能造成,只支付一次,可能购买了多次

1713250146_661e1f62ae647d0cb3a91.png!small?1713250150138

3)用户/订单/优惠券等ID生成有规律,可枚举

这些ID可以猜测时,就可以改变ID使用别人的优惠券以及操作别人的订单等操作

安全设计

1)保证数据可信,商品单价及总价不可从客户端获取。

2)购买数量不能小于等于0。

3)账户支付锁定机制,当一个支付操作开始就应该立马锁定当前账户,不能同时两个后端请求对余额进行操作。

私信及反馈

私信和反馈功能在大多数网站中都能见到,特别是社交应用,私信是必不可少的功能。这个功能是两个用户之间互动使用,两端都是人,除了特殊情况下可以滤去的SQL注入或者命令执行等少见漏洞外,最常见的就是XSS漏洞以及越权漏洞。

1713250163_661e1f731675892f87dee.png!small?1713250163470

安全设计

1)对用户提交的内容的特色字符要做转义

2)注意权限问题

投票/积分/抽奖

投票和抽奖以及积分在很多促销活动或者推广手段上都经常用到,背后的奖品成本可能上数十万,如果这些奖品被恶意用户(黄牛)刷走了,不仅推广的效果没有,而且浪费了成本投入

常见问题

1)cookie或POST请求正文绕过。有的应用将验证是否抽奖或者领取积分的判断值放置在cookie或者POST的请求正文里,服务器端获取到这个结果后判断是否还有机会抽奖,而这个数据我们是可以直接在数据包中修改的,所以就会产生绕过,比如cookie中isok=1代表已经抽奖,isok=0代表还没有抽奖,而我们只要再点击抽奖,然后把isok的值改为0即可一直抽奖。

2)基于IP验证。做得比较弱的统计是直接基于IP验证,像访问量、推广获取积分等,这类要看程序获取IP的方式,如果是client-ip或者x_forword_for获取IP,则可以直接伪造IP绕过。

3)基于用户认证。也有一部分应用需要登录以后才能抽奖或者投票,这类可以结合看看能不能批量注册,如果可以,则可以用程序实现批量登录刷票,或者投票的时候POST包或者cookie里面的当前uid、用户名等是否可以随意修改绕过用户单次限制。

安全设计

机器识别码验证,每台机器都可以根据硬件信息生成唯一的识别码。

操作需要登录,当前用户信息从session中读取。

总结

本篇文章介绍了一些常见的业务漏洞,当我们遇到这些场景时,要注意上面的这些问题。常规漏洞越来越不好挖掘的情况下,我们可以多去看看业务方面的漏洞。

题外话

初入计算机行业的人或者大学计算机相关专业毕业生,很多因缺少实战经验,就业处处碰壁。下面我们来看两组数据:

  • 2023届全国高校毕业生预计达到1158万人,就业形势严峻;
  • 国家网络安全宣传周公布的数据显示,到2027年我国网络安全人员缺口将达327万。

一方面是每年应届毕业生就业形势严峻,一方面是网络安全人才百万缺口。

6月9日,麦可思研究2023年版就业蓝皮书(包括《2023年中国本科生就业报告》《2023年中国高职生就业报告》)正式发布。

2022届大学毕业生月收入较高的前10个专业

本科计算机类、高职自动化类专业月收入较高。2022届本科计算机类、高职自动化类专业月收入分别为6863元、5339元。其中,本科计算机类专业起薪与2021届基本持平,高职自动化类月收入增长明显,2022届反超铁道运输类专业(5295元)排在第一位。

具体看专业,2022届本科月收入较高的专业是信息安全(7579元)。对比2018届,电子科学与技术、自动化等与人工智能相关的本科专业表现不俗,较五年前起薪涨幅均达到了19%。数据科学与大数据技术虽是近年新增专业但表现亮眼,已跻身2022届本科毕业生毕业半年后月收入较高专业前三。五年前唯一进入本科高薪榜前10的人文社科类专业——法语已退出前10之列。

 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 

网络安全行业特点

1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万!

 2、人才缺口大,就业机会多

2019年9月18日《中华人民共和国中央人民政府》官方网站发表:我国网络空间安全人才 需求140万人,而全国各大学校每年培养的人员不到1.5W人。猎聘网《2021年上半年网络安全报告》预测2027年网安人才需求300W,现在从事网络安全行业的从业人员只有10W人。

 行业发展空间大,岗位非常多

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…

职业增值潜力大

网络安全专业具有很强的技术特性,尤其是掌握工作中的核心网络架构、安全技术,在职业发展上具有不可替代的竞争优势。

随着个人能力的不断提升,所从事工作的职业价值也会随着自身经验的丰富以及项目运作的成熟,升值空间一路看涨,这也是为什么受大家欢迎的主要原因。

从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

 1.学习路线图 

 攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

 (都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。 

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。 

 还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取

 最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

 因篇幅有限,仅展示部分资料,需要保存下方图片,微信扫码即可前往获取 

  

相关文章:

  • 6.2 文件的缓存位置
  • 创建你的第一个Windows程序
  • Github 2024-06-10开源项目周报 Top15
  • 【区分】累次极限与二重极限
  • 机器学习中的神经网络重难点!纯干货(上篇)
  • 神经网络开发
  • 【Ardiuno】实验使用ESP32单片机实现高级web服务器暂时动态图表功能(图文)
  • 计算机组成原理之定点除法
  • Android 14 蓝牙主从模式切换
  • profile-3d-contrib,github三维立体图的使用
  • JDK17 你的下一个白月光
  • Docker部署Nginx下载站点服务
  • UML与设计模式
  • sourcemap
  • vue2 + echats macarons 选中样式的树状图
  • 深入了解以太坊
  • [译] 怎样写一个基础的编译器
  • 「译」Node.js Streams 基础
  • 【Leetcode】104. 二叉树的最大深度
  • 230. Kth Smallest Element in a BST
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • LeetCode18.四数之和 JavaScript
  • PHP面试之三:MySQL数据库
  • REST架构的思考
  • Spring框架之我见(三)——IOC、AOP
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 对JS继承的一点思考
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 简析gRPC client 连接管理
  • 解析带emoji和链接的聊天系统消息
  • 我有几个粽子,和一个故事
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Java数据解析之JSON
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • $(function(){})与(function($){....})(jQuery)的区别
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (31)对象的克隆
  • (Python) SOAP Web Service (HTTP POST)
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (多级缓存)缓存同步
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (南京观海微电子)——I3C协议介绍
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原創) 物件導向與老子思想 (OO)
  • (转)Sublime Text3配置Lua运行环境
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /etc/fstab和/etc/mtab的区别