专栏首页FreeBuf登录注册表单渗透

登录注册表单渗透

大家在甲方授权的渗透测试中,经常会遇到各种表单:登录、注册、密码修改、密码找回等表单,本技术稿着重介绍关于各种表单的渗透经验,抛砖引玉,欢迎大家交流互动。

方便大家查看,制作如下思维导图,以下只详细介绍其中一些重要常用的漏洞。

一、登录处是否可绕过--->(抓包decode+爆破)【高危】

password在前端用url编码--->URL Decode

爆破成功

漏洞修复

1、增强验证码机制,为防止验证码被破解,可以适当增加验证码生成的强度,例如中文图形验证码。 2、用户名或密码输入错误均提示“用户名或密码错误”,防止黑客获取到注册用户信息。 3、限制用户登录失败次数。 4、限制一定时间内IP登录失败次数。 5、使用双因子验证策略

二、账号/密码可枚举 [高危]

漏洞描述:由于页面对输入的账号、密码判断的回显不一样,攻击者可以通过回显差异进行用户名的枚举,拿到账户名来进行弱口令的爆破。

用户名存在

用户名不存在

漏洞修复

1.增加验证机制,如验证码 2.添加token 3.统一身份验证失败时的响应,用户名或密码错误

三、账号/密码硬编码【高危】

漏洞描述:账号或密码都被硬编码在页面中,只需要输入正确用户名/密码/验证码即可

漏洞修复

1.取消默认硬编码配置,删除敏感信息,禁止直接明文存储在前端登陆框。

四、手机验证码可爆破

前提:该页面没有图形验证码或图像验证码失效+后端对验证码输入错误次数没有做任何限制+验证码的时效性高于爆破时间.

爆破成功

漏洞修复

1.点击获取手机验证码后产生即时更新强图形验证码 2.限制输入错误次数 3.缩短验证码的有效期

五、短信轰炸

修改号码回显为ok

现在可以写个小程序对目标进行循环发包,实现短信轰炸

Note:为了防止被ban,给大家说个技巧:可以停顿十秒再发下一个;有时虽然后端对其进行验证,但是还是有办法绕过 1>删除cookie值 2>手机号后加空格或\n

漏洞修复

1.后端对同一手机号在某段时间只能发送一条短信,并且设置发送次数的上限

六、注册表单之批量注册

正确的信息注册 response:{"content":"/User","type":1,"data":null}

对手机号进行批量遍历,发现批量成功,存在批量注册漏洞

七、注册表单之覆盖注册

漏洞详情:此漏洞是指以前已经用一个手机注册了会员,由于此漏洞的存在,导致可以利用该手机号重复注册,并且会覆盖之前注册的会员信息。

已注册:显示ture,没注册:显示false

修改返回包为false

发现此手机号又可以注册了!

八、任意用户密码重置

漏洞描述:在修改密码表单处 通过修改数据包的特定数据修改任意用户的密码

修改id为需要重置的用户

id 10016的密码重置为123456

漏洞修复

1. 使用session对当前用户的权限做校验 还有以下情况我就不一一举例了。 1>Cookie值替换 2>跳过验证步骤 3>验证码未绑定用户

九、图形验证码绕过(从代码层面分析)

原理解读:

验证码(CAPTCHA)Completely Automated Public Turing test to tell Computers and Humans Apar --->全自动人机区分的图灵测试。

图形验证码应用非常广泛,无论在Web应用还是客户端软件,为防止暴力破解、机器注册等。遗憾的是好多开发者不得要领,为完成工作进度,敷衍了事。

验证码常见的安全问题: 1>验证码存在逻辑缺陷,可被绕过,可被逆向; 2>验证码太简单,容易被机器识别;

Q1:把验证码是否出现的判断逻辑放在客户端浏览器

原理:某些系统默认不显示验证码,只有在用户校验错误一定次数之后再出现。

那我非常好奇,那如何判断用户已经错误几次了呢?没有经验的开发可能这样做:

1.在cookie中写入一个标记,Eg:loginErr = 1,后续错误累加. 2.在session中写入一个标记,Eg:loginErr = 1,后续错误累加.

问题来了,如果攻击者不带Cookie提交HTTP请求呢?或攻击者不更新Cookie中的loginErr的值反复提交呢?

程序因为无从获取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.大网站最好统一安全验证码,各处使用同一个验证码接口。

*本文原创作者:星空111,本文属于FreeBuf原创奖励计划,未经许可禁止转载

本文分享自微信公众号 - FreeBuf(freebuf),作者:星空111

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 再见了,打码平台:对抗打码平台的验证码思路

    某日,一朋友深夜微信上问我,如果打码平台盯上了你,你该咋整? 政治正确的回答方式是:加强风控策略,多维度判断使用者意图,减低对验证码的依赖。 显然这不是我或者朋...

    FB客服
  • 验证码安全那些事

    前言 最近在研究验证码安全,本文主要分析四种流行的验证码(图形,短信,语音和滑动)进行分析,写这篇文章的出发点并非是绕过或破解验证码,而是根据自身业务情况来选择...

    FB客服
  • 黑产用“未来武器”破解验证码,打码小工都哭了

    当我们正讨论如何用AI推动产业升级、改变未来生活时,不法分子也在研究AI技术,并通过各种手段非法牟利。近日,腾讯守护者计划安全团队协助警方打掉市面上最大打码平台...

    FB客服
  • 再见了,打码平台:对抗打码平台的验证码思路

    某日,一朋友深夜微信上问我,如果打码平台盯上了你,你该咋整? 政治正确的回答方式是:加强风控策略,多维度判断使用者意图,减低对验证码的依赖。 显然这不是我或者朋...

    FB客服
  • 互联网应用常见验证码技术一览

    原理:向服务端请求,生成随机的字符,写入会话请求,同时将随机字符生成对应图片,响应给前端;前端输入对应字符的验证码,向后台发起校验。

    歪脖贰点零
  • 网站安全检测之图片验证码

    在对网站安全进行整体的安全检测的时候,用户登陆以及用户留言,评论,设置支付密码,以及一些网站功能方面都会用到图片验证码,针对于验证码我们SINE安全对其进行了详...

    网站安全专家
  • 自动化测试解决验证码问题

    短信验证码只做了手工测试,当时想的是短信验证码需要一台手机,并且能够发送验证码,由于当时没有做移动端的任何测试,考虑到成本问题只能在自动化测试是放弃这种登录验证...

    软测小生
  • 如何设计相对安全的图形验证码?

    验证码(CAPTCHA)即“Completely Automated Public Turing test to tell Computers and Huma...

    宜信技术学院
  • 写给爬虫工程师的验证码识别教程

    但是对于一个爬虫工程师来说,去学习 机器学习相关知识可能成本太高了.(当然有空的话,还是要好好学的)

    爬虫
  • 网站漏洞修复之图片验证码的详细修复方案

    在对网站安全进行整体的安全检测的时候,用户登陆以及用户留言,评论,设置支付密码,以及一些网站功能方面都会用到图片验证码,针对于验证码我们SINE安全对其进行了详...

    技术分享达人

扫码关注云+社区

领取腾讯云代金券