MY0723
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
前言
本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担
渗透测试项目中网站哪里可能存在逻辑漏洞呢?
这里总结了三大类关于登录页面、会员系统、支付系统可能出现的逻辑漏洞情况,参考之前hackctf公众号里总结的逻辑漏洞位置一张图提供思路,内容比较多所以分开来写,同时参考网上文章及个人案例进行了总结补充,希望大家多多关注。
一
登录页面
0x01 登录-返回凭证
返回凭证的三种方式:
1.URL返回凭证
使用firefox的firebug查看请求链接,看链接中是否有验证码等密码找回凭证
2.抓包直接返回
根据手机号找回密码后抓包,可以发现验证码直接显示 verifycode=xxxx,验证码可直接显示看到,如果信息被加密,解密即可
3.密码找回凭证在页面中
通过密保问题找回密码,查看源码,密保问题和答案就在源码中显示
0x02 登录-暴力破解用户密码
暴力破解用户名密码的情况:
出现在登陆部分没有验证码机制,
没有根据用户名限制失败次数,
同时没有根据ip限制失败次数等情况下。
通常思路:
1.直接拿密码字典爆破某一个用户名,密码,
2.拿已确定的弱口令密码,去跑top xx的用户名,
3. 若存在返回提示用户名错误或者密码错误的情况下,可以分别爆用户名和密码。
0x03 登录-验证码绕过
漏洞原因:
由于逻辑设计缺陷,可尝试绕过验证:
1.直接删除COOKIE,
2.验证码参数可绕过,
3.当验证不通过清空session时,
4.验证码参数值为空时可绕过等 。
测试方法:
1.输入正确账户密码等信息和错误的验证码,登录时拦截抓包,
2.删除COOKIE, 验证码参数值为空时绕过等,
3.网页正常登陆成功。
0x04 登录-验证码暴力破解
常见验证码机制:
1.有的验证码输入正确一次,在一定时间内不用再输入。
案例:
忘记密码处点击获取验证码,验证码为534156,有效期为3分钟
将新密码填入后点击确定,已成功修改密码
登录处再次忘记密码
重新填入手机号,3分钟内不需重新获取新验证码,填入上次验证码534156及新密码,可直接修改成功
2.有的验证码输入正确一次,会在你session中设定一个值,告诉服务器你已经通过验证码验证了。
3.有的验证码因为逻辑问题只是一个摆设,正常的逻辑为先对比验证码是否正确,再检测账号密码是否正确,反过来了就变成了摆设。
0x05 登录-短信轰炸
漏洞原因:
应用系统的登录模块短信密码生成机制存在逻辑缺陷,没有限定一段时间内可发送的短信数量,攻击者可以在知道对方用户名的情况下,通过fuzzer技术实现短信炸弹。应用程序没有限定一段时间内给同一个用户可发送的短信数量,导致形成短信炸弹漏洞。
整改建议:
修改短信发送模块源代码,限定一段时间内可发送的短信数量。
案例:
在登陆处忘记密码处任意输入账号及任意手机号burp拦截,并放置重放处,账号及手机号未判断是否存在,即可一直发送短信,造成短信轰炸,存在逻辑问题。
连续重放
0x06 登录-Sesslon覆盖
sessio覆盖漏洞原理及修复方案找到一个比较好理解的案例分享:
https://blog.csdn.net/qq_42943680/article/details/104004546?
贴出来学习一下
0x07 登录-cookie伪造
漏洞原因:通过修改 Cookie 中的某参数来实现登录其他用户
测试方法:
1.使用一个账号登录,找一个可以证明身份的页面,例如首页的欢迎 xxx 或者是个人中心显示昵称的地方,
2.刷新该页面拦截请求,观察Cookie中的字段和值,例如 userid=xxx,修改Cookie中的值,把 xxx 改成 admin ,
3.forword 放行,页面显示 admin 的信息,则存在此问题。
修复方法:对于客户端标识的用户信息,使用 Session 会话认证方式,避免通过 Cookie 去仿冒其他人的身份。
0x08 注册-任意用户注册
1.未验证邮箱/手机号是否正确,直接填写就可注册
2.批量注册,
3.个人信息虚假伪造
需填写身份证等信息,可任意构造绕过身份证与姓名,同时也可能存在直接伪造一个大于18岁的就可以绕过防沉迷系统 ,
4.前端验证审核绕过
(1)使用正常账号修改密码,获取验证码,验证码随便填一个
(2)使用bp抓包,服务器会返回验证码错误之类的信息,但是我们可以使用正确的信息一般情况下正确的响应码有:0、1、200、true、success来进行替换,可以先尝试一个正确的验证码发包后查看响应包中的正确响应码
5.用户名覆盖
数据库中已经有一个用户名叫做admin了,但是一个新用户注册了账号,新用户的用户名也叫admin,但是开发人员并没有对重复的用户名进行提示和判断,而是直接将数据插入数据库,导致老用户的用户名被覆盖了。
0x09 注册-短信轰炸
和登录情况基本一样这里就不多解释
0x10 注册-返回凭证
和登录情况基本一样这里就不多解释
0x11 忘记密码-任意用户密码重置
1,短信验证码可爆破;
2,短信验证码显示在获取验证码请求的回显中,与返回凭证一样;
攻击者知道被攻击用户的手机号码,获取短信验证码,抓包就可以在回显中看到用户收到的重置用的短信验证码。
3,注册手机号及短信验证码未进行匹配性验证;
攻击者用自己手机号码收到的重置用短信验证码可以重置其它用户的密码。
4,登陆成功后通过修改密码功能平行越权;
用户登陆成功之后可修改自己的密码,修改请求只需要输入新密码,请求中未验证当前用户的cookie、session、id等身份信息,可以通过修改id等参数发包后重置其它用户的密码。
5,未校验身份信息的唯一标识cookie信息;
重置请求参数中没有用户名、手机号码、id等身份标识,唯一的身份标识是在cookie中。攻击者用自己的账号进行重置,最后重置请求中替换掉请求中的cookie进行其它用户密码的重置。
6,修改返回包响应码及响应包信息(与上面任意注册雷同)
0x12 忘记密码-返回凭证
和登录情况基本一样这里就不多解释
0x13 忘记密码-短信轰炸
和登录情况基本一样这里就不多解释
参考文章:
https://forum.butian.net/share/1453
https://www.jianshu.com/p/f1dbd4482cc0
https://blog.csdn.net/qq_42943680/article/details/104004546
https://blog.csdn.net/qq_44418229/article/details/125998587
小结
这是逻辑漏洞系列中的关于登录页面第一篇,后续还会更新关于会员系统及支付系统中可能存在的逻辑漏洞的地方,一个登录页面可能存在漏洞的地方就有很多,所以大家一定要细心!
感谢各位大佬们关注-不秃头的安全,本账号为新起公众号,后续会坚持更新渗透漏洞思路分享、安全测试、好用工具分享以及挖掘SRC思路等文章,同时会组织不定期抽奖,希望能得到各位的关注与支持。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
