微信公众号:计算机与网络安全
ID:Computer-network
逻辑漏洞指由于代码在设计时考虑不全所产生的逻辑上的漏洞,具体有任意金额支付、任意用户注册、任意密码重置及短信炸弹等。逻辑漏洞形成的原因是代码在做判断时,考虑的情况不全面。由于逻辑漏洞一般和业务紧密联系,而安全扫描工具基本无法扫描出逻辑漏洞,因此,还是需要人工进行全面、细致的渗透测试才能检测出来。
例1:如果某商城网站存在逻辑漏洞,攻击者可能会实现任意金额支付购买商品。攻击者在该商城注册并登录账户,如图1所示。
图1 注册账户并登录
继续选购商品,添加到购物车,下单结算,如图2所示。
图2 下单结算
截取请求数据包,如图3所示。
图3 截取请求数据包
生成订单,如图4所示。
图4 生成订单
生成支付金额,由于无意做恶意破坏,因此,此处未再继续操作下去,如图5所示。
图5 生成支付金额
例2:某站任意密码重置。密码重置一般需要4个步骤:输入重置账号、输入身份验证、进行密码重置及完成密码重置。开启浏览器,输入/home/validateCode.do?Type=1,如图6所示。
图6 任意密码重置(1)
填写好用户名,单击下一步,如图7所示。
图7 任意密码重置(2)
此时,这里有两种方式重置密码:通过手机或通过电子邮件。在此,攻击者选择通过手机重置密码,使用Burp Suite截取重置密码请求包,将请求包中的手机号直接修改为自己的手机号,从而获取重置密码的验证码。然后,提交该重置密码的验证码,再进行一系列操作就可以成功重置该账号密码了。
在此,给出几点安全建议。
对于短信验证:重置密码的时候,采用身份验证机制,即只能是该用户才能修改此密码;使短信验证码复杂化,且添加短信验证码防暴破设计(如3次输入错误,自动锁定)。
对于链接验证:重置密码的时候,采用身份验证机制,即只能是该用户才能修改此密码;使用Refer、Token验证及服务器加密验证。
在此,单独解释一下“重置密码的时候,采用身份验证机制,即只能是该用户才能修改此密码”这句话。
以下是dvwa渗透测试演练平台中users表中数据。
user_id first_name last_name user password avatar last_login failed_login
1 admin admin admin 5f4dcc3b5aa765d61d8327deb882cf99
http://localhost/dvwa/hackable/users/admin.jpg 2020-11-08 11:48:17 0
2 Gordon Brown gordonb e99a18c428cb38d5f260853678922e03
http://localhost/dvwa/hackable/users/gordonb.jpg 2020-11-08 11:48:17 0
3 Hack Me 1337 8d3533d75ae2c3966d7e0d4fcc69216b
http://localhost/dvwa/hackable/users/1337.jpg 2020-11-08 11:48:17 0
4 Pablo Picasso pablo 0d107d09f5bbe40cade3de5c71e9e9b7
http://localhost/dvwa/hackable/users/pablo.jpg 2020-11-08 11:48:17 0
5 Bob Smith smithy 5f4dcc3b5aa765d61d8327deb882cf99
http://localhost/dvwa/hackable/users/smithy.jpg 2020-11-08 11:48:17 0
在该表中,用户的信息其实就是一行行的记录,一行的记录代表一个用户的相关信息。如果我们在找回密码的时候,直接输入某个属性,比如手机号、邮箱等,通过这个属性来修改密码,而不验证这个属性对应的真实用户(即属性与真实用户没有准确的对应关系),那么,我们就可以任意填写手机号、邮箱等,使其作为身份验证的凭据。此时,程序直接就通过我们的验证凭据了。原因就是程序的验证逻辑存在问题。
微信公众号:计算机与网络安全
ID:Computer-network
一如既往的学习,一如既往的整理,一如即往的分享。感谢支持
“如侵权请私聊公众号删文”
【好书推荐】
扫描关注LemonSec
本文始发于微信公众号(LemonSec):Web安全:逻辑漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论