赞
踩
整理下逻辑漏洞:程序本身逻辑不严或逻辑太复杂,导致一些逻辑分支不能够正常处理或处理错误,造成的一系列漏洞
逻辑漏洞通常很难发现的,因为通常不会在应用程序的正常使用中暴露它们。但是,攻击者可以通过开发人员“意料之外”的方式与应用程序进行交互来攻击利用
业务逻辑的主要设计意图之一是强制执行设计应用程序或功能时定义的规则和约束。业务规则规定了在特定场景发生时应用程序应如何反应,包括阻止用户会对业务产生负面影响的行为
逻辑上的缺陷可以使攻击者绕过这些规则。例如,他们可能无需购买即可完成交易。在其他情况下,可能通过将意外的值传递到服务器端逻辑,攻击者有可能诱使应用程序执行不应执行的操作
基于逻辑的漏洞可能非常多样,并且通常是应用程序及其特定功能所独有的。识别它们通常需要一定数量的专业知识,例如对业务流程的理解或攻击者在给定上下文中可能具有的目标。逻辑漏洞很难使用自动漏洞扫描程序进行检测
逻辑漏洞只出现在业务流程中
本文将简单介绍以下这些逻辑漏洞:
应用程序首先会判断用户的身份(账号密码登录),随后确认后续请求是否由该用户发出(会话管理),然后判断是否允许用户执行“所请求的操作”或访问“所请求的资源(访问控制)”
简单讲,就是访问了没有授权的资源或信息
三种访问控制模型分别对应着
并且这些漏洞之间没有明确界限,按照漏洞的表现形式和检测方法差异会分为很多不同的类型:
很好理解,就是Bob可以访问甚至修改Alice的信息和资源
一个例子如下:
这段源码就有任意密码修改漏洞
假设有两个用户:Alice,UserID=1;Bob,UserID=2
Bob发请求修改密码时,拦截数据包,并修改ID为1,则Alice的密码被修改
作为应对措施
可以对密码进行二次验证
简单讲,就是管理员和普通用户可以访问对方的资源或信息
通常可能是截获了cookie之类的
一个解决方案:做个过滤器
是前两个的合集
可以这么理解:技术部的员工干了人事部部长的事。。。
这个文档里有几个例子:
访问控制/越权漏洞 – 学习笔记
过程
一个例子:
网上看到一张图挺直观
一个例子如下:
一般出现在有虚拟币的网站
导致结果:支付金额为负
一个例子:
在计算价格时,没有对负数进行验证
导致可以输入负数的商品数“赚钱”
这个就是对输入密码错误次数限制的反向思维
就是想封锁你的账户
故意多次输入错误密码
主要是弱密码
用弱密码字典,或者社工生成针对性的字典去爆破密码
在线生成社工密码
有的网站对cookie不加密,也不base64编码,直接明文表示。可以自己重构组建cookie
测试cookie、用户名、密码等敏感信息是否加密、使用了什么加密算法,然后解密
直接在url里输入要进入的页面路径、文件名,看能不能不登录就直接访问
不验证手机号,不要求提供手机验证码(或者可绕过)
比如生成十亿条手机号,然后批量注册,将没有注册过的手机号都注册掉,影响正常用户的注册
或者只验证手机号,不验证是否注册过
比如这个手机号a用来注册一个微信号,然后a不用了,营业厅又把这个手机号卖给b了,b又拿着这个手机号注册了一个微信。结果b新注册的微信覆盖掉了a的微信(只是举例,纯属虚构)
抓包,将目标手机号改为自己的手机号,然后自己的手机号就接收到了验证码
有的网站只会验证验证码是否正确,没绑定用户,不验证是发给谁的
同上,只是改的是邮箱和用户名
改ID,第一次下了5万的订单,第二次下一个5块钱的订单
可以抓包将第二次的订单号改成第一次的订单号
或者换成别人值钱的订单号,系统可能会将第一次的订单发两次
改商品编号,比如本来买的是5毛钱的1号商品,改成50k的2号商品
使用自己的账号密码登录成功,获取登录成功的状态码。然后将ID换成别人的ID,系统如果只验证状态码的话,就会以别人的ID登录
比如一个自动售货机,本来应该是先收钱,再吐商品。换个顺序,就成了先吐商品,再收钱。然后你就能拿了商品就跑
修改商品价格
0元购(一般是虚拟货币,比如用金币、Q币支付),0.01元购(一般是RMB支付,因为银行卡每次转账的金额必须大于等于0.01)
修改商品数量,本来只买1件衣服,改成买了100件衣服
比如特价商品限购1件,改成10件
顾名思义,同上
验证码爆破,有的验证码就是0000-9999,可以一个一个试
有的验证码在一定时间内可以重复使用
比如使用手机验证码登录,然后登录完之后,还可以使用这个验证码修改密码(如果修改密码需要用到手机验证码的话),或者再重新登录一次
进入找回密码页面,输入手机号,获取验证码,服务器会向手机发送验证码
可以抓包查看返回包信息,有时返回包中会包含验证码
注册的时候需要手机验证码,此时可以随便填一个手机号
然后抓包改状态码,比如将0改为1,将false改为true
验证码生成有规律,可以猜测
比如是用户名加当前时间:这一次是0001,下一次是0002,下下一次是0003……验证码可控,我们能猜出下一次验证码是什么
同任意注册
有的只在前端验证,比如60s后才能重新发送短信验证码,但是后端没有验证
可以让他一直重发,耗尽他短信池的流量,一般用来做DDoS
比如上传一个木马,服务器识别到就会删除一个
同时发100000万个,然后不停的请求执行这个木马
在某一刻,服务器还没识别到这是个木马并删除的时候,你先请求执行这个木马——只要你上传的速度大于他删除的速度,总会成功请求一个的
比如有的网站,id=1,就返回1号用户的信息;id=2,就返回2号用户的信息……id=10000,就返回10000号用户的信息
重发的时候,可以设置id逐步加1,就能遍历所有人的信息
对逻辑漏洞做个小梳理
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。