主页 > 网络知识 > 登录注册表单渗透(3)

登录注册表单渗透(3)

程序因为无从获取Cookie/sessionID,会认为攻击者是首次访问,无论什么时候,验证码都不会出现!

Q2:验证码不过期,单个验证码反复可用

原理:大部分情况,验证码在web服务器上对应一个session值。如果完成一次校验,不标记这个session已失效,就会造成同一验证码反复可用,因此攻击者在cookie中带固定的sessionID和固定的一个验证码字符串,即可轻松爆破。

还有一种非常常见的代码实现思路,更新session的工作是通过重新下载验证码达到的,开发人员最容易犯的一个失误就是把更新session的任务交给客户端浏览器来完成。Eg:302重定向,甚至是通过js、meta refresh重定向页面,来引导用户重新下载验证码。这些做法实际是错误的,要是用户拦截了重定向,没有发出新的下载请求呢? 上次的验证码是否还可以使用?开发者需要做到:一张验证码,只能使用一次。使用之后,立即过期,不可再次使用!

Q3   将验证码内容输出到客户端

不管出于什么考虑,都不应该把验证码的内容发送到客户端cookie、或输出到response headers的其他字段。Eg:写入验证码的MD5值、 Base64转码等,太容易被黑客逆向破解,得到原值了,即便是加固定salt后输出,都是不安全的。

Q4 验证码太弱

通常出现逻辑错误的验证码,同样存在太弱的通病,使用开源的tessertact OCR引擎,不经任何训练,不人工去噪处理,能识别互联网上的大部分验证码!

实例演示:  验证码重放攻击

漏洞详情:测试发现,在用户登录时,验证码不是即时刷新,导致攻击者可通过重放验证码进行登录爆破。

 

登录注册表单渗透

 

 

登录注册表单渗透

 

抓包发现验证码数据并没有传输到后端校验

漏洞修复

1.验证码只能用一次,用完立即过期!不能再次使用,实现一次一码。

2.验证码不要太弱。使用扭曲、变形、干扰线条、干扰背景色、变换字体等。

3.大网站最好统一安全验证码,各处使用同一个验证码接口。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!