登录认证模块
- 万能密码:
现在很少了,但也可以试试。
例子:admin' or '1'='1'
- 弱口令
社工尝试获取账号,并构造密码库。 - 明文密码传输
edu常有,但是不算src,可以在报告里凑数。 - cookie仿冒
有些网站对cookie检测不严格,我们可以构造一些cookie来登录。 - session会话固定
会话固定攻击是利⽤服务器的session不变机制,攻击者⾸先登陆⾃⼰的账号, 获取⾃⼰的sessionid,⽐如是sid=hackisme,而⽹站可以通过链接xxx.com/admin/r=admin&sid=hackisme
把当前⽤⼾的sessionid值更改为sid对应的值hackisme, 攻击者构造好这个连接发送给管理员,管理员访问这个连接,那么此时,攻击者的账号登陆之后就有了管理员的⾝份。
未授权访问和越权
- 未授权访问:是指⽤⼾在没有通过认证授权的情况下直接访问理论上应该需要认证之后才能访问到的⻚⾯。测试的⽅法是,在⼀个浏览器登录之后访问后台、或前台的个⼈信息,将相关的⻚⾯链接复制到其他浏览器访问,看是 否能够访问成功。
- 越权
垂直越权:由普通用户到管理员
水平越权:获取其他用户的权限
工具:Authz插件
原理:以同一个身份进行测试,在头部添加另一个用户的信息,相当于两个用户访问,若正常返回两个用户的信息,则存在越权漏洞。
验证码相关问题
这里是指手机或邮箱验证码,一般出现在注册,找回。
- 空验证码绕过
一般很少,删除包中验证码即可通过。 - 验证码客户端返回
抓取数据流,其中有的包中含有直接返回到客户端的验证码信息,但是有些会返回加密验证码,需要我们解密后再提交。 - 验证码轰炸
在短时间内重复向某人发送大量验证码。
防御⼿段就是,设置60s/90s内只能向同⼀个⼿机号发送⼀次短信,或者每次提交需要填写图形验证码 之类的,证明不是机器⼈。
但是有些服务器判定不严谨,手机号后面加个空格就会被当成另一个手机号,从而达到绕过60s。 - 验证码暴力破解
即字面意思,防御方法:验证码有效期或设置验证码提交次数。 - 绕过验证码登录
有时响应包中会带有状态,例如验证成功为0、失败为1,这时我们就可以通过修改参数来绕过验证码。 - 验证码串用
有时验证码和手机号未绑定,而是和cookie绑定,就是cookie不变验证码也不变,所以我们可以先用自己的手机号获取验证码然后输入,之后抓包该包里的手机号,于是我们就可以注册别人的手机号为己用。
防御方法:验证码和手机号(或者用户名、邮箱等)绑定,而不与其他绑定。
支付漏洞
- 修改金额和数量
在支付当中,购买商品一般分为三步骤:订购、确认信息、付款。在这三个步骤中我们可以直接抓包并修改包中的数值。有时也可以通过修改运费等为负数,来实现减少金额。 - 商品编号篡改
可以通过改商品编号来实现以a的价格买b。 - 顺序执行缺陷(支付绕过)
通过某个支付成功的连接来绕过支付 - 更改支付状态
有时在前端验证,验证结果返回服务端,这里我们就可以进行操作。 - 修改优惠券金额
可以尝试修改优惠券金额或者数量,看下是否可以造成0元购买甚至负数购买。 - 并发操作
这个思路就是在买一个商品的时候,支付操作抓包,高并发环境下反复多次购买,有可能会造成比如10块钱的东西,高并发操作下,花10块钱买了很多个。高并发在很多操作下都很适用。 - 多次购买折扣商品
1.购买折扣商品,⽣成订单A,不⽀付,挂着 2.再次点击购买折扣商品,⽣成订单B,不⽀付,挂着 3.回来⽀付订单A,⽀付成功后,再⽀付订单B,就可以多次购买折扣商品。
活动相关(薅羊毛)
- 重放攻击
跟上面那个相同,就是高并发操作获取更多数量。 - 改金额、积分、数量、时间、次数等
密码找回模块
任意密码重置:
- 验证码没和用户身份绑定,导致我们可以修改别人的密码
- 验证过后修改密码处没有校验用户字段的值,所以我们可以在设置新密码时修改用户名来实现修改别人的密码。
- 修改密码处id替换(update注入):修改密码的时候,没有对原密码进行判断,且只根据id的值来修改用户的密码,类似的SQL语句
update user set password = 'qwer1234' where id = '1'