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.rhkb.cn/news/13011.html

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

相关文章

Qt跨屏窗口的一个Bug及解决方案

如果我们希望一个窗口覆盖用户的整个桌面,此时就要考虑用户有多个屏幕的场景(此窗口要横跨多个屏幕),由于每个屏幕的分辨率和缩放比例可能是不同的,Qt底层在为此窗口设置缩放比例(DevicePixelRatio&#xf…

AI绘画:解锁商业设计新宇宙(6/10)

1.AI 绘画:商业领域的潜力新星 近年来,AI 绘画技术以惊人的速度发展,从最初简单的图像生成,逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化,AI 绘画工具如 Midjourney、Stable Diffu…

逻辑回归原理

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。 逻辑回归尤其是二元逻辑回归是非常常见的模型,训练速度很快,虽然使用起来没有支持向量机(SVM&#xf…

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用) 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)1. 有序集合 Zset(sorted set)2. zset 有序…

AlwaysOn 可用性组副本所在服务器以及该副本上数据库的各项状态信息

目录标题 语句代码解释:1. `sys.dm_hadr_database_replica_states` 视图字段详细解释及官网链接官网链接字段解释2. `sys.availability_replicas` 视图字段详细解释及官网链接官网链接字段解释查看视图的创建语句方法一:使用 SQL Server Management Studio (SSMS)方法二:使用…

编程之路:在细节中磨砺技艺

编程之路:在细节中磨砺技艺 在编程的世界里,每一个字符、每一行代码都像是精心雕琢的艺术品,承载着程序员的智慧与心血。而在这个充满挑战与惊喜的旅程中,问题与解决方案总是如影随形。就像在开发居家养老管理系统时,我…

基于ArcGIS的SWAT模型+CENTURY模型模拟流域生态系统水-碳-氮耦合过程研究

流域是一个相对独立的自然地理单元,它是以水系为纽带,将系统内各自然地理要素连结成一个不可分割的整体。碳和氮是陆地生态系统中最重要的两种化学元素,而在流域系统内,水-碳-氮是相互联动、不可分割的耦合体。随着流域内人类活动…

【Linux网络编程】:URL(encode),HTTP协议,telnet工具

🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 ​ Linux网络编程笔记: https://mp.csdn…

6 [新一代Github投毒针对网络安全人员钓鱼]

0x01 前言 在Github上APT组织“海莲花”发布存在后门的提权BOF,通过该项目针对网络安全从业人员进行钓鱼。不过其实早在几年前就已经有人对Visual Studio项目恶意利用进行过研究,所以投毒的手法也不算是新的技术。但这次国内有大量的安全从业者转发该钓…

【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制

【技海登峰】Kafka漫谈系列(二)Kafka高可用副本的数据同步与选主机制 一. 数据同步 在之前的学习中有了副本Replica的概念,解决了数据备份的问题。我们还需要面临一个设计难题即:如何处理分区中Leader与Follwer节点数据同步不匹配问题所带来的风险,这也是保证数据高可用的…

使用DeepSeek R1 + 了解部署

官网注册 R1模型,推理模型 参考视频理解 理解大语言模型的本质 大模型在训练时是将内容token化的大模型知识是存在截止时间的大模型缺乏自我认知、自我意识记忆有限输出长度有限 智商理解,例如下面的DeepSeek的测试: 用DeepSeek 官网手…

Page Assist - 本地Deepseek模型 Web UI 的安装和使用

Page Assist Page Assist是一个开源的Chrome扩展程序,为本地AI模型提供一个直观的交互界面。通过它可以在任何网页上打开侧边栏或Web UI,与自己的AI模型进行对话,获取智能辅助。这种设计不仅方便了用户随时调用AI的能力,还保护了…

【优先算法】专题——位运算

在讲解位运算之前我们来总结一下常见的位运算 一、常见的位运算 1.基础为运算 << &&#xff1a;有0就是0 >> |&#xff1a;有1就是1 ~ ^&#xff1a;相同为0&#xff0c;相异位1 /无进位相加 2.给一个数 n&#xff0c;确定它的二进制表示…

Eureka加密 及Gateway搭建 - 基于SpringBoot不同版本配置方式

前言&#xff1a;在最近开发过程中 偶遇根据SpringBoot不同版本导致配置方式不一致等问题 通用&#xff1a;Eureka服务配置 Server端&#xff1a; 一、引入依赖 spring-boot-starter-security <dependencies><!-- Eureka 声明依赖 --><dependency><gro…

3-Not_only_base/2018网鼎杯

3-Not_only_base 打开code MCJIJSGKPZZYXZXRMUW3YZG3ZZG3HQHCUS 分析&#xff1a; 首先看题知道解密过程中肯定有base解密。 知识点1&#xff1a; Base64字符集&#xff1a; 包含大小写字母&#xff08;A-Z、a-z&#xff09;、数字&#xff08;0-9&#xff09;以及两个特殊字…

Polardb三节点集群部署安装--附虚拟机

1. 架构 PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计&#xff0c;系统由4个核心组件组成。 计算节点&#xff08;CN, Compute Node&#xff09; 计算节点是系统的入口&#xff0c;采用无状态设计&#xff0c;包括 SQL 解析器、优化器、执行器等模块。负责数据…

Java基础面试题50题

1&#xff0c;""空字符串的作用 package com.neuedu.nineteen;public class Test {public static void main(String[] args) {String s"";for (char i a; i < d; i) {ssi;//输出abc // sis;//输出cba}System.out.println(s);} }如题所示&…

【现代深度学习技术】深度学习计算 | 延后初始化自定义层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Immutable设计 SimpleDateFormat DateTimeFormatter

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 理解不可变设计模式&#xff0c;时间format有线程安全要求的注意使用DateTimeFormatter 目录 ImmutableSimpleDateFormat 非线程安全可以synchronized解决&a…

Got socket exception during request. It might be caused by SSL misconfiguration

引入xutils3依赖&#xff0c;结果包找不到 maven里面添加阿里云镜像 核心 maven { url uri("https://maven.aliyun.com/nexus/content/groups/public/") }repositories {google()maven { url uri("https://maven.aliyun.com/nexus/content/groups/public/"…