web安全之业务逻辑漏洞
业务逻辑漏洞的关键词:薅羊毛、与钱有关、通常为互联网公司的业务、代码逻辑不严谨。
身份认证
俗称“登录框安全”。可通过完善源码的登录失败处理机制,提升身份认证的安全性。
万能密码
#万能密码
用户:admin' or 1=1 #
密码:随意
用户:admin' or '1'='1
密码:随意
用户名枚举
弱口令爆破、撞库爆破
cookie伪造
造成任意用户登录,也属于垂直越权的范畴。
验证码突破
- 图片验证码识别:PKAV识别、python脚本识别、人工付费打码平台识别
- 验证码复用:即验证码形同虚设。例如某些计算型验证码、账户密码与验证码同时校验等。
- 前端js校验:抓包删除代码或直接无视,即可绕过。
- 后端校验:前端变、后端变;前端不变,后端不变——可用bp爆破?
- 固定型验证码:数量有限的验证码,可汇总成字典,作为变量参与爆破作业。
- 字符串验证码:非图片型验证码,可通过正则匹配参与爆破作业。
- 其它复杂的验证码验证机制需自己分析:
例如非首次登录尝试,才会出现验证码。而通过抓包分析,发现程序通过phpsession来判断是否为首次登录尝试。因此可篡改phpsession值来绕过。
例如密码输入错误后才出现验证码输入框,这种情况下通常验证码会在清空cookie后失效。因此可通过清空cookie来绕过。
例如某些滑动型验证码,通过抓包分析代码,发现如果xx参数与xx参数保持一致即为验证码验证成功。因此可通过篡改数据包来绕过。
任意密码重置
更改用户の密码时:
- 爆破手机验证码
- 凭证返回:在URL中、响应包中、网页源码中直接返回有凭证信息,可凭此直接重置密码
- 邮箱弱token:通过篡改构造邮箱修改密码的链接中的参数,如用户ID值、其它值(透过分析发现为unix时间戳+MD5的规律后爆破出一定时段内的值)
- token生成可控:行至验证身份这一步,填写正确的邮箱验证码后抓包分析,发现响应包中有一串加密字符串,将邮箱账号更改为欲重置的邮箱账号,同样返回一串加密字符串,将其拼接到更改密码的url中,即可跳过验证身份这一步而直接重置密码
- 绕过邮箱验证:邮箱验证信息发出后,不用理会,直接将post数据拼接到url后提交,则更改密码成功
- 篡改接收验证码、验证链接的手机号码、邮箱账号
- 删除密保问题:抓包删除密保问题的参数,即可无需回答密保问题而直接重置密码
- 跳过验证步骤:step=1篡改为step=4
- 欺骗本地js验证:篡改response包中的特征码,欺骗本地js验证机制跳过本步骤到下一步(不仅修改用户の密码时,登录后台时,亦可能存在此漏洞)
- session覆盖:同一浏览器中,行进至第一个用户的邮箱验证链接页面(请勿点击),第二个用户的邮箱验证链接发出后,点击第一个用户的邮箱验证链接,即可成功更改第二个用户的密码
注册新用户时:
- 重新绑定:抓包篡改手机号、uid号等,可实现别人的账号绑定自己的手机
- 注册覆盖:无“此用户已存在”的提示,导致覆盖已存在的用户
越权漏洞
或曰访问控制、业务授权安全。
- 水平越权:相同权限的不同用户之间可以相互访问。通过抓包篡改手机号码、邮箱账号、用户id、APPID等核心参数实现水平越权。
- 垂直越权:低权限用户可以访问高权限用户才可访问的页面。例如未授权访问敏感页面(密码更改的页面、后台登录后的页面等)。可通过对后台页面、密码更改页面增加session判断机制。
支付逻辑漏洞
抓包篡改商品的支付金额、数量、订单号、用户id等参数为其它用户id、其它商品订单号、负数等。
接口调用安全
接口即API接口。相关关键词:Json、xml、传输数据、传递参数
短信轰炸:发送短信验证码时抓包改包,进行重放攻击。
接口调用SQL注入(略)
接口调用XXE(略)