朋友们现在只对常读和星标的公众号才展示大图推送,建议大家把LHACK安全“设为星标”,否则可能就看不到了啦!
0x01 简介
随着企业和网民对网络安全的关注日益增加,Web安全已成为一个焦点领域。通过采用各种防护措施,如使用安全的开发框架、入侵检测系统和安全防护软件,常见的Web漏洞数量已经大幅减少。举例来说,几年前,轻松找到存在SQL注入漏洞的动态网站,因为SQL注入的威胁巨大,但如今许多Web开发框架从底层开始就能有效杜绝SQL注入问题,采用了预编译SQL语句等方法。类似地,XSS、命令执行和CSRF等漏洞也在不断受到关注和加强防护。
然而,我们谈论的"逻辑漏洞"却一直没有减少,甚至在未来可能成为Web安全攻防的主要战场。这是因为逻辑漏洞涉及到代码逻辑,攻击者在找到关键点后通常无需构建恶意请求,就可以成功攻击,很容易绕过常规防御手段。以下是一些常见的逻辑漏洞示例,供学习参考。
注:以下漏洞示例仅用于教育目的,严禁进行非法测试和攻击活动。
0x02 逻辑漏洞
一、注册界面
注册中最常见的有两个,一个是恶意注册,另一个是账户遍历。一个好的注册界面应该是这样。
不应该是这样的!
要么采用短信或邮箱验证,要么使用难以自动识别的验证码,这样可以防止恶意用户批量提交注册请求。那么什么是"账户遍历"呢?在用户注册过程中,Web应用通常会包括检查用户名、手机号或其他标识的步骤,以防止同一账户被重复注册。通常,如果输入一个已存在的用户名,系统会提示“***用户名已存在!”这样的消息。
攻击者可以利用这个步骤来尝试大量的用户名,如果收到“用户名已存在”的提示,就意味着该用户名已被注册。然后,攻击者可以使用这些已知的用户名进行下一步操作,比如尝试进行登录爆破攻击(对已知用户名进行密码猜测,因为攻击者只需要关注密码问题而不必担心用户名)或密码重置攻击。
请注意,这种账户遍历攻击是一种恶意行为,严重违反了网络使用政策和法律规定,强烈不建议进行这种攻击行为。正规的安全测试应该遵循伦理原则和法律法规。
二、登陆界面
登录里比较简单的一种的情况就是登录界面不存在验证码可以直接爆破,第二种就是存在验证码但可被绕过,第三种是第三方账户登录可被绕过。
短信登陆:
获取验证码后随意填写,抓包
然后用intruder爆破。
图形验证码:
会有两种情况,验证码不刷新,验证码存在token。
如果爆破的话还要解决另外一个问题,每个登陆界面只能请求一次,因为还有一个隐藏的token参数。
这样的话就要每尝试一次动态获取这个token值,其中token中的值是和返回的PHPSESSID绑定的,所以这里同步获取PHPSESSID和token然后进行爆破。例如在burp中只需要更新post数据中tokenkey的值即可再次发包,但是并不会触发验证码错误。
第三方账户登录绕过
现在很多网站或APP都支持第三方账号登录,比如微信、微博,这些登录本身接口一般没什么问题,但是在使用的时候可能会出现逻辑错误,以知乎曾经爆出的一个漏洞为例,打开知乎客户端,用一个微博小号登录,拦截微博授权成功的请求地址:
https://api.weibo.com/oauth2/sso_authorize?sflag=1
修改Response Body,将uid改成要登录的uid:
最后成功登录。
知乎服务器端在拿到客户端提交的授权成功以后,还应该调用第3方平台的token校验,以微博为例子,应该再调用一次:https://api.weibo.com/2/account/get_uid.json,看拿到的uid是否和客户端提交的uid一致。另外登录位置也存在账号遍历的情况,比如有的登录逻辑是先判断是否存在这个用户名然后给予提示“用户名不存在”或不提示。
密码找回
密码找回的利用姿势比较多,还是先说验证码的问题。
验证码:
输入验证码、要找回的账号和手机号,点击“获取验证码”,同时拦截抓包,然后就可以在返回包中看到要认证的验证码,这样不用得到用户的手机,也能得到他的验证码
验证码的认证绕过
在密码找回界面,输入用户名和密码,点击获取验证码
验证码随便输,然后点击下一步,拦截返回包
将status改为0,然后就可以进入密码修改界面
成功,可以通过忘记密码,重新设置新密码!
三、越权
水平越权:就是相同级别(权限)的用户或者同一角色不同的用户之间,可以越权访问、修改或者删除的非法操作。如果出现次漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。总之,就是通过修改当前用户的id信息,越权到别的用户。
垂直越权:是不同级别之间或不同角色之间的越权;垂直越权又别分为向上越权与向下越权。比如,某些网站,像发布文章、删除文章等操作属于管理员该做的事情。假设一个匿名用户也可以做相同的事情,这就叫做向上越权;向下越权是一个高级用户可以访问低级用户信息(这也是不行的,这回暴漏用户的隐私)。总之,就是用普通用户,越权到高级用户或者管理员用户。
区别:水平越权的问题出现在同一个角色上,系统只验证了能访问数据的角色,而没有对角色内的用户做细分,也没有对数据的子集做细分,因为缺乏一个用户到数据之间的对应关系。由于水平权限管理是系统缺乏一个数据级的访问控制所造成的,因此水平权限管理又可称之为“基于数据的访问控制”;垂直权限问题出现在不同角色上,一般来说高权限角色可以访问低权限角色的资源,而低权限角色访问高权限角色的资源则被禁止。如果一个本属于低权限角色的用户通过一些方法能够过得低权限角色的能力,则发生了垂直越权漏洞。
四、支付漏洞
支付漏洞就是我们常听说的0元购这些。
常见的姿势:修改支付价格、修改支付状态、修改购买数量、修改附属值、重复支付、最小额支付、越权支付、修改优惠价等等。
这个种类比较多,订阅这个公众号,设置为星标,不然就看不到了,我们下期再详细说说。
哪里有什么写的不准确的地方,或者说有师傅自己的见解,感谢师傅们指出,谢谢师傅们看完文章!
如果您感兴趣,可以扫描二维码进行关注,后续将不断更新有关渗透测试知识和安全领域的有趣事物,以及一些有关src漏洞挖掘的经验。
后台回复:渗透书籍,获得各种渗透的书籍资料。
后台回复:护网,最新2023年护网资料
后台回复:渗透资料,获得渗透工具等等教程资料。
后台回复:SRC,获src挖掘的各种姿势。
后台回复:网安面试,面试大厂,值得拥有。
原文始发于微信公众号(LHACK安全):逻辑漏洞的挖掘与防范(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论