渗透中面对登录页面如何操作

前言

本文仅提供思路

1. 验证码

在用户的账号密码重置、注册、登陆都可以尝试测试。

1.1. 验证码爆破

通常手机号来注册的网站都会使用到验证码,而手机上的验证码通常都是4位或6位的数据,很少会出现有字母的情况,而你需要做的就是,首先使用自己的手机号来注册以下,看看验证码是多少位,是否存在字母的情况,那么你在注册的可以尝试,设定一定的范围,而这个范围包含你的手机号获取到的验证码,然后看看是否能够对其进行爆破。一般来说,只爆破四位数的验证码,因为验证码大部分都有时间限制。数据包请求过多的话就没意义。

PS:大部分站点、应用、小程序等的验证码可能都有防火墙、waf,所以爆破的时候要挂代理。

而验证码存在的位置不局限于登陆页面,可能也会存在个人信息修改、密码重置等位置,所以这里可以开阔一下的自己的思想,尽量将所有存在验证码的位置都进行测试一下。

1.2. 验证码回显

验证码回显属于逻辑漏洞,主要就是关注页面中是否存放明文的验证码,或者在发包的时候抓取一下响应包,有时候验证码就可能会在响应包中存在,多关注一下响应包。
还有就是正常情况下验证码应该是以图片形式返回,但是再包中直接是显示字符串,并且返回前端校验....

1.3. 注册码回显

注册码,有些网站需要使用注册码才能够进行注册,而你也可以利用验证码回显的思路,看看回显包中是否存在注册码,有些网站注册码可能都是一个,就会写的比较死,或者直接在包中进行比较,还有就是有些会在回显包中对你输入的注册码进行校验,那么就会出现正确的注册码,那么这也就会出现一个漏洞。比如下面这个例子:

其中magic是页面注册码,当不正确的时候会弹出比对信息

1.4. 无效验证码

无效验证码,顾名思义就是这个页面当注册的时候是无效的,比如明明是1234,但是你输入个4321也能够注册成功,这个不单单是注册的时候能够测试,比如登陆的时候,也可以尝试是否验证码生效。(这一点比较少见)
如果无正确的账号密码该如何测试,很简单,一般情况下,登陆页面会先校验验证码是否正确,如果正确再去校验账号密码,那么你就可以随便输入一个账号密码,然后在随便输入一个验证码,如果直接出现账号密码错误,那么可能存在无效验证码的情况,而如果出现验证码错误,那么可能就不存在这个漏洞。但是这不是绝对性的。

1.5. 验证码复用

这个就是一个验证码用完后,并未重新生成,一直都是一个验证码,就导致可以实现账号密码爆破。

1.6. 短信轰炸

短信轰炸,简单来说就是对一个手机号进行多次发送验证码,抓个包一直重发,当然你要看看有没有什么cookie值啥的,有的话尝试删除,在测试有没有绕过,有些网站会通过你的IP地址,或者一些时间校验,来限制你发包,比如你发完后,页面会显示60秒后再尝试发送,那么你抓包看看是否真的限制了60秒。
同时短信轰炸又分为,发送给一个手机号,还有就是批量发送给不同手机号。

1.7. 批量注册

这个是基于验证码无效的情况,对用户名字段进行不断的修改,使其能够成功注册。

1.8.验证码同时发送

这个漏洞比较少见,即在发送验证码的时候在一个数据包中写两个手机号,两个手机号中间使用符号分隔,这样系统会同时给这两个手机号发同一条验证码,这就产生了验证码漏洞。

1.9.验证码为空

在注册或者找回密码的时候,去抓验证码的包,将验证码字段删除,或者为空,看看是否会生效。比如当我们遇到请求包中携带验证码的时候code=123123&tel=手机号&varcode=短信验证码,可以尝试将验证码的值删除code=123123&tel=手机号&varcode=

1.10.删除验证码参数绕过

可以尝试将验证码的相关参数删除。比如code=123123&tel=手机号&varcode=短信验证码,可以将varcode参数删除进行验证

1.11.万能验证码

有的时候开发为了省事,使用万能验证码,比如:0000、9999、1234等。如果站点存在该类漏洞的话最好看看JavaScript文件。

2. 数据校验

这个主要就是由于数据包到服务器的时候未再次校验导致的。

2.1. 返回包修改

在部分网站中可能会存在返回包的情况,比如会出现错误显示false,那么可以尝试是否能够将false修改为ture,或者状态码400,修改成200,但是有些开发人员会有自己的癖好,可能不安套路出牌。

2.2. 关系校验

这个关系校验就是当发送验证码的时候,未做手机号或邮箱与验证码之间的关系校验,比如你给你自己的手机号发送一个验证码后,当在修改的时候,对其抓包,将数据包中的手机号进行替换,如果成功,那么就证明验证码未进行关系检验。
这里还可以对其用户名进行校验,比如在重置密码界面,会默认向绑定的手机号发送验证码,那么可以尝试抓包,看看包中是否存在手机号字段,将字段中的手机号修改成自己的,然后放包,当自己的手机号获取验证码后,再输入上去,如果未进行关系校验,那么就能够实现重置,如果校验了,那GG。

2.3. 未授权登陆/访问

这个说一个我遇到的,我再企业中,业主上线了一个系统,登陆页面是通过二维码登陆的,并非是输入账号密码,而再测试的时候,我发现甲方将登陆状态的页面发送过来后,不需要扫二维码,直接登陆,然后发现URL中存在甲方的手机号,然后我推出后,凭借URL,直接又登陆进去了,为了测试准确,我将浏览器全部情况,又换虚拟机测试,我发现只要获取手机号后,可以任意登陆。
而这只是一个例子,我还遇到的是,一些源码泄露,使用接口来实现页面接入的,而直接输入这些URL后,可以直接跳转到相关页面,并且可以操作......这....但是也有一些是你能访问这个页面但是操作不了。

2.4. 用户名覆盖(账户接管)

简单来说就是数据库未对已存在的用户名进行校验,就会导致重复注册,而重复注册后就会让原先的账户消失,甚至是注销,还有一种就是再修改个人信息的位置,如果你修改的时候,将用户名修改很数据库中存在的用户名,那么就可能会出现将对方的数据同步过来。

2.5. 无效用户名

这个和批量注册有点相似,简单来说就是对手机号未进行检查,导致一些类似这类手机号123456789101都可以注册,也就是说未对手机号进行检查,导致虽然是手机号注册,反而成了用户名注册了......当然也是前提条件是验证码无效,很多注册方式都是基于验证码无效才能够成功测试的,或者抓包修改一些参数。

2.6. 登录框持久

这个就是当你打开登陆页面的时候发现账号密码都已经填好了(经典若依框架),你直接点击登陆就可以了,这类多出自测试系统,或者失误导致的。

3. 信息泄露

3.1. 源码泄露

在部分测试网站中,可能开发人员为了方便,会将密码直接写死,放在源码中,这时候查看一下源码,到密码校验的位置,找一找,有可能会有意想不到的结果。特别是JavaScript文件,大部分前端信息泄露都是在JavaScript中。

3.2. 敏感信息泄露

我觉得这个我要说的话可能和未授权登陆/访问有点相似,但是又是不同的两个东西,可以通过上述说过的方式来看看有没有敏感信息泄露,还有就是让登录框报错,登录框输入的内容是需要提交到数据库中处理的,那么你可以随便输入一些字符让其报错,看看有没有将一些敏感路径泄露的。

4. 用户名相关

这个更多的是在用户名出可能会出现的。

4.1. 万能密码

这个其实就是sql注入,这个就不说了,百度一搜一大堆。

asp aspx万能密码

"or "a"="a
'.).or.('.a.'='.a 
or 1=1--
'or 1=1--
a'or' 1=1--
"or 1=1--
'or.'a.'='a
"or"="a'='a
'or''='
'or'='or'
admin'or 1=1#
PHP万能密码
 
admin'/*
密码*/'
 
'or 1=1/*
"or "a"="a
"or 1=1--
"or"="
"or"="a'='a
"or1=1--
"or=or"
''or'='or'
') or ('a'='a
'.).or.('.a.'='.a
'or 1=1
'or 1=1--
'or 1=1/*
'or"="a'='a
'or' '1'='1'
'or''='
'or''=''or''='
'or'='1'
'or'='or'
'or.'a.'='a
'or1=1--
1'or'1'='1
a'or' 1=1--
a'or'1=1--
or 'a'='a'
or 1=1--
or1=1--
jsp 万能密码

1'or'1'='1
admin' or 1=1/*

4.2. 用户名爆破(先有用户后有密码)

这个简单来说就是通过对用户名处做爆破,有些网站会对用户名处进行模糊处理,比如,你输入的账号密码错误,而如果出现,你输入的用户名错误,或者密码错误,当出现密码错误的时候,就证明有这个用户,那么你就可以收集这些信息,那么这样就证明网站在页面未作模糊处理。大致思路:

  • 用户名枚举:用户名错误和正确时,前端回显的报错信息不同
  • 社工字典:通过搜集目标的信息,通过社工字典工具加工后的字典,如:cupp

4.3. 账号锁定

这个简单来说就是网站没设置多次错误锁定账户的情况,那么就可以实现密码爆破。

5. 漏洞类

使用一些历史漏洞来实现登陆绕过,或者其它漏洞。

5.1. RCE漏洞/nday

这一类基本上都局限于使用一些框架中会出现,比如什么OA系统呀等等。

5.2. 弱口令

这个就用sg库搞一搞,或者简单的密码一直试试,字典跑等。

5.3. XSS

XSS这个也不用说了吧,有洞就插,有框就插。

6. 越权类

6.1. 垂直越权

由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

6.2. 水平越权

指攻击者尝试访问与他拥有相同权限的用户资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据A和数据B),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户A能访问到用户B的数据(数据B),那么用户A访问数据B的这种行为就叫做水平越权访问。

7. URL类

7.1. UID拼接

比如微博、CSDN都是url后面添加UID能够实现查看对方的主页,而这种是公开的,所以没有什么影响,如果是不允许这样操作的呢,那你通过修改url中的UID实现查看对方的主页是不是就成了未授权访问了?

7.2. URL跳转

URL跳转就是在部分登陆的页面中可能会存在?后面出现另外一个地址,而且如果能够修改,是不是就实现了URL跳转,如果再做一个钓鱼界面呢?

7.3.二维码劫持

其实本质上是url跳转

PS:于原文上自改,自用非原创,原创https://mp.weixin.qq.com/s/3Yv6bC9E5HETeVolZbJxPA

posted @ 2023-11-06 10:01  夜未至  阅读(280)  评论(0编辑  收藏  举报