[内网渗透]SUID提权

文章目录

    • [内网渗透]SUID提权
      • 0x01.什么是SUID?
      • 0x02.如何设置SUID?
      • 0x03.查找属主为root的SUID文件
      • 0x04.进行SUID提权
        • 1.find提权
        • 2.vim/vi/vim.tiny 以root权限修改文件
        • 3.bash提权
        • 4.less/more执行系统命令
        • 5.nano以root权限修改文件
        • 6.awk执行系统命令
        • 7.cp以root权限覆盖文件
        • 8.nmap(过时)

[内网渗透]SUID提权

0x01.什么是SUID?

suid(set uid)是linux中的一种特殊权限,suid可以让调用者以文件拥有者身份运行该文件,所以利用suid提权的核心就是运行root用户所拥有的suid的文件,那么运行该文件的时候就得获得root用户的身份了。

但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义.

在执行过程中,调用者会暂时获得该文件的属主权限,且该权限只在程序执行的过程中有效。

通俗的来讲,假设我们现在有一个可执行文件/bin/find,其属主为root。当我们通过非root用户登录时,如果find命令设置了SUID权限且属主为root,而恰好find命令能通过-exec选项执行系统命令,我们可在非root用户下运行find执行命令,在执行文件时,该进程的权限将为root权限。达到提权的效果。利用此特性,我们可以实现利用SUID权限的特殊进行提权

image-20230728164302312

0x02.如何设置SUID?

chmod u+s filename   设置SUID位
chmod u-s filename   去掉SUID设置

我们假设binexec为二进制可执行文件

image-20230728165450621

该文件的属主(属主为root)的可执行位的权限变为:S,说明获得了SUID权限

0x03.查找属主为root的SUID文件

具有SUID权限的二进制可执行文件有:

nmap
vim
find
bash
more
less
nano
cp
awk

知道了这些文件后,我们需要找出属主为root,且具有SUID权限的文件的位置,利用这些命令进行提权

以下命令可以找到正在系统上运行的所有SUID可执行文件。准确的说,这个命令将从/目录中查找具有SUID权限位且属主为root的文件并输出它们,然后将所有错误重定向到/dev/null,从而仅列出该用户具有访问权限的那些二进制文件:

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
find / -perm -u=s -type f 2>/dev/null
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
>表示重定向
/dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。

更多可以看:GTFOBins

我们执行第一条看看:

image-20230728170410574

这些文件都是具有SUID权限位,并且属主为root的文件

我们查看一下/usr/bin/passwd

> ls -al /usr/bin/passwd 
-rwsr-xr-x 1 root root 68248 2022年11月11日 /usr/bin/passwd

0x04.进行SUID提权

进行提权的前提是二进制可执行文件的属主为root,且具有SUID权限位

1.find提权

find比较常见,不仅可以用来查找文件,同时还具有执行命令的能力。因此,如果配置有SUID权限运行,只可以通过find执行的命令去以root身份运行

find filename -exec whoami \; # filename 可以随便指定一个文件# 这个 \; 必须要有,而且和命令前要有个空格# -exec:<执行指令>:假设find指令的回传值为True,就执行该指令;

image-20230728171617608

如图所示,使用find提权成功,查看了root用户才能查看的文件

2.vim/vi/vim.tiny 以root权限修改文件

直接vim anyFile,然后在末行模式输入:

:!/bin/sh:set shell='/bin/sh' + :shell

image-20230728172731692

回车后就可以输入命令了:

image-20230728200132102

给vim suid权限后,意味着任一用户可以以root权限编辑任一文件,linux下本来一切皆文件,实际造成的结果是我们可以为所欲为,修改/etc/sudoers,将一个用户提升为root权限,或者新增一个用户,或者修改sudo权限,增加nopasswd all的权限。

例如:

image-20230728202246698

我们成功以leekos普通用户修改了binexec文件的内容

我们也可以修改/etc/passwd将普通用户改为root权限

3.bash提权

先设置bash的属主为root,并且赋予SUID权限位

使用:bash -p

image-20230728192631181

4.less/more执行系统命令

less/more作用类似,我们此处以more举例:

先给more加上SUID权限,然后more /etc/passwd(需要查看一个较大的文件,否则不能分页)

在末行模式输入:!/bin/sh即可执行系统命令

5.nano以root权限修改文件

nano
ctrl+R
ctrl+x

image-20230728195338832

nano同vim一样也可以以root权限修改文件内容:

image-20230728202748222

6.awk执行系统命令

输入awk,然后输入:awk 'BEGIN{system("/bin/bash")}' 即可执行系统命令:

image-20230728201302090

7.cp以root权限覆盖文件

这里binexec文件只有root可以写入但是这里我们使用带有SUID权限的cp命令,将demoFile中的文件写入了binexec

(我们同样也可以写入/etc/sudoers文件,将当前用户修改为root权限)

image-20230728203142739

8.nmap(过时)

适用版本:nmap2.02至5.21

在早期nmap版本中,带有交互模式,因而允许用户执行shell命令

使用如下命令进入nmap交互模式:

nmap --interactive

在nmap交互模式中 通过如下命令提权:

nmap> !sh
sh-3.2# whoami
root

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

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

相关文章

开源计算机视觉库OpenCV详解

目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、…

LLM-Blender:大语言模型也可以进行集成学习

最近在看arxiv的时候发现了一个有意思的框架&#xff1a;LLM-Blender&#xff0c;它可以使用Ensemble 的方法来对大语言模型进行集成。 官方介绍如下&#xff1a;LLM-Blender是一个集成框架&#xff0c;可以通过利用多个开源大型语言模型(llm)的不同优势来获得始终如一的卓越性…

TCP如何保证服务的可靠性

TCP如何保证服务的可靠性 确认应答超时重传流量控制滑动窗口机制概述发送窗口和接收窗口的工作原理几种滑动窗口协议1比特滑动窗口协议&#xff08;停等协议&#xff09;后退n协议选择重传协议 采用滑动窗口的问题&#xff08;死锁可能&#xff0c;糊涂窗口综合征&#xff09;死…

ESP32 官方AT固件编译(从零开始环境搭建到编译完成全过程)

1、下载VMware免费版 https://download3.vmware.com/software/WKST-PLAYER-1702/VMware-player-full-17.0.2-21581411.exe 2、下载Ubuntu &#xff08;ubuntu-22.04.2-desktop-amd64.iso&#xff09;** https://releases.ubuntu.com/jammy/ubuntu-22.04.2-desktop-amd64.iso…

IDE/mingw下动态库(.dll和.a文件)的生成和部署使用(对比MSVC下.dll和.lib)

文章目录 概述问题的产生基于mingw的DLL动态库基于mingw的EXE可执行程序Makefile文件中使用Qt库的\*.a文件mingw下的*.a 文件 和 *.dll 到底谁起作用小插曲 mingw 生成的 \*.a文件到底是什么为啥mingw的dll可用以编译链接过程转换为lib引导文件 概述 本文介绍了 QtCreator mi…

AI编程常用工具 Jupyter Notebook

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 深度学习编程常用工具 我们先来看 4 个常用的编程工具&#xff1a;Sublime Text、Vim、Jupyter。虽然我介绍的是 Jupyter&#xff0c;但并不是要求你必须使用它&#xff0c;你也可以根据自己的喜…

PostgreSQL PG16 逻辑复制在STANDBY 上工作 (译)

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

Mybatis-plus从入门到精通

1、什么是MyBatis-Plus MyBatis-Plus&#xff08;简称MP&#xff09;是一个基于MyBatis的增强工具&#xff0c;在MyBatis的基础上对其进行扩展&#xff0c;用于简化MyBatis操作&#xff0c;提高开发效率。它继承了MyBatis原生的所有特性&#xff0c;并且添加了一些额外的功能&…

前端随笔:HTML/CSS/JavaScript和Vue

前端随笔 1&#xff1a;HTML、JavaScript和Vue 最近因为工作需要&#xff0c;需要接触一些前端的东西。之前虽然大体上了解过HTML、CSS和JavaScript&#xff0c;也知道HTML定义了内容、CSS定义了样式、JavaScript定义了行为&#xff0c;但是却没有详细的学习过前端三件套的细节…

微服务入门---SpringCloud(一)

微服务入门---SpringCloud&#xff08;一&#xff09; 1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 2.服务拆分和远程调用2.1.服务拆分原则2.2.服务拆分示例2.2.1.导入Sql语句2.2.2.导入demo工程 2.3.实现远程调用案例2.3.1.案例需求…

CoTracker跟踪器 - CoTracker: It is Better to Track Together

论文地址&#xff1a;https://arxiv.org/pdf/2307.07635v1.pdf 官方地址&#xff1a;https://co-tracker.github.io/ github地址&#xff1a;https://github.com/facebookresearch/co-tracker/tree/main 引言 在计算机视觉领域&#xff0c;光流估计是历史最久远的问题之一&a…

利用VBA制作一个转盘游戏之五:最终的游戏过程

【分享成果&#xff0c;随喜正能量】真正厉害的人&#xff0c;从来不说难听的话&#xff0c;因为人心不需要听真话&#xff0c;只需要听好听的话&#xff0c;所以学着做一个有温度且睿智的人。不相为谋&#xff0c;但我照样能心平气和&#xff0c;冷眼相待&#xff0c;我依旧可…

BGP的介绍

目录 BGP基础 BGP的发展历史 BGP在企业中的应用 距离矢量型协议和路径矢量型协议的区别 BGP的特征 1.可控性 2.可靠性 3.AS-BY-AS BGP的对等关系 BGP的数据包 1.open报文 2.Keepalive报文 3.Update报文 4.Notification 报文 5.Route-refresh报文 BGP的状态机 …

【暑期每日一练】 day7

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一…

【深度学习中常见的优化器总结】SGD+Adagrad+RMSprop+Adam优化算法总结及代码实现

文章目录 一、SGD&#xff0c;随机梯度下降1.1、算法详解1&#xff09;MBSGD&#xff08;Mini-batch Stochastic Gradient Descent&#xff09;2&#xff09;动量法&#xff1a;momentum3&#xff09;NAG(Nesterov accelerated gradient)4&#xff09;权重衰减项&#xff08;we…

使用 ChatGPT 进行研究的先进技术

在这篇文章中&#xff0c;您将探索改进您研究的先进技术。尤其&#xff0c; 分析和解释研究数据进行文献综述并找出研究差距废话不多说直接开始吧&#xff01;&#xff01;&#xff01; 分析和解释研究数据 一家小企业主希望分析客户满意度数据以改善客户服务。他们使用包含 10…

【Lua学习笔记】Lua入门

文章目录 Lua变量数据类型变量声明其他表示 Lua语法判断逻辑判断&#xff08;Lua很特殊&#xff0c;这个比较重要&#xff09;短路判断 ifif else 循环whileforrepeat 迭代器泛型for迭代器无状态迭代器多状态的迭代器 Lua函数select方法 数组字符索引_G &#xff08;不是教程&a…

opencv对相机进行畸变矫正,及矫正前后的坐标对应

文章目录 1.背景2.需求分析3.解决方案3.1.镜头畸变矫正3.2.知道矫正后的画面坐标(x, y)&#xff0c;求其在原画面的坐标(x, y)3.2.知道原画面坐标(x1, y1)&#xff0c;求其在矫正后的画面坐标(x2, y2) 4.效果5.代码 1.背景 目前有个项目&#xff0c;需要用到热成像相机。但是这…

k8s deployment(k8s经典版)|PetaExpress

Deployment是什么&#xff1f; Deployment是指在软件开发中将应用程序或系统部署到目标环境中的过程。它包括将代码编译、配置、打包并安装到目标服务器或设备上的步骤。k8s deployment是&#xff08;k8s经典版&#xff09;中用来管理发布的控制器&#xff0c;在开发的过程中使…

selenium等待的三种方式(详细)

1.强制等待 time.sleep(3) 这种方式会是操作强行等待3s才会进行下一步操作&#xff0c;但是这种放法&#xff0c;可能会延长测试的时间&#xff0c;如果元素在1s中出现&#xff0c;就会浪费2s的时间&#xff0c;并且这种放法单次有效&#xff0c;每次需要等待元素的操作都需要…