提权方式及原理汇总

news2024/11/19 22:43:38

一、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提权

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE使用screenfull实现网页全屏显示

使用方法 首先安装 npm install screenfull --save在使用.vue文件中 引入 import screenfull from screenfull在按钮方法中调用 screenfull.toggle()还可以检测全屏状态 screenfull.isFullscreen测试浏览器是否支持全screenfull screenfull.isEnabled API .request(ele) 全屏…

谓词逻辑(一)

一、句子的谓词符号化 谓词逻辑,也叫一阶逻辑,它对每个最简单的命题尽一步进行分解。 1个体词:可以独立存在的客体。 2谓词:描述一个个体词的属性或多个个体词之间的关系(可用一元函数和多元函数来理解)…

基于树的存储数据结构demo

一.简介 由于之前博主尝试Java重构redis,在redis中的的字典数据结构底层也是采用数组实现,字典中存在两个hash表,一个是用于存储数据,另一个被用于rehash扩容为前者两倍。但是我注意到了在redis的数据结构中,并没有像…

linux系统硬盘读写慢的排查方法

如果服务器硬盘读写慢,可能会导致处理性能降低,用户响应慢。因此及时排除故障至关重要。下面是硬盘读写慢的排查思路。 1、top命令查看硬盘是否繁忙。 2、找出占用硬盘带宽高的进程。 通过iotop命令进行查看,iotop命令是用于展示硬盘读写操作…

高中数学:平面向量-数乘运算

一、定义 顾名思义 向量的数乘运算,就是数量与向量相乘的运算 λ a → \mathop{a}\limits ^{\rightarrow} a→,λ∈R 二、λ a → \mathop{a}\limits ^{\rightarrow} a→的性质 1、长度 |λ|*| a → \mathop{a}\limits ^{\rightarrow} a→| |λ a …

设计模式6——单例模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 单例模式(Singleto…

python科研数据可视化之折线图

例如 : 下面的配色表画出的图很好看。选择喜欢的颜色,找到代码中颜色部分进行修改即可。 代码部分已经有详细的注释,就不一一解释了。另外,如果想要坐标轴从设定的值开始就把下面代码中的范围xlim,ylim进行注释。 imp…

Goby 漏洞发布|Sonatype Nexus Repository Manager 文件读取漏洞(CVE-2024-4956)

漏洞名称:Sonatype Nexus Repository Manager 文件读取漏洞(CVE-2024-4956) English Name: Sonatype Nexus Repository Manager File Read Vulnerability(CVE-2024-4956) CVSS core: 7.5 影响资产数:93784 漏洞描述…

QT--TCP网络通讯工具编写记录

QT–TCP网络通讯工具编写记录 文章目录 QT--TCP网络通讯工具编写记录前言演示如下:一、服务端项目文件:【1.1】server_tcp.h 服务端声明文件【1.2】thread_1.h 线程处理声明文件【1.3】main.cpp 执行源文件【1.4】server_tcp.cpp 服务端逻辑实现源文件【…

开箱测评!吸猫毛除味神器,希喂FreAir Lite宠物空气净化器实测

掉毛季又来了,猫咪的毛发满天飞,怎么办?我家掉毛怪一到季节就开始掉老多毛,关键还喜欢在家里打架跑酷!天上地下都是毛!为了减少家里空气中浮毛,你做过那些努力呢?最近猫掉毛掉的&…

02-结构型设计模式(共7种)

上一篇:01-创建型设计模式(共6种) 1. Adapter(适配器模式) 适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端所期望的另一个接口。这种模式通常用于解决接口不兼容的情况,使得原本由于接口不匹配而无法工作的类可以一起工作…

20232810 2023-2024-2 《网络攻防实践》实验十

1.实践内容 1.1SEED SQL注入攻击与防御实验 (1)使用数据库熟悉SQL查询: 我们已经创建了一个名为Users的数据库,其中包含一个名为creditential的表。该表存储了每个员工的个人信息(例如,eid,密…

DOS学习-目录与文件应用操作经典案例-rd

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.使用 三.案例 一.前言 rd命令,全称Remove Directory,是DOS操作系统中的一个重要命令,用于删除指定的目录及其所有内容。 二.使用 命令格式…

Kubeblocks系列2-redis尝试之出师未捷身先死

背景: 上一节,完成了Kubeblocks系列1-安装。现在就想拿一个简单的应用测试一下kubeblocks这个所谓的神器是否好用,是否可以应用与生产! Kubeblocks系列2-redis尝试 参照官方文档:创建并连接到 Redis 集群 确保 Red…

ORACLE 资源管理参数与等待事件resmgr:cpu quantum

RESOURCE_MANAGER_PLAN 先来看下参数的含义 官网链接:RESOURCE_MANAGER_PLAN (oracle.com) 意思翻译过来这个参数用于资源计划。后边的看完也不是很明白具体的作用 于是参考了以下文章 Oracle 参数 RESOURCE_MANAGER_PLAN 官方解释,作用,…

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt组件包含的子配置项 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 该参数启用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det检查。 true:开启Gpt_…

【计算机视觉(2)】

基于Python的OpenCV基础入门——视频的处理 视频OpenCV视频处理操作:创建视频对象判断视频是否成功初始化读取视频帧获取视频特征设置视频参数声明编码器保存视频释放视频对象 视频处理基本操作的代码实现: 视频 视频是由一系列连续的图像帧组成的。每一…

地平线-旭日X3派(RDK X3)上手基本操作

0. 环境 - win10笔记本 - RDK X3 1.0(地平线旭日X3派,后来改名为代号RDK X3) 1. 下载资料 https://developer.horizon.ai/resource 主要下载镜像 http://sunrise.horizon.cc/downloads/os_images/2.1.0/release/ 下载得到了 ubuntu-prei…

c# 将数据库连接字符串写到配置文件中,及获取

考虑到代码的安全性,已经修改起来的方便性,我们常常不会将数据库连接字符串直接放在代码中,而是将这个字符串放到一个App.config配置文件中,赋值给一个变量,然后再在代码中引用这个变量。 具体做法如下: ①展开项目名称…