0x01 前言
Web登录界面是网站前台进入后台的通道,针对登录管理界面,常见的web攻击如:SQL注入、XSS、弱口令、暴力猜解等。本文主要对web暴力猜解的思路做一个简单的分析,并结合漏洞实例进行阐述。
0x02 思路
在Web登录界面主要有三个要素:用户名、密码、验证码,最简单的思路:
1、获取用户名,常见的有登录错误提示、网站文章编辑落款、社工等
2、猜解密码,一个有效的字典
3、验证码识别或绕过,常见有验证码与用户名密码分离、验证码不能自动刷新可重复使用、验证码识别
按照HTTP传递数据的方式,大致分为两个类型:
类型一:明文传输
没有验证码、没有做登录失败处理的web应用,这个是最喜闻乐见的,只有用户名、密码登录,可以直接加载字典进行爆破,最常见的就是使用利用Burp Suite Intruder进行暴力猜解,Intruder支持多种爆破模式:单一字典爆破、多字段相同字典爆破、多字典位置对应爆破、聚合式爆破。
类型二:前端js加密处理
现在,不少Web应用在登录过程中会使用js对密码进行加密,然后在发送服务端,使用代理工具抓包获取到的密码就是加密后的密码,在一定程度上给我们爆破增加了些麻烦。以下针对js加密爆破的思路做一个分析。
0x03 js加密爆破
常见的js实现加密的方式有:md5、base64、shal,这里编写了一个简单的demo作为测试。
login.html
提交表单,进行抓包,可以发现密码字段密码进行了加密处理:
常见的js md5加密,处理方式有两种,其一是利用Intruder支持多种加密和编码,对密码字段进行加密,其二是编写Python脚本,熟悉加密算法的可以自己重写或者直接利用网站的js文件对密码字段进行加密。
3.1 Burp Suite Intruder
1、抓包发送到Intruder,标记相关参数,选择 第四种模式“Cluster bomb”
2、分别选择用户名字典和密码字典,在设置密码字典的时候,选择md5加密方式对密码字段进行加密处理
3、开始进行爆破,根据返回字段长度判断是否成功,成功获取用户名和密码字段的MD5值 admin:21232f297a57a5a743894a0e4a801fc3
4、md5解密成功,获得用户名密码 admin/admin
3.2 PyExecJS
这边采用Python ExecJs来执行Js语句模拟前端对账号密码进行加密
准备:
pip install PyExecJS
phantomjs下载:https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip
编写Python脚本进行爆破:
成功爆破用户账号密码
0x04 漏洞实例
这里分享两个漏洞实例,在实战中,根据不同的漏洞场景,灵活地去运用暴力美学,简单,极具杀伤力。
漏洞实例一:未授权获取用户名+密码js加密+验证码重复利用
漏洞场景:网站首页包含一个登陆模块,包含用户名、密码、验证码,输入正常数据测试,发现密码采用js加密传输,验证码无法自动刷新,可重复使用。
1、扫描网站敏感文件,发现系统存在未授权访问, 通过url可直接访问系统后台日志管理模块,获取用户登录用户名等。
2、通过未授权获取到的用户名,加载密码字典,并对字典密码进行编码,暴力破解,成功爆破出用户tb的密码所对应的md5值为: 6846860684f05029abccc09a53cd66f1
3、md5破解,获得md5所对应的值为:a111111
TIPS:有时候遇到md5值解密不出来的时候,怎么办?我们知道,这个md5值所对应的的是我们密码字典里的某一个,可以编写Python脚本进行md5值的比对。
测试截图:
5、通过获取到的用户及破解出来的用户,成功登陆系统。
漏洞场景二:登录错误提示+验证码可识别
1、输入用户名admin,密码、验证码,提示您输入的用户名不存在,请重新输入。
2、利用Pkav HTTP Fuzzer 1.2 的验证码识别引擎,可自动识别出验证码
3、根据登录错误提示,通过加载用户名字典进行爆破,当提示“您输入的密码不正确,请重新输入”,这个时候我们获得了用户名为sysadmin,进一步加载密码字典进行爆破,对用户密码进行爆破。
喜欢这篇文章的人也喜欢 · · · · · ·
Bypass
About Me
一个网络安全爱好者,对技术有着偏执狂一样的追求。致力于分享原创高质量干货,包括但不限于:渗透测试、WAF绕过、代码审计、安全运维。
领取专属 10元无门槛券
私享最新 技术干货