赞
踩
逻辑漏洞:又称业务逻辑漏洞,是指由于程序逻辑不严谨或者 逻辑太复杂,导致一些逻辑分支不能正常处理或 者处理错误。通俗的讲,一个系统功能太多后,程序开发人员难以顾及到方方面面,对于某些地方的处理可能有遗漏, 从而导致逻辑漏洞。
逻辑漏洞的出现:通常出现在任意密码修改(没有旧密码验证)、越权访问、密码找回、交易支付金额等。
普遍存在性: 由于功能的实现需要大量的逻辑操作,同时受制于程序员的背景,这类缺陷普遍存在于各类应用程序中。
不固定型: 或者称作“十分有针对性”,因为每一种逻辑缺陷似乎都是唯一的,它是基于逻辑操作,不同的功能逻辑不同,因此无法用一般的工具发现他们。
隐蔽性: 大多数的逻辑漏洞都十分隐蔽,它存在于 操作关系 当中,甚至是属于应用程序正常的功能。
本该在服务端处理的 验证码,被后端返回到了响应包里,导致可以任意手机用户密码。
通过手机找回密码一般需要短信验证码验证,服务端需要告诉客户端,输入的验证码是否正确,我们可以修改服务端返回到客户端的信息,这样一来,我们就可以输入任意短信验证码,然后将服务端返回的false信息改为true就可以绕过短信验证码的验证了。
下面是找回密码的一个流程,输入正确的用户名,跳到第二步,这时需要输入短信验证码,这里我们随意输入一个短信验证码:123456,然后抓取服务端返回的信息如下所示。
使用邮箱重置密码时,服务端向邮箱发送一个重置密码的链接,链接中包含当前用户的身份信息(如用户名或用户ID)和一个随机生成的token信息,如果未对token值进行验证或是验证后不失效,我们就可以通过修改用户名或用户ID来重置任意账号密码。
某网站使用邮箱找回密码时,服务端向邮箱发送的链接为:
http://www.xxx.com/GetPwd.aspx?q=0x0531387a5a6c1227e4d6ba0ce16dc72e&r=3244166
经尝试,此处未对随机生成的q值进行验证或是验证了但是验证之后未失效,导致可以重复使用,最终只需要修改r为其他用户ID,即可重置其他用户密码。
找回密码时使用位数较少的短信验证码,或者验证码没有设置有效时间限制,导致攻击者借助自动化工具在一定时间范围内爆破获得短信验证码,从而导致重置任意账号密码。
某网站找回密码时使用短信验证码的一个数据包为:
Code=5000&u=13888888888&Check=dc5b94101cb4f23a9ce6ae71197fc5de&a=5
此处可以对Code进行爆破
程序员在编写验证程序时有可能会验证结果返回到客户端,由客户端根据服务端提供的验证结果进行下一步操作,攻击者可以通过篡改验证结果或直接执行下一步操作实现绕过。
a). 某系统重置密码需要三个步骤,首先要输入图片验证码
b). 然后需要通过短信验证码验证身份。
c).访问http://.../a/user/findPasswordSetp 直接跳到重置密码的页面。
d). 可成功修改密码密码
编写验证程序时有可能会对验证码字段进行正确性校验,但当验证码字段不存在或为空时就直接通过校验。
a).某系统存在绕过验证漏洞,抓取登录的数据包。
b).删除验证码字段(securityCode)进行爆破。
c). 爆破成功,并可以使用爆破出来的账号密码进行登录。
支付金额前端校验,在前端修改支付金额。
a).抓取订单提交的数据包,发现有一个oid很可疑。
b).尝试进行测试发现,可遍历订单号,查看他人待付款订单信息。
a).某站点后台仅使用js跳转来限制未授权的用户访问。
b).去掉js可以成功访问后台,且可以进行操作。
测试思路:
暴力破解测试
SQL注入测试(数字型、字符型)
XSS测试(反射型、存储型)
命令执行测试
测试思路:
订单id篡改测试
手机号篡改测试
用户id篡改测试
商品编号篡改测试
竞争条件测试
测试思路:
非授权访问测试
越权测试
测试思路:
验证码暴力破解测试
验证码重复使用测试
验证码客户端回显测试
验证码绕过测试
验证码自动识别测试
测试思路:
业务流程乱序测试(修改密码步骤跳跃)
测试思路:
商品支付金额篡改测试
商品订购数量篡改测试
前端js限制绕过测试
请求重放测试
测试思路:
验证码客户端回显测试
验证码暴力破解测试
接口参数账号修改测试
Response状态值修改测试
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。