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

提权方式及原理汇总

一、Linux提权

1、SUID提权

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。

为可执行文件添加suid权限的目的是简化操作流程,让普通用户也能做一些高权限才能做的的工作。但是如果某些现有的二进制文件和实用程序具有SUID权限的话,就可以在执行时将权限提升为root

 

命令:find / -perm -4000 -type f 2>/dev/null find / -perm -u=s-perm -4000:查找权限为“4000”的文件,其中“4000”是表示suid权限的数字。-type f:查找类型为文件的结果,而不是目录或其他类型的文件。2>/dev/null:这个部分是重定向操作。2> 表示重定向标准错误(stderr),/dev/null 是一个特殊的设备文件,它丢弃所有写入其中的数据。因此,2>/dev/null 的作用是将 find 命令产生的任何错误消息丢弃,不在终端显示。

详细的核心原理:

SUID提权的原理与Linux进程的UID有关,进程在运行的时候有以下三个UID:

(A)Real UID:执行该进程的用户的UID。Real UID只用于标识用户,不用于权限检查。

(B)Effective UID(EUID):进程执行时生效的UID。在对访问目标进行操作时,系统会检查EUID是否有权限。一般情况下,Real UID与EUID相同,但在运行设置了SUID权限的程序时,进程的EUID会被设置为程序文件属主的UID。

(C)Saved UID:在高权限用户降权后,保留的UID。

如果某个设置了SUID权限的程序运行后创建了shell,那么shell进程的EUID也会是这个程序文件属主的UID,如果属主为root,便是一个root shell。root shell中运行的程序的EUID也都是0,具备超级权限,于是便实现了提权。

2、sudo

/etc/sudoers文件是sudo权限的配置文件,其中储存了一些用户或组可以以root权限使用的命令,如果可以写这个文件,就可以赋予普通用户sudo权限,然后就可以借助其他命令提权

可以利用sudo提权的命令如下:

wget、find、cat、apt、zip、xxd、time、taskset、git、sed、pip、ed、tmux、scp、perl、bash、less、vi

sudo find提权

find 命令用来在指定目录下查找文件,这里使用“exec”来执行/bin/bash,以访问root shell

sudo find /home -exec /bin/bash \;

其他的详细的命令:Linux提权——SUDO_sudo提权-CSDN博客

3、/etc/passwd 提权

这个需要对passwd有写入权限,正常root用户的uid为0,如果自己写进去一个用户把它的uid改为0的话,用这个用户登录,系统就会切到root用户了

4、内核提权漏洞

利用内核漏洞提取一般三个环节:

第一步:对目标系统进行信息收集,获取系统内核信息及版本信息【uname -a】

第二步,根据内核版本获取对应的漏洞以及exp

第三步,使用exp对目标进行攻击,完成提权

例子:

脏牛内核漏洞提权的原理:

在Linux内核的内存子系统处理私有只读内存映射的写时复制损坏的方式中出现了一种竞争状况,一个低权限的本地用户可以利用此漏洞获取对只读存储器映射的写访问权,所以有可能进一步导致提权漏洞。

5、Crontab定时任务提权

crontab 文件是计划任务的配置,此文件只有 root 可写,但是我们不需要去修改 crontab,只查看里面的有哪些任务,比如定时执行了哪些脚本,再查看对应脚本的权限,若可写,则将提权的代码写入这些脚本。

非 root 权限的用户是不可以列出 root 用户的计划任务的。但是 /etc/ 内系统的计划任务可以被列出,并且默认这些程序以 root 权限执行

cat /etc/crontab

6、docker 组提权

docker组用户提权,目的是利用docker组的用户来提权,因为docker组用户在容器下为root权限,通过挂载方式在容器下给本机添加sudo权限的用户,从而可以利用sudo命令。如果没有拥有sudo权限的用户,是无法执行sudo命令,在kali下会提示用户不在sudoers等提示。

7、环境变量劫持

PATH指定了存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量指定的路径去搜寻可执行文件

使用echo命令显示当前PATH环境变量:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

如果普通用户登陆上去之后,他的path目录下有可以执行的二进制文件,并且这个文件里面里面还有高权限的命令的时候,这时候我们执行这个命令就能获得高权限。

例子:如果可执行目录下面有下面这种代码,里面有危险函数

那么你执行他的话就能获得高权限。

二、Window提权

相关文章:

提权方式及原理汇总

一、Linux提权 1、SUID提权 SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。 为可执行文件添加suid权限的目的是简…...

【leetcode----二叉树中的最大路径和】

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &#xff0c…...

Rust: 编译过程中链接器 `cc` 没有找到

这个错误信息表明在编译过程中链接器 cc 没有找到。cc 通常是 C 编译器的符号链接,它指向系统上的实际 C 编译器,如 gcc 或 clang。这个错误通常意味着你的系统缺少必要的编译工具链。 要解决这个问题,你需要确保你的系统上安装了 C 编译器。…...

【vue-3】动态属性绑定v-bind

1、文本动态绑定&#xff1a; <input type"text" v-bind:value"web.url"> 简写&#xff1a; <input type"text" :value"web.url"> 2、文字样式动态绑定 <b :class"{textColor:web.fontStatus}">vue学…...

Rust:多线程环境下使用 Mutex<T> 还是 Arc<Mutex<T>> ?

在 Rust 中&#xff0c;Mutex 本身不是线程不安全的&#xff1b;它提供了内部的线程同步机制。然而&#xff0c;如果你想在多线程环境中共享同一个 Mutex&#xff0c;你需要确保这个 Mutex 可以被多个线程访问。为此&#xff0c;你通常需要使用 Arc<Mutex<T>>。Arc…...

关于如何创建一个可配置的 SpringBoot Web 项目的全局异常处理

前情概要 这个问题其实困扰了我一周时间&#xff0c;一周都在 Google 上旅游&#xff0c;我要如何动态的设置 RestControllerAdvice 里面的 basePackages 以及 baseClasses 的值呢&#xff1f;经过一周的时间寻求无果之后打算决定放弃的我终于找到了一些关键的线索。 当然在此…...

docker三种自定义网络(虚拟网络) overlay实现原理

docker提供了三种自定义网络驱动&#xff1a;bridge、overlay、macvlan。 bridge驱动类似默认的bridge网络模式。 overlay和macvlan是用于创建跨主机网络。 支持自定义网段、网关&#xff0c;docker network create --subnet 172.77.0.0/24 --gateway 172.77.0.1 my_n…...

C#上位机1ms级高精度定时任务

precisiontimer 安装扩展包 添加引用 完整代码 using PrecisionTiming;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; us…...

盘点28个免费域名申请大全

盘点28个免费域名申请大全 免费域名推荐学习使用&#xff0c;免费就意味着没任何保障。 名称稳定时间支持解析模式后缀格式说明地址EU.org28 年NS.eu.org/. 国家简写.eu.org需要审核&#xff0c;稳定性高&#xff0c;限制少&#xff0c;国内访问有问题&#xff0c;可 CFeu.orgp…...

【vue】封装的天气展示卡片,在线获取天气信息

源码 <template><div class"sen_weather_wrapper"><div class"sen_top_box"><div class"sen_left_box"><div class"sen_top"><div class"sen_city">山东</div><qctc-time cl…...

【MySQL】库的操作和表的操作

库的操作和表的操作 一、库的操作1、创建数据库(create)2、字符集和校验规则&#xff08;1&#xff09;查看系统默认字符集以及校验规则&#xff08;2&#xff09;查看数据库支持的字符集&#xff08;3&#xff09;查看数据库支持的字符集校验规则&#xff08;4&#xff09;校验…...

【学习笔记】后端(Ⅰ)—— NodeJS(Ⅱ)

NodeJS 3、进阶篇 —— Express框架 3.1、Express 框架介绍 3.2、Express 框架初体验 3.3、使用 3.4、中间件 3.5、托管静态文件 3.6、获取表单数据 3.7、防盗链 3.8、路由模式化 3.8、EJS 模板引擎 3.9、express-generator…...

VMware报平台不支持虚拟化Win10家庭版关闭Hyper-V及内核隔离

1.BIOS中开启虚拟化功能 2.启动或关闭程序中找不到Hyper-v 停止 hypervisorlaunchtype&#xff08;Windows Hyper-V 启动加载器&#xff09; 以管理员的身份打开命令行窗口&#xff0c;运行如下命令&#xff0c;关闭停止 Windows Hyper-V 启动加载器 开启 Windows Hyper-V 启…...

简单介绍十款可以免费使用的API测试工具

API开发应该是后端开发最常见的工作&#xff0c;而调试和测试API是非常关键的&#xff0c;这篇文章简单介绍几款常用的工具以供大家参考。 SoapUI SoapUI是很老牌的工具的&#xff0c;在之前Webservice盛行的时候经常会用到。 现在官方推出了Pro版本的ReadyAPI&#xff0c;但要…...

非授权人员进入报警系统

非授权人员进入报警系统基于智能视频分析技术和深度学习技术&#xff0c;非授权人员进入报警系统通过现场已经装好的监控摄像头针对人体进行精准检测&#xff0c;并根据设置的禁入区范围进行判断。通过图像处理和人体识别算法&#xff0c;非授权人员进入报警系统可以在实时监测…...

Mysql基础教程(03):AND

MySQL AND 运算符的用法 本文介绍了 MySQL 中如何在 WHERE 子句中使用 AND 运算符组合多个查询条件过滤查询数据。 当使用 SELECT 查询数据时&#xff0c;如果 WHERE 子句中有多个条件&#xff0c;可以根据需要使用 AND, OR, 或者 NOT 运算符将他们组合起来。本文主要介绍 AN…...

为什么要使用 eval

调用 eval 方法的原因是为了确保模型在进行预测时使用正确的配置。在训练过程中&#xff0c;某些层&#xff08;如 Dropout 层&#xff09;的行为是为了正则化而设计的&#xff0c;它们会在每次迭代中随机丢弃一些神经元的输出。而在评估模式下&#xff0c;这些层将不再随机丢弃…...

BCD编码(8421)介绍

概念 BCD (Binary-Coded Decimal) 是一种二进制的数字编码形式&#xff0c;其特点每个十进制数位用4个二进制位来表示。 在网络IO中&#xff0c;你传输一个数字类型最少需要一字节&#xff0c;传输两个数字类型最少需要两字节&#xff0c;但是当你使用BCD编码后传输&#xff…...

前端javascript包管理,npm升级用pnpm

一 pnpm 介绍 pnpm&#xff08;Package Manager&#xff09;是一个快速、节省磁盘空间的 JavaScript 包管理器&#xff0c;它是 Node.js 生态系统中 npm 的一个替代品。pnpm 解决了传统包管理工具在处理依赖时的一些痛点&#xff0c;特别是关于存储空间使用和依赖地狱的问题。…...

数据库操作(函数)

函数是一段可以直接被另外一段程序调用的程序或代码 一。字符串函数 1.concat(s1,s1....sn)&#xff1a;字符串拼接&#xff0c;将s1&#xff0c;s2&#xff0c;sn拼接为一个字符串 例如&#xff1a; select concat("hello","world"); 2.lower(str&…...

[建堆堆排序的时间复杂度推导]向上建堆向下建堆堆排序的时间复杂度分析推导

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到动画详解数据结构系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭…...

【C++初阶】--- C++入门(上)

目录 一、C的背景及简要介绍1.1 什么是C1.2 C发展史1.3 C的重要性 二、C关键字三、命名空间2.1 命名空间定义2.2 命名空间使用 四、C输入 & 输出 一、C的背景及简要介绍 1.1 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&…...

安装和使用图像处理软件GraphicsMagick @FreeBSD

GraphicsMagick是一个用于处理图像的读取、写入和操作的工具软件。它被誉为图像处理领域的“瑞士军刀”&#xff0c;短小精悍&#xff0c;支持超过88种图像格式&#xff0c;包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF等。 GraphicsMagick的主要特点包括&#xff1a;…...

一款功能强大的安卓虚拟机应用——VMOS Pro使用分享

前段时间我刚刚分享一个WeChat平板模块能够允许用户自由修改系统设置&#xff0c;让你的Android备用手机焕发新生&#xff0c;实现手机PAD化&#xff0c;实现两台设备同时登录微信号。今天我分享的这个相比WeChat更为简单&#xff0c;因为它可以通过虚拟机的方式进行多种androi…...

【408真题】2009-12

“接”是针对题目进行必要的分析&#xff0c;比较简略&#xff1b; “化”是对题目中所涉及到的知识点进行详细解释&#xff1b; “发”是对此题型的解题套路总结&#xff0c;并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材&#xff08;2025版&…...

vue3第三十三节(TS 之 computed watch)

vue3 组合是API 中我们经常使用的 监听函数 computed 和 watch使用 1、computed 里面添加类型 <script setup lang"ts"> import { ref, computed } from vue const age ref(18) // 定义一个Person 接口 interface Person {age: numbername: string } const…...

工厂模式(简单工厂模式+工厂模式)

工厂模式的目的就是将对象的创建过程隐藏起来&#xff0c;从而达到很高的灵活性&#xff0c;工厂模式分为三类&#xff1a; 简单工厂模式工厂方法模式抽象工厂模式 在没有工厂模式的时候就是&#xff0c;客户需要一辆马车&#xff0c;需要客户亲自去创建一辆马车&#xff0c;…...

整理好了!2024年最常见 20 道 Redis面试题(四)

上一篇地址&#xff1a;整理好了&#xff01;2024年最常见 20 道 Redis面试题&#xff08;三&#xff09;-CSDN博客 七、Redis 单线程模型是如何工作的&#xff1f; Redis 是一个基于单线程模型的高性能键值存储数据库。尽管 Redis 操作大多数是单线程执行的&#xff0c;但它…...

sudo pip3 install rpi_ws281x error: externally-managed-environment

报错 error: externally-managed-environment piraspberrypi:~ $ sudo pip3 install rpi_ws281x error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz i…...

day08-Java常用API

day08——Java常用API 一、今日内容介绍、API概述 各位同学&#xff0c;我们前面已经学习了面向对象编程&#xff0c;使用面向编程这个套路&#xff0c;我们需要自己写类&#xff0c;然后创建对象来解决问题。但是在以后的实际开发中&#xff0c;更多的时候&#xff0c;我们是…...