通过mysql弱密码获取webshell

0x00 mysql

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的关系数据库管理系统应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

0x01 mysql弱密码漏洞

本地mysql安全配置不当,导致不经ip过滤可以进行远程登陆,并且密码设置太过简单,使其他人可以通过mysql访问数据库并且进行读写操作。

0x02 危害

被拿到webshell会丢失网站的权限,入侵者就可以随意修改删除这个网站的内容。

0x03 靶机环境配置

安装配置mysql

1
sudo yum install -y mysql mysql-server

安装配置apache

1
sudo yum install -y httpd

安装配置php

1
sudo yum install -y php

安装php的一些组件

1
sudo yum install -y php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-mysqlnd

安装完成后编辑配置文件,然后重启httpd和mariadb,并且在/var/www/html目录创建index.php

在index.php写入

1
<?php phpinfo(); ?> 

然后浏览localhost查看组件是否安装完善


然后在index.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);
?>

查看数据库是否连接成功

然后设置mysql的安全配置

1
vi /etc/my.cnf

首先将bind-address注释掉

然后本地进入mysql,更改权限使root用户从任意ip都可以访问

查看权限发现可以通过任意地址访问

0x04 主机环境配置

安装hydra

1
sudo yum install -y hydra

安装mysql

1
sudo yum install -y mysql

0x05 测试

过程:使用hydra进行mysql的弱密码攻击并尝试利用mysql写入webshell,从而利用
webshell进行进一步攻击。

通过主机对靶机进行爆破,发现root的密码是123456

通过mysql连接靶机:

构造并写入webshell:

编辑菜刀连接一句话木马:

连接成功,获得网站目录内读写权限:

0x06 进行使用openvas对该存在漏洞的系统扫描

扫描结果:


0x07 应对方案

  • 加强mysql密码强度
  • 尽量不要将mysql权限赋予公网
  • 定期检查网站内有没有木马

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!