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官网

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

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

相关文章

如何学习网络安全?有哪些小窍门?

学好网络安全其实没有所谓的捷径,也没有什么小窍门。 入门网络安全首先要有浓厚的学习兴趣,不然很容易就变成了从入门到放弃了。 其次要能静下心,踏踏实实的打好基础。如果你是零基础,建议从Web安全入手,课程难度相对…

AV1视频编解码简介、码流结构(OBU)

我的音视频/流媒体开源项目(github) 目录 一、AV1编码技术 二、AV1码流结构(OBU) 三、IVF文件格式 四、ffmpeg支持AV1 五、关于常见格式对AV1的封装 一、AV1编码技术 AV1是由开放媒体联盟(AOM,Alliance for Open Media)在2018年发布的,AV1的前身…

软考高级5个资格、中级常考4个资格简介及难易程度排序

一、软考高级5个资格 01、网络规划设计师 资格简介:网络规划设计师要求考生具备全面的网络规划、设计、部署和管理能力;该资格考试适合那些在网络规划和设计方面具有较好理论基础和较丰富从业经验的人员参加。 02、系统分析师 资格简介:系统分…

【21】Word:德国旅游业务❗

目录 题目 NO1.2.3 NO4 NO5.6 NO7 NO8.9.10.11 题目 NO1.2.3 F12:另存为布局→页面设置→页边距:上下左右选中“德国主要城市”→开始→字体对话框→字体/字号→文本效果:段落对话框→对齐方式/字符间距/段落间距 NO4 布局→表对话框…

Flink(十):DataStream API (七) 状态

1. 状态的定义 在 Apache Flink 中,状态(State) 是指在数据流处理过程中需要持久化和追踪的中间数据,它允许 Flink 在处理事件时保持上下文信息,从而支持复杂的流式计算任务,如聚合、窗口计算、联接等。状…

【实践】操作系统智能助手OS Copilot新功能测评

一、引言 数字化加速发展,尤其人工智能的发展速度越来越快。操作系统智能助手成为提升用户体验与操作效率的关键因素。OS Copilot借助语言模型,人工智能等,对操作系统的自然语言交互操作 推出很多功能,值得开发,尤其运…

诡异的Spring @RequestBody驼峰命名字段映射失败为null问题记录

问题 一个非常常规的Spring Controller,代码如下: import lombok.RequiredArgsConstructor;Slf4j RestController RequiredArgsConstructor RequestMapping("/api/v1/config") public class ConfigController {private final ConfigService …

图形化界面MySQL(MySQL)(超级详细)

目录 1.官网地址 1.1在Linux直接点击NO thanks…? 1.2任何远端登录,再把jj数据库给授权 1.3建立新用户 优点和好处 示例代码(MySQL Workbench) 示例代码(phpMyAdmin) 总结 图形化界面 MySQL 工具大全及其功能…

flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈

flutter开发-figma交互设计图可以转换为flutter源代码-如何将设计图转换为flutter源代码-优雅草央千澈 开发背景 可能大家听过过蓝湖可以转ui设计图为vue.js,react native代码,那么请问听说过将figma的设计图转换为flutter源代码吗?本文优雅草央千澈带…

SpringBoot错误码国际化

先看测试效果: 1. 设置中文 2.设置英文 文件结构 1.中文和英文的错误消息配置 package com.ldj.mybatisflex.common;import lombok.Getter;/*** User: ldj* Date: 2025/1/12* Time: 17:50* Description: 异常消息枚举*/ Getter public enum ExceptionEnum {//…

Pytorch|YOLO

🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、 前期准备 1. 设置GPU 如果设备上支持GPU就使用GPU,否则使用CPU import torch import torch.nn as nn import torchvision.transforms as transforms im…

SpringBoot2 + Flowable(UI)

文章目录 引言I 技术栈软件架构基于 Vue.js 和 Element UI 的后台管理系统工程结构II 依赖rest,logic,conf 的依赖工作流flowable jar包flowable-ui所需jar包III 配置jdbc 配置 nullCatalogMeansCurrent = true引言 I 技术栈 软件架构 前端基于vue 、element-ui框架分模块设…

【Azure 架构师学习笔记】- Azure Function (2) --实操1

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Function 】系列。 接上文【Azure 架构师学习笔记】- Azure Function (1) --环境搭建和背景介绍 前言 上一文介绍了环境搭建,接下来就在本地环境下使用一下。 环境准备 这里我下载了最新的VS studio&…

如何在linux系统上完成定时开机和更新github端口的任务

任务背景 1.即使打开代理,有的时候github去clone比较大的文件时也会出问题。这时需要每小时更新一次github的host端口; 2.马上要放假,想远程登录在学校的台式电脑,但学校内网又不太好穿透。退而求其次,选择定时启动电…

Net Core微服务入门全纪录(三)——Consul-服务注册与发现(下)

系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…

图数据库 | 19、高可用分布式设计(下)

相信大家对分布式系统设计与实现的复杂性已经有了一定的了解,本篇文章对分布式图数据库系统中最复杂的一类系统架构设计进行探索,即水平分布式图数据库系统(这个挑战也可以泛化为水平分布式图数据仓库、图湖泊、图中台或任何其他依赖图存储、…

OpenAI函数调用迎来重大升级:引入「最小惊讶原则」等软件工程实践,开发体验更上一层楼!

想玩转各种AI模型?chatTools 帮你搞定!这里有o1、GPT4o、Claude和Gemini等等,一个平台就能满足你所有的AI需求。快来开始你的AI冒险吧! OpenAI的函数调用功能再次迎来重大更新!新版指南不仅大幅精简了文档,…

Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)

目录 前言1. 基本知识2. Java代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线!! 对于Java的基本知识推荐阅读: java框架…

前端实习第二个月小结

时间飞快,第一次实习已经过去两个多月,作一些简单的总结和分享。 注:文章整体会比较轻松,提及的经历、经验仅作参考。 一、关于实习/工作内容 1、工作内容 近期做的是管理后台方面的业务,技术栈:前端re…

QT笔记- Qt6.8.1 Android编程 添加AndroidManifest.xml文件以支持修改权限

1. 切换项目选项卡,找到构建的步骤下的最后一项构建安卓APK,展开后找到应用程序栏,点击安卓自定义中的创建模板. 2. 弹出对话框勾选图中选项后点完成 3. 回到项目,查看.pro文件,里面多了很多内容不管,在下…