Linux特权组全解析:识别GID带来的权限提升风险

组ID(Group ID,简称 GID)是Linux系统中用来标识不同用户组的唯一数字标识符。每个用户组都有一个对应的 GID,通过 GID,系统能够区分并管理不同的用户组。

在Linux系统中,系统用户和组的配置文件通常包括以下内容:

  • /etc/passwd 文件:存储用户账户信息(包括 UID 和 GID)。
  • /etc/group 文件:存储用户组的信息(包括组名、GID、组成员等)。

如何查看系统中的组和 GID

1. 查看所有组信息

使用 cat 命令查看 /etc/group 文件,它列出了系统中所有组的名称、GID 和成员信息:

cat /etc/group

输出示例:

root:x:0:root
adm:x:4:syslog,john
docker:x:999:jane,root
sudo:x:27:root,john
wheel:x:10:admin
disk:x:6:root,john
tty:x:5:root

2. 查看特定用户的组信息

使用 groups 命令可以查看当前用户属于哪些组:

groups username

输出示例:

john : john adm sudo docker

这表示 john 用户属于 johnadmsudodocker 组。

3. 查看特定用户的 UID 和 GID

使用 id 命令可以查看特定用户的 UID 和 GID:

id john

输出示例:

uid=1000(john) gid=1000(john) groups=1000(john),4(adm),27(sudo),999(docker)

常见的系统组及其 GID

以下是一些常见的 Linux 系统用户组及其默认的 GID。

组名描述默认 GID
root系统超级用户组,具有最高权限0
dockerDocker 容器运行组,赋予用户 Docker 容器访问权限999
wheel允许通过 susudo 执行特权命令的用户组10
adm系统日志组,通常有权限查看日志文件4
disk允许用户访问磁盘设备的组6
sys系统管理组,通常与硬件设备操作相关3
staff用于有管理员权限的普通用户组,通常用于安装软件50
users默认的用户组100
games游戏相关的用户组60
mail邮件相关用户组8
tty与终端设备相关的用户组,通常用于控制台操作5
input输入设备相关的组14
audio音频设备访问权限组63
video视频设备访问权限组44
plugdev外部设备访问权限组46
netdev网络设备访问权限组101

组ID与权限提升

docker(GID: 999)

GID 999 是 Docker 用户组的默认组 ID。加入 docker 组的用户可以无需 sudo 执行 Docker 命令,这种特权可能导致容器逃逸(container escape)。

提权途径:如果攻击者能够加入 docker 组,他们可以直接控制 Docker 容器。若容器以特权模式运行,攻击者可以通过容器访问宿主机文件系统,甚至执行恶意操作,进而提权至宿主机的 root 用户,获取完全控制权限。

例如,攻击者可以通过以下命令将容器挂载宿主机的根文件系统,进而访问宿主机所有文件:

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

disk(GID: 6)

GID 6disk 组的默认 GID。属于 disk 组的用户有权限访问磁盘设备,包括硬盘分区、挂载设备等。

提权途径:攻击者可以利用 disk 组的权限直接操作磁盘设备。通过工具如 fdiskparted 修改磁盘分区表,攻击者可能绕过权限限制,访问本应受到保护的文件或设备。攻击者甚至能够通过修改启动分区来控制系统。

例如,攻击者可以执行以下操作来查看磁盘分区信息:

df -h

然后,使用 debugfs 获取磁盘分区的详细信息:

debugfs /dev/sda3

通过该方式,攻击者可对整个磁盘进行读写操作,包括读取 /root/.ssh/id_rsa(私钥)或 /etc/shadow(用户密码哈希),进而破解系统账户密码,获取更高权限。

adm(GID: 4)

GID 4adm 组的默认 GID。该组的用户通常具有查看系统日志文件的权限,常见的日志文件包括 /var/log/auth.log/var/log/syslog,这些文件可能包含系统的敏感信息,如用户登录记录和身份验证信息。

提权途径:攻击者若能访问 adm 组的权限,便可以读取日志文件,从中提取有用的信息,例如用户名、密码哈希等。结合暴力破解工具(如 John the Ripper),攻击者可以破解密码,从而进一步提升权限。

例如,攻击者可以通过查看 /var/log/auth.log 中的记录,获得用户登录信息。

tty(GID: 5)

GID 5tty 组的默认 GID。该组的用户拥有对终端设备的访问权限,能够进行输入和输出操作。

提权途径:攻击者可以利用 tty 组的权限伪装终端设备,从而捕获用户的输入,甚至干扰其他用户的会话,获取更多的控制权。通过对终端的控制,攻击者可能会获取其他用户的凭证或执行恶意操作,进一步提升自己的权限。

wheel(GID: 10)

GID 10wheel 组的默认 GID。该组标识可以通过 sudosu 获得 root 权限的用户。

提权途径:加入 wheel 组的用户能够使用 sudo 执行任意命令,如果 sudo 配置不当,攻击者可能通过 sudo 提权至 root 用户,执行恶意命令并完全控制系统。通过此途径,攻击者可以绕过普通用户的权限限制,进行任意操作,如安装恶意软件、修改系统配置或删除日志等。


总结

Linux系统中的组ID(GID)是区分用户组和管理权限的重要手段。了解每个组及其对应的 GID,有助于管理员在系统配置和权限控制中做出更加合理的选择。然而,不当的组配置或权限分配可能为攻击者提供潜在的攻击面,导致系统安全风险。因此,在进行系统配置和渗透测试时,必须特别关注具有特殊权限的用户组,确保系统能够在最小权限原则下正常运行,并及时发现并修复安全漏洞。

系统中的某些特权组(如 dockerdiskadmttywheel)具有较高的权限,若攻击者能够成功加入这些组,便能通过相应的权限提升手段对系统进行攻击。因此,管理员需要确保这些组的权限配置严格控制,定期审查用户组的成员,并确保敏感命令和文件的访问权限得到适当限制,从而降低潜在的安全风险。

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

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

相关文章

mybatisgenerator接入

1、引入plugin <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.mybatis.generator</groupId>&l…

NacosRce到docker逃逸实战

NacosRce到docker逃逸实战 1、Nacos Derby Rce打入内存马 这个漏洞的原理大家应该都知道&#xff0c; 2.3.2 < Nacos < 2.4.0版本默认derby接口未授权访问&#xff0c;攻击者可利用未授权访问执行SQL语句加载构造恶意的JAR包导致出现远程代码执行漏洞。 在日常的漏洞挖…

mini-lsm通关笔记Week2Day6

项目地址&#xff1a;https://github.com/skyzh/mini-lsm 个人实现地址&#xff1a;https://gitee.com/cnyuyang/mini-lsm Summary 在本章中&#xff0c;您将&#xff1a; 实现WAL日志文件的编解码 系统重启时使用WAL日志恢复memtable 要将测试用例复制到启动器代码中并运行…

【DeepSeek背后的技术】系列三:强化学习(Reinforcement Learning, RL)

目录 1 简介1.1 强化学习&#xff08;RL&#xff09;简介1.2 基于人类反馈的强化学习 (RLHF) 简介1.2.1 四个重要角色1.2.2 三个步骤 2 强化算法2.1 PPO&#xff08;Proximal Policy Optimization&#xff09;2.1.1 核心思想2.1.2 算法步骤2.1.3 优点2.1.4 缺点2.1.5 应用场景 …

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域&#xff0c;电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作&#xff0c;存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网&#xff08;IIoT&#xff09;技术&#xff0c;实现电源设备…

SpringBoot开发(四)SpringBoot配置文件

1. SpringBoot配置文件 1.1. 配置端口号和路径 &#xff08;1&#xff09;在application.properties文件下配置端口号和路径。 server.port: 8081 server.servlet.context-path/demo&#xff08;2&#xff09;运行访问。 1.2. 自定义配置 1.2.1. 方式一 &#xff08;1&…

win32汇编环境,窗口程序中自定义工具栏的使用示例

;运行效果 ;win32汇编环境,窗口程序中自定义工具栏的使用示例 ;工具栏一般放在菜单下面&#xff0c;相当于一个个小的对话框&#xff0c;当然你放在其它地方也可以。 ;原理是&#xff0c;创建一张BMP位图&#xff0c;比如下例用一张168*24的图&#xff0c;平均分成7部分&#x…

机器学习专业毕设选题推荐合集 人工智能

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光&#xff0c;一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理…

备考蓝桥杯嵌入式4:使用LCD显示我们捕捉的PWM波

上一篇博客我们提到了定时器产生PWM波&#xff0c;现在&#xff0c;我们尝试的想要捕获我们的PWM波&#xff0c;测量它的频率&#xff0c;我们应该怎么做呢&#xff1f;答案还是回到我们的定时器上。 我们知道&#xff0c;定时器是一个高级的秒表&#xff08;参考笔者的比喻&a…

ArrayList 扩容机制的源码剖析

在 Java 编程中&#xff0c;ArrayList是一个常用的集合类&#xff0c;它实现了List接口&#xff0c;底层基于数组实现。与普通定长数组不同&#xff0c;ArrayList能够根据元素的添加情况动态调整数组的大小&#xff0c;这就是其扩容机制。下面我们将深入剖析ArrayList扩容机制的…

The specified Gradle distribution ‘gradle-bin.zip‘ does not exist.

The specified Gradle distribution ‘https://services.gradle.org/distributions/gradle-bin.zip’ does not exist. distributionUrl不存在&#xff0c;关联不上&#xff0c;下载不了&#xff0c;那就匹配一个能下载的 distributionUrlhttps://services.gradle.org/distrib…

从零开始实现一个双向循环链表:C语言实战

文章目录 1链表的再次介绍2为什么选择双向循环链表&#xff1f;3代码实现&#xff1a;从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…

Cesium点集中获取点的id,使用viewer.value.entities.getById报错的解决方法

错误代码&#xff1a; viewer.value.entities.getById(pickedObject.id) 报错&#xff1a; 可以正常获取movement.position但是一直出现如下报错&#xff0c;无法获得航点的id&#xff0c;通过断点定位为 viewer.value.entities.getById(pickedObject.id)导致的报错 解决方…

ARM Linux Qt使用JSON-RPC实现前后台分离

文章目录 1、前言2、解决方案2.1、JSON-RPC2.2、Qt中应用JSON-RPC的框架图2.3、优点2.4、JSON-RPC 1.0 协议规范 3、程序示例3.1、Linux C&#xff08;只例举RPC Server相关程序&#xff09;3.2、Qt程序&#xff08;只例举RPC Client相关程序&#xff09; 4、编译程序4.1、交叉…

教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)

本文介绍 i.MX RT1180 EtherCAT digital io DEMO 搭建&#xff0c;Master 使用 TwinCAT &#xff0c;由于步骤较多&#xff0c;分为上下两篇&#xff0c;本文为第一篇&#xff0c;主要介绍使用 TwinCAT 控制前的一些准备。 原厂 SDK 提供了 evkmimxrt1180_ecat_examples_digit…

ubuntu22.40安装及配置静态ip解决重启后配置失效

遇到这种错误&#xff0c;断网安装即可&#xff01; 在Ubuntu中配置静态IP地址的步骤如下。根据你使用的Ubuntu版本&#xff08;如 Netplan 或传统的 ifupdown&#xff09;&#xff0c;配置方法有所不同。以下是基于 Netplan 的配置方法&#xff08;适用于Ubuntu 17.10及更高版…

【产品经理学习案例——AI翻译棒出海业务】

前言&#xff1a; 本文主要讲述了硬件产品在出海过程中&#xff0c;翻译质量、翻译速度和本地化落地策略是硬件产品规划需要考虑的核心因素。针对不同国家&#xff0c;需要优化翻译质量和算法&#xff0c;关注市场需求和文化差异&#xff0c;以便更好地满足当地用户的需求。同…

CH340G上传程序到ESP8266-01(S)模块

文章目录 概要ESP8266模块外形尺寸模块原理图模块引脚功能 CH340G模块外形及其引脚模块引脚功能USB TO TTL引脚 程序上传接线Arduino IDE 安装ESP8266开发板Arduino IDE 开发板上传失败上传成功 正常工作 概要 使用USB TO TTL&#xff08;CH340G&#xff09;将Arduino将程序上传…

AI推理性能之王-Groq公司开发的LPU芯片

Groq公司开发的LPU&#xff08;Language Processing Unit&#xff0c;语言处理单元&#xff09;芯片是一种专为加速大规模语言模型&#xff08;LLM&#xff09;和其他自然语言处理任务而设计的新型AI处理器。以下是对其技术特点、性能优势及市场影响的深度介绍&#xff1a; 技…

rk3506 sd卡启动

1 修改系统配置文件,打开ext4 #SDMMC RK_ROOTFS_TYPE"ext4" RK_ROOTFS_INSTALL_MODULESy RK_WIFIBT_CHIP"AIC8800" # RK_ROOTFS_LOG_GUARDIAN is not set RK_UBOOT_CFG_FRAGMENTS"rk3506_tb" RK_UBOOT_SPLy RK_KERNEL_CFG"rk3506_defconfi…