前言
大家都知道,渗透的过程中,遇见登录框是很常见的。下面就简单总结一下渗透中遇见登录页面的思路:
首先登录页面可能产生哪些漏洞呢?
1、弱密码与暴力破解
2、万能密码、SQL与XSS(注入)
3、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误
4、查看登录页面源代码,看是否存在敏感信息泄露
5、不安全的验证码
6、在注册账号的时候,是否存在不安全的提示
7、不安全的密码,在注册账号的时候密码没有限制复杂度
8、任意无限注册账号
9、在暴力破解的时候不会限制ip,锁定用户
10、一个账号可以在多地登录,没有安全提示
11、账户登录之后,没有具备超时功能
12、OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码
13、逻辑漏洞,任意更改密码
14、越权漏洞,纵向、横向越权
15、数据包含有风险信息泄露,比如COOKIE
16、不安全的数字传输,密码为明文,未使用https证书
首先从登录框突破
对于突破登录框的方法,由简到难总结如下:
1.弱密码与暴力破解
弱密码与爆破可以说是非常常见的。为啥把他们放在一起归类呢,因为在尝试从登录框突破的思路中,我首先会尝试使用类似admin/admin这样的弱密码进行登录,如果失败,那么在条件允许的情况下,便会开始爆破了,爆破的核心也是弱密码。
2.万能密码、SQL与XSS(注入)
2.1 万能密码
万能密码其实是一种SQL注入方法,所以这里就把它与sql、XSS归类到一起。
万能密码与sql注入的原理相同,例如:
一般Mysql数据库的登录框sql语句如下:
select name.passwd from users where username=‘name’ and password=‘pwd’,通过创造一个特殊的字符串带入查找语句,我们可以构造例如下列万能密码尝试绕过:
’ or ‘1’=’1
‘ or 1=1 - -
admin‘ or 1=1 - -
1'or'1'='1'or'1'='1
2.2 sql注入
要检验登录框是否存在sql注入,要抓包观察回显信息,原理于上面万能密码相同,也就是使用常规sql注入的方法,例如在登录框中添加’后,观察回显是否不同,是否报错,就可以在登录框实现注入了。也可以利用参数溢出的思路查看是否有报错信息。
2.3 XSS+CSRF
xss在登录框比较少见,而且输入框也有字数限制,但是也不是没有,这里主要提供思路,使用目标不限于登录框。这里有两种情况:
一种是存储型xss没有csrf,存在的xss也不属于self-xss简称自插,面对这种情况,就要利用到xss平台,创建项目后,在可能存在xss的地方注入。
Self-XSS的场景:
一些网站为了用户体验在提交信息失败并且需要返回去填的时候会帮你自动把之前填写的信息补全回来但是很多网站也不会对输出进行过滤,这样就可能存在 XSS 的漏洞,比如:用户登录失败的时候网站会自动把上次尝试登陆的用户名补全,但是并没有对用户名信息进行过滤,所以就存在 XSS。
另一种情况是当网站同时存在xss与csrf,但是xss是没啥用的self-xss(self-xss是:只能对本地客户端产生影响的跨站脚本攻击,举例来说就是获取到的cookie是自己的),虽然selfxss没有什么实际危害,但是一旦结合跨站请求伪造则会导致危害升级,并且成为存储型的跨站脚本攻击。当然前提是测出来了存在这两处漏洞。
操作就是用bp拦截xss的数据包,然后生成POC
寻找逻辑漏洞
如果在登录框无法找到切入点去深入,也可以从发现漏洞的目的挖掘逻辑漏洞。
1.用户名枚举
利用登陆时输入系统存在的用户名错误密码和不存在的用户名错误密码,返回不同的出错信息可枚举出系统中存在的账号信息。通过这种思路,利用手工方式,输入系统中存在的用户名和不存在的用户名,密码随意,尝试登录,查看其回显内容。
例如:输入存在的用户名admin,密码错误;输入不存在的用户名test,用户不存在。
2.任意密码重置
很多网站存在找回密码功能,但是未对发起密码重置请求的用户身份做校验,导致任意密码重置漏洞的产生。
比如有些网站的忘记密码,重置密码功能中只需要输入待重置密码的账号,并没有向用户绑定手机发送验证消息,导致攻击者可以重置管理员的密码。
这里举例的是最简单的一种情况,即便有些网站有向用户手机发送验证短信的功能,也可能存在这样的漏洞。
比如有时候验证码会直接在返回包中生成,或者验证码在本地认证,验证码可爆破,或者网页在找回密码时,向用户填写的手机号发送短信,由于没有校验机制,导致攻击者可以填写自己手机号重置管理员的密码,类似思路有很多,可以根据实际情况随机应变。
3.任意用户注册
应用程序未使用验证码等防自动化操作的方法,可批量注册。注册不需要验证码时,攻击者通过编写自动化脚本,实现程序自动提交注册信息;若注册需要验证码,但验证码位数不多于4位且为纯数字时,通过使用软件burpsuite的intruder功能穷举得到正确的验证码后,再结合自动化脚本工具即可实现批量注册垃圾账号。
4.短信轰炸
短信轰炸——赏金猎人的最爱
短信轰炸攻击是常见的一种攻击,攻击者通过网站页面中所提供的发送短信验证码的功能处,通过对其发送数据包的获取后,进行重放,如果服务器短信平台未做校验的情况时,系统会一直去发送短信,这样就造成了短信轰炸的漏洞。
短信轰炸又分为任意手机号短信轰炸和当前手机号轰炸,不同情况威胁级别不同。
操作方法用burp重放或爆破都可以:
利用Null payloads 模块可以指定次数反复重放同一数据包。
5.任意用户覆盖
任意用户覆盖是用户注册模块中存在的逻辑漏洞,攻击者可以在注册页面恶意注册与已知用户同名的账号达到注销用户的目的。
同样的思路也可以利用到重置密码的思路中,在正常重置密码的流程最后一步修改重置密码用户。不同网站思路不同,主要根据数据包内容决定思路。
6.验证流程绕过
密码修改一般分为三个步骤:1)用户输入需要修改密码的账号;2)验证;3)密码重置。如果服务器在最后密码重置中没有对上一步流程进行进一步的校验,则可能导致验证步骤可以被绕过,从而可以修改任意用户密码。
测试方法: 在找回密码页面输入自己的账号,点击下一步进入获取验证码页面。点击获取验证码,提交获取的验证码,进入密码重置页面,记录密码重置页面的URL。在找回密码页面输入需要重置密码的他人账号,点击下一步进入获取验证码流程,点击获取验证码。在浏览器地址栏输入记录密码重置页面的URL,测试是否可绕过第二步验证直接进入重置密码页面。如果可以进入,直接输入新密码测试是否可以成功修改密码。
验证码问题
1.验证码不生效/可爆破/可重复利用
找回密码的时候获取的验证码缺少时间限制,仅判断了验证码是否正确,未判断验证码是否过期,导致验证码可以重复利用,同时如果验证码为4位存数字,可以利用正确验证码与错误验证码的返回值不同判断枚举验证码是否正确。
2.验证码可识别
指图片验证码比较"存粹",没有点和线的干扰,可以利用工具自动识别验证码达到绕过。
插件使用指南:https://gv7.me/articles/2019/burp-captcha-killer-usage/
3.验证码绕过
3.1 验证码回显前端
获取验证码时验证码回显前端,并直接返回在Response内容中
3.2 本地验证的绕过
客户端在本地进行验证码的正误的判断,判断结果也可以在本地修改,导致可以修改状态值达到绕过效果。
(绕过人机验证:https://www.cnblogs.com/H4ck3R-XiX/p/15165424.html)