零基础学黑客,搜索公众号:白帽子左一

作者:掌控安全学员——逍遥子

一、前期准备

1.Mysql udf简介

MySQL udf(user definedfunction,用户定义函数),为用户提供了一种高效创建函数的方式。udf函数按其运行模式可以分为单次调用型和聚集函数型两类,单次调用型函数能够针对数据库查询的每一行记录进行处理,聚集函数型用于处理Group By等聚集查询。

2.udf提权原理

udf的设计初衷是为了方便用户自定义一些函数,方便查询一些复杂的数据,同时也增加了使用udf提权的可能。
攻击者通过编写调用cmd或者shell的udf.dll文件,并且导入到一个指定的文件夹目录下,创建一个指向udf.dll的自定义函数,从而在数据库中的查询就等价于在cmd或者shell中执行命令。不同的操作系统,不同的版本,提权时导出udf.dll存放的目录不一样。
Windows 2000操作系统需要导出udf.dll到c:\winnt\目录下。Windows2003操作系统导出udf.dll到c:\windows\目录下。在MySQL 5.1版本及以后的环境下,udf提权时需要将udf.dll导出到mysql安装目录\lib\plugin\目录下

3. NTFS ADS创建目录

在mysql 5.1以后的版本中,需要将dll文件导入到lib\plugin目录中才会生效,但是一部分在安装中没有这个路径文件夹,所以需要使用NTFS 数据交换流进行文件夹的创建
每个文件数据流的完整格式如下:<filename>:<streamname>:<stream type>

只有一个data流时,streamname通常可以省略,stream
type也可以成为attributetype。我们通常看到的是文件的data流,其它数据流都处于隐藏状态。当attribute
type为INDEXALLOCATION时,表明该该数据流的宿主是文件夹。所以可以通过MySQL导出数据到directorypath::INDEX_ALLOCATION时,表明该该数据流的宿主是文件夹。所以可以通过MySQL导出数据到directory_path::INDEXA​LLOCATION时,表明该该数据流的宿主是文件夹。所以可以通过MySQL导出数据到directoryp​ath::INDEX_ALLOCATION文件的方法来创建directory_path目录。

二、提权实操

1.首先需要获取目标的webshll,获得的这个webshell很明显权限很低,甚至连命令都无法执行。

2.因为服务器部署了mysql,所以就可以考虑使用mysql提权,所以需要找到MySQL的账户和密码。
通过对文件的的浏览,找到了网站的配置文件,里面可以看到数据库的账户的密码都是以明文的形式存在的。

3.还可以通过查看数据库的user.MYD文件,里面存的是用户的密码的hash值,获取了以后可以通过cmd5或者其他途径进行查找。简答搜索就可以知道mysql的常见文件存储结构。

4.通过查看user.myd,获取到了hash值,并且碰撞得到明文。



5.拿到了数据库的账户和密码,开始对数据库进行链接。

6.查看是否有上传文件的权限。show global variables like ‘secure%’

当secure_file_priv 的值为 NULL ,表示限制mysqld 不允许导入|导出,此时无法提权
当secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在/tmp/ 目录下,此时也无法提权
当 secure_file_priv的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提

7.查看mysql的安装路径(绝对路径)

8.查看mysql的版本。发现是5.2版本,所以需要将dll文件放在lib\plugin目录下才可以生效,如果是5.1以下,需要放到 C:\Windows\system32下

9.浏览目录,发现没有lib路径的存在,需要使用NTFS ADS进行创建(在获取到shell的情况下,如果权限够,也可以使用webshell管理工具创建。)

10.使用命令创建路径:select ‘xxx’ into outfile ‘C:\phpstudy_pro\Extensions\MySQL5.5.29\lib::$INDEX_ALLOCATION’;,执行命令后发现报的是失败,但是检查文件夹,确实已经创建。


11.使用同样的方法创建plugin文件夹。
12.使用直接导入的方式将udf.dll文件到指定位置。(udf.dll我以txt的形式放在附件)select 0x[udf数据] into dumpfile [path]

13.创建sys_eval函数,用于执行命令和回显。

14.成功执行命令。

之前是使用了直接将udf数据写入文件,有时候还可以将数据写入到数据库中,再写入到文件中。
1.首先将创建的自定义函数sys_eval删除掉,避免产生干扰。删除函数:drop function sys_eval,查询所有的自定义函数select *from mysql.func

2.创建一个临时表
![
]

3.将数据写入到表中。insert into udf values(convert(二进制文件,CHAR))

4.将数据导入到指定文件夹下的目录中。```select udf from udf into dumpfile’path’;

5.文件成功导入后,直接同之前的方法创建自定义函数。(这次使用的dll文件是udf1,因为是第二次写入的文件名就是udf1)

6.成功执行命令,获取到权限。

MySQL提权——udf提权相关推荐

  1. 6-vulnhub靶场-LordOfTheRoot_1.0.1靶机内核提权udf提权缓冲区溢出提权

    6-LordOfTheRoot_1.0.1 靶机地址 https://www.vulnhub.com/entry/lord-of-the-root-101,129/ 难度 中等(主要是缓冲区溢出) 1 ...

  2. Mysql数据库提权——UDF提权

    实验原理:UDF可以理解为MySQL的函数库,可以利用UDF定义创建函数(其中包括了执行系统命令的函数),要想利用udf,                    必须上传udf.dll作为udf的执行 ...

  3. Mysql udf提权靶场-vulnhub Raven2

    文章目录 前言 一.udf提权介绍 udf介绍 如何使用udf进行提权 二.信息收集 主机探测 nmap扫描 /etc/hosts配置 dirb扫描后台 /vendor 三.getshell 利用CV ...

  4. MySQL UDF提权执行系统命令

    目录 UDF UDF提权步骤 使用MSF进行UDF提权 UDF提权复现(php环境) UDF UDF (user defined function),即用户自定义函数.是通过添加新函数,对MySQL的 ...

  5. mysql mof_mysql的MOF和UDF提权

    最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导致的吧,总结一下MYSQL提权的各种姿势吧,权当复习了.关于mysql提权的方法也就那 ...

  6. Mysql之UDF提权

    前言 mysql提权的几种方式 udf提权(常用) mof提权 开机启动脚本(启动项提权) 提权目的:mysql权限 -> 操作系统权限 UDF提权 有时候我们通过一些方式获取了目标主机mysq ...

  7. mysql udf提权_MySQL日志安全分析技巧

    常见的数据库攻击包括弱口令.SQL注入.提升权限.窃取备份等.对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源. 0x01 Mysql日志分析 general query log ...

  8. mysql udf提权_mysql——udf提权

    01 前言 udf = 'user defined function',即'用户自定义函数'.文件后缀为'.dll',常用c语言编写. 通过在udf文件中定义新函数,对MYSQL的功能进行扩充,可以执 ...

  9. mysql udf提权hex_Mysql_UDF提权

    Mysql_UDF提权 作者:admin 发布于:2013-5-25 18:55 Saturday 分类:MYSQL Root权限 一.上传udf.dll 小于mysql5.1版本 C:\\WINDO ...

最新文章

  1. mysql删除原则_MySQL数据库的增删选查
  2. 如何成为SEO专家(10步指南)
  3. 第29节 专业英语1
  4. data spring 指定时区_SpringBoot 统一时区的方案
  5. vue个人博客项目部署上线
  6. Microsoft Fakes
  7. JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
  8. Python之print函数详解
  9. struts2与jasperreport整合其余问题
  10. AE学习日记之MapControl与PageLayoutControl图层变化同步
  11. sublime3编程c语言,Sublime Text 3 实现C语言代码的编译和运行(示例讲解)
  12. 浮生若梦,静如止水,不问情意,只愿你安好
  13. Doris源码解析[一、负载均衡]
  14. 经典 搞笑 美女掉入碧波里...
  15. java 获取组播地址_UDP客户端组播地址
  16. SaaS-HRM中的认证授权
  17. RED5 1.0视频直播服务器 WINDOWS安装记录 教程
  18. 3.前端笔记之JavaScript基础
  19. watch监听的几种写法
  20. [非线性控制理论]4_反馈线性化_反步法

热门文章

  1. 执行Transact-SQL语句或批处理时发生异常
  2. 【人工智能算法从图解入手】
  3. 国产单机《我的武林江湖》v1.1.159
  4. grep 或 egrep 或awk 过滤两个或多个关键词|使用grep匹配“与”或者“或”模式
  5. 【定位设备】蓝牙信标接近距离的计算方式及其部署原则
  6. 【亲测纯净版】10月最新晴天贷立刻贷小额借贷大数据借贷平台网站源码已对接免签支付
  7. 【小学生打字练习软件】_在线网上打字比赛软件系统
  8. 元器件封装标准IPC-7351及电子开发论坛集合
  9. 无线网络为什么经常掉线
  10. Java学习笔记类对象多态继承(下)