Linux提权-02 sudo提权

文章目录

  • 1. sudo 提权原理
    • 1.1 原理
    • 1.2 sudo文件配置
  • 2. 提权利用方式
    • 2.1 sudo权限分配不当
    • 2.2 sudo脚本篡改
    • 2.3 sudo脚本参数利用
    • 2.4 sudo绕过路径执行
    • 2.5 sudo LD_PRELOAD环境变量
    • 2.6 sudo caching
    • 2.7 sudo令牌进程注入
  • 3. 参考

1. sudo 提权原理

1.1 原理

sudo是一个用于在Linux和类Unix系统中以超级用户(root)或其他用户身份执行命令的程序。它的全称是 “superuser do”,允许普通用户以更高权限运行命令。
在这里插入图片描述

sudo 命令的工作原理是通过suid权限来实现的。具体来说,它的工作过程可以简要概述如下:

  1. 设置 setuid 权限:sudo 程序本身被设置了 setuid 属性,这意味着当任何用户执行这个程序时,它会以程序拥有者(通常是 root)的权限运行。

  2. 执行权限继承:当用户执行 sudo 后面跟随的命令时,这个命令会继承 sudo 的权限。在这种情况下,虽然用户是普通用户,但由于 sudo 在以 root 用户的身份执行,随后的命令则也可以在 root 权限下运行。

  3. 权限验证:在执行命令之前,sudo 会检查用户在/etc/sudoers文件中的配置,确保该用户被授权运行指定的命令。如果用户没有权限,则会被拒绝执行。

  4. 审计和日志:sudo 还会记录所有使用 sudo 的命令,这样管理员可以审计用户的行为,以确保系统安全。

总体流程可以用以下流程来表示:

用户执行 sudo command 命令
   ↓
    └── 检查用户权限(/etc/sudoers)
       ↓
        └── command 继承 root 权限执行命令

1.2 sudo文件配置

*****************GPT生成***************
在 Linux 系统中,sudoers 文件用于定义哪些用户或用户组可以使用 sudo 命令,并在使用时可以执行哪些命令。通过对 sudoers 文件的配置,管理员能够为用户提供特定的权限控制。

编辑 sudoers 文件

要安全地编辑 sudoers 文件,推荐使用 visudo 命令,因其会进行语法检查,防止语法错误导致的安全风险。

打开终端输入以下命令:

sudo visudo

这将打开 sudoers 文件,通常使用 vi 或者 nano 编辑器。

基本配置格式

sudorers 文件的基本格式如下:

user    host = (runas) command
  • user:指定用户或用户组。
  • host:允许执行命令的主机(通常使用 ALL 表示所有主机)。
  • (runas):指定用户在执行该命令时可以以哪个用户身份运行(使用 ALL 表示以所有用户身份运行)。
  • command:允许用户执行的命令,可以使用 ALL 表示所有命令,也可以指定具体的命令路径。

示例配置

  1. 允许用户 alice 执行所有命令:

    alice ALL=(ALL) ALL
    
  2. 允许用户组 admin 以任何用户身份运行所有命令:

    %admin ALL=(ALL) ALL
    
  3. 允许用户 bob 在不需要密码的情况下执行 /usr/bin/systemctl 命令:

    bob ALL=(ALL) NOPASSWD: /usr/bin/systemctl
    
  4. 只允许用户 charlie 执行 /usr/bin/apt/usr/bin/dpkg 命令:

    charlie ALL=(ALL) /usr/bin/apt, /usr/bin/dpkg
    

其他常用选项

  • NOPASSWD:用户可以不输入密码执行特定命令。
  • Defaults:用于设置默认行为,例如锁定 sudo 命令的执行超时等。
    Defaults timestamp_timeout=15
    

保存和退出

在编辑结束后:

  • 如果使用 vi:按 Esc,输入 :wq,然后按 Enter 保存并退出。
  • 如果使用 nano:按 Ctrl+X,然后根据提示选择 Y 来确认保存。

注意事项

  1. 使用 visudo:始终通过 visudo 编辑 sudoers 文件,以避免语法错误。
  2. 备份:在修改前备份 sudoers 文件。
    sudo cp /etc/sudoers /etc/sudoers.bak
    
  3. 权限限制:尽量给用户分配最小权限,避免不必要的安全风险。

2. 提权利用方式

sudo权限配置不当,如果这些可执行文件本身又可以调用其他可执行文件,或者可以更改系统的一些配置选项,就可以达到提权的目的。

2.1 sudo权限分配不当

使用sudo -l查看当前sudo配置,看当前用户可以使用sudo执行的命令。 一些可用于执程序的命令可直接用于提权。

路径提权命令路径提权命令
/usr/bin/bashbash -p/usr/bin/findfind /etc/passwd -exec bash -p
/usr/bin/cshcsh -p/usr/bin/awkawk ‘BEGIN {system(“/bin/bash”)}’
/usr/bin/shsh -p/usr/bin/man!/bin/bash
/usr/bin/kshksh -p/usr/bin/more!/bin/bash
/usr/bin/zshzsh -p/usr/bin/less!/bin/bash

2.2 sudo脚本篡改

管理员将某个shell脚本设置为sudo免密执行,且低权限用户对其可写,那么可将后门程序或反弹shell的代码写入该脚本,完成提权。
在这里插入图片描述

2.3 sudo脚本参数利用

回到2.2中的脚本,在无权限修改脚本内容时,可以通过阅读脚本代码来判断此脚本是否允许带入参数执行。如果脚本允许带参数执行且该参数可控,也可以进行提权。
在这里插入图片描述

2.4 sudo绕过路径执行

管理员在配置sudoers文件时使用了通配符,可利用这种情况执行命令或读取敏感文件。
在这里插入图片描述

2.5 sudo LD_PRELOAD环境变量

2.6 sudo caching

2.7 sudo令牌进程注入

3. 参考

[1] 《权限提升技术-攻防实战与技巧》
[2] Linux SUID提权
[3] sudo官网

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3. 后端验证前端Token

书接上回,后端将token返回给前端,前端存入cookie,每次前端给后端发送请求,后端是如何验证的。 若依是用过滤器来实现对请求的验证,过滤器的简单理解是每次发送请求的时候先发送给过滤器执行逻辑判断以及处理&#xff0…

【转】厚植根基,同启新程!一文回顾 2024 OpenHarmony 社区年度工作会议精彩瞬间

在数字化浪潮奔腾不息的今天,开源技术已成为推动科技创新与产业发展的强大引擎。2025年1月10日-11日,OpenAtom OpenHarmony(开放原子开源鸿蒙,以下简称“OpenHarmony”或“开源鸿蒙”)社区2024年度工作会议于深圳盛大启…

数据结构(Java版)第九期:LinkedList与链表(四)

专栏:数据结构(Java版) 个人主页:手握风云 目录 一、LinkedList的模拟实现 1.1. 头插法 1.2. 尾插法 1.3. 插入中间节点 1.4. 删除某个节点 1.5. 删除所有为key的元素 二、LinkedList的使用 2.1. 什么是LinkedList 2.2. LinkedList的使⽤ 三、…

第22篇 基于ARM A9处理器用汇编语言实现中断<四>

Q:怎样编写ARM A9处理器汇编语言代码配置使用按键和定时器中断? A:本次实验同样为中断模式和监督模式都设置ARM A9堆栈指针,并使能中断,此外在主程序中调用子程序CONFIG_HPS_TIMER和CONFIG_KEYS分别对HPS Timer 0&…

Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)

目录 一、什么是模块?1.1 定义1.2 分类1.3 五种模块引入的方法1)import 模块名(全部引入)2)from 模块名 import 功能名(部分引入)3)from 模块名 import *(引入公共功能&a…

宝塔php7.4安装报错,无法安装,php8以上可以安装,以下的不行,gd库什么的都正常

宝塔的依赖问题导致的问题,最后手动挂载后才解决。。。废了三天三夜终于搞好了。。。。无语~ 建议:不要一直升级宝塔版本,升级前备份或者开服务商的实例镜像,方便恢复,不然,可就GG了&#xff5…

C语言:-三子棋游戏代码:分支-循环-数组-函数集合

思路分析: 1、写菜单 2、菜单之后进入游戏的操作 3、写函数 实现游戏 3.1、初始化棋盘函数,使数组元素都为空格 3.2、打印棋盘 棋盘的大概样子 3.3、玩家出棋 3.3.1、限制玩家要下的坐标位置 3.3.2、判断玩家要下的位置是否由棋子 3.4、电脑出棋 3.4.1、…

flutter的web页面

有几个服务器 有几个后台 直接通过web端进去虽然说很方便,但… 于是把web页面镶嵌到应用里面去, 这样就换了个方式打开web页面了 比如这里有有个列表 这里是写死了,活的列表可以通过io去获取 import package:flutter/material.dart; imp…

K8S 亲和性与反亲和性 深度好文

今天我们来实验 pod 亲和性。官网描述如下: 假设有如下三个节点的 K8S 集群: k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、镜像准备 1.1、镜像拉取 docker pull tomcat:8.5-jre8-alpine docker pull nginx…

解决conda create速度过慢的问题

问题 构建了docker容器 想在容器中创建conda环境,但是conda create的时候速度一直很慢 解决办法 宿主机安装的是anaconda 能正常conda create,容器里安装的是miniforge conda create的时候速度一直很慢,因为容器和宿主机共享网络了,宿主机…

Banana Pi BPI-RV2 RISC-V路由开发板采用矽昌通信SF2H8898芯片

Banana Pi BPI-RV2 开源网关是⼀款基于矽昌SF2H8898 SoC的设备,1 2.5 G WAN⽹络接⼝、5 个千兆LAN ⽹络接⼝、板载 512MB DDR3 内存 、128 MiB NAND、16 MiB NOR、M.2接⼝,MINI PCIE和USB 2.0接⼝等。 Banana Pi BPI-RV2 开源网关是矽昌和⾹蕉派开源社…

C -- 大端对齐 小端对齐 的人性化解释

网上很多资料对大小端对齐的解释 很多 很全 很准 但为啥老是记不住呢,所有的知识都是基于人性的情感原理,或是世界基本的运行规律而产生的,如果不能把知识和这两点打通,即使记住也很容易忘记。本篇文章基于这两点 分析下大小端对齐…

在线图片马赛克处理工具

在线图片马赛克处理工具,无需登录,无需费用,用完就走。 包括中文和英文版本 官网地址: https://mosaic.openai2025.com

链家房价数据爬虫和机器学习数据可视化预测

完整源码项目包获取→点击文章末尾名片!

Linux入门指令(一)

目录 1.前言 2.入门指令 whoami who clear pwd ls cd mkdir touch rmdir rm 1.前言 我们都知道,在日常生活中接触的电脑有使用Windows操作系统的(微软),也有使用MacOS操作系统的(苹果)&#x…

第十二章:算法与程序设计

文章目录: 一:基本概念 1.算法与程序 1.1 算法 1.2 程序 2.编译预处理 3.面向对象技术 4.程序设计方法 5.SOP标志作业流程 6.工具 6.1 自然语言 6.2 流程图 6.3 N/S图 6.4 伪代码 6.5 计算机语言 二:程序设计 基础 1.常数 …

Golang Gin系列-4:Gin Framework入门教程

在本章中,我们将深入研究Gin,一个强大的Go语言web框架。我们将揭示制作一个简单的Gin应用程序的过程,揭示处理路由和请求的复杂性。此外,我们将探索基本中间件的实现,揭示精确定义路由和路由参数的技术。此外&#xff…

【MySQL索引:B+树与页的深度解析】

文章目录 MySQL索引:B树与页的深度解析1. 索引使用的数据结构——B树1.1 B树介绍1.2 B树的特点1.3 B树和B树的对比 2. MySQL中的页2.1 页的介绍2.2 页主体2.3 页目录2.4 B树在MySQL索引中的应用 MySQL索引:B树与页的深度解析 在MySQL数据库中&#xff0…

改进上一篇博文中的按键驱动读取程序,增加环形缓冲区

引言和具体的问题描述 上一篇博文:https://blog.csdn.net/wenhao_ir/article/details/145225508 中写的读取按键值的程序,如果按键按得很快,会出现前面的按键值被后面的按键值被覆盖的情况,即前面的按键值还没被来得及被读取&…

linux环境下软件安装

Linux环境下安装软件 linux安装tomcatLinux配置多台Tomcat linux 手动安装jdklinux yum安装jdk(openjdk)Nacos 安装下载nacos解压三、启动四、常用命令 git安装yum命令安装通过编译安装git linux安装tomcat 1.安装tomcat 下载tomcat安装包,解压到任意目录&#xff…