行业新闻

业务安全漏洞-登录认证实战总结(二)

业务安全漏洞-登录认证实战总结(二)

1.验证码复用

漏洞描述

当服务器端受理请求后,没有将上一次保存的session及时清空,将会导致验证码可重复使用

通常情况下在网站注册、登录、找回密码等页面都会设计验证码验证。如果设计不合理,将会刀子验证码在验证成功一次之后,下次使用的就不在验证也就说可以重复使用。

案例:

可以看到此处前端登录虽有验证码验证,但是只验证一次。后续可一直使用该验证码。

测试方法:发送到repeater模块多次发包,查看是否提示验证码错误。

第一次发包:

第二次发包:

提示验证码错误


第三次发包输入页面已经更新后的验证码,发现不在提示验证码错误



第四次发包同样不提示,此时验证码就已失效,可造成暴力破解




修复建议


当服务器端处理完一次用户提交的请求之后,及时将 session域中的验证码清除,并生成新的验证码。




2.验证码为空绕过



当验证码为空时,则不进行验证码验证。在进行测试也可以试试null 有时会有意外收获






3.token可预测



当我们进行重复发包时,提示token错误,说明token已过期



但是在返回包中,我们可以看到重新生成的token,由此漏洞产生





破解模块设置



给第一个添加字典



在options设置响应token



重定向设置 总是,线程设置为1




Pyload设置递归搜索,给定一个初始token



开始暴力破解,成功解出





4.验证码过于简单可被识别






使用到的工具:Pkav HTTP Fuzzer 1.5.6



将抓到的数据包填入工具中设置




此处设置字典





验证码设置:


验证码地址,清晰的数字





点击识别测试



重放选项设置,302重定向,长度固定4位





出现验证码错误重试



开始发包





5.登录认证绕过



漏洞描述:


有的登录页面可以通过禁用js样式(不常见),能轻易的绕过登录认证,直接进入系统。或者是通过burp抓报改包进行登录绕过也是可以的(常见一点)


示例:


设置拦截响应包:





开启拦截:





把302 found改成200



成功登录




风险分析


如果应用程序在认证上没有做好,可以导致恶意用户或者攻击者绕过认证,访问内部资源,这类漏洞通过防火墙和入侵检测系统很难预防。



修复方案


可从以下几个方面预防认证绕过:


增加验证码,不使用前端验证,密码通过加密算法加密,失败次数多加锁,密码强度增加




6.短信验证码可暴力破解




漏洞描述


短信验证码位数太短或有效期太长导致可暴力破解


测试方法:


点击发送短信验证码,输入任意验证码,提交请求,使用burpsuite拦截请求,在intruder模块设置验证码参数为枚举变量,这是payload类型为numbers,对验证码进行暴力破解。




修复方案


  1. 短信验证码不少于6位;
  2. 有效期不超过1分钟;
  3. 验证码错误次数超过上限应采取账户锁定策略。




7.XSS跨站脚本漏洞




漏洞描述


跨站脚本攻击的英文全称是Cross Site Script,为了和样式表区分,缩写为XSS。发生的原因是网站将用户输入的内容输出到页面上,在这个过程中可能有恶意代码被浏览器执行。


跨站脚本攻击,它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。已知的跨站脚本攻击漏洞有三种:


  1. 存储式
  2. 反射式
  3. 基于DOM


测试方法:


1、GET方式跨站脚本:


在输入的参数后逐条添加以下语句,以第一条为例,输入http://www.exmaple.com/page.xxx?name=


文本输入框:需要对页面上所有可以提交参数的地方进行测试。具体跨站脚本的测试语句根据实际情况的不同而不同,可自行构造,以及触发事件等切换,这里只列出了一些最常见构造语句。


示例:登录窗口验证码处存在反射型XSS注入



点击登陆,成功弹出内容




风险分析

攻击者可以使用该漏洞构造钓鱼链接,诱骗受害者访问并填写用户名和密码,从而窃取用户的认证凭据

修复方案

1、总体修复方式:验证所有输入数据,有效检测攻击;对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。

关闭