[内网渗透]SUID提权

news2024/11/17 20:36:03

文章目录

    • [内网渗透]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.coloradmin.cn/o/804134.html

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

相关文章

CHD6.2.1集群 Hive开启Iceberg

下载jar包 https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-hive-runtime/1.0.0/iceberg-hive-runtime-1.0.0.jar 存放在/opt/cloudera/parcels/CDH/lib/hive/auxlib/ CDH集群修改hive配置 选择xml格式 粘贴即可 <property><name>iceberg.engine.hi…

QT: 完成服务器的实现

1> 思维导图 2> 手动完成服务器的实现&#xff0c;并具体程序要注释清楚 Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QMessageBox> //…

小狐狸ChatGPT付费创作系统V2.1.4独立版 +WEB端+ H5端 + 小程序端(新增关注自动回复)系统搭建安装教程

PCu央小狐狸ChatGPT付费创作系统V2.1.4提供最新的对应版本小程序端&#xff0c;播播资源测试相比上几版本增加了关注公众号自动回复、扫码登陆自动回复功能&#xff0c;优化了部分细节。本版小程序端对应最新的2.1.4小程序前端。绘画功能建议采用其他绘画接口-意间AI&#xff0…

Python入门【变量的作用域(全局变量和局部变量)、参数的传递、浅拷贝和深拷贝、参数的几种类型 】(十一)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

nbcio-boot项目把springboot从2.3.5.RELEASE升级到2.7.10和mybatis-plus升级到最新的3.5.3.1的问题解决记录

考虑到原先版本比较老&#xff0c;今天把springboot从2.3.5.RELEASE升级到2.6.6和mybatis-plus升级到最新的3.5.3.1。 编译出现下面的问题 用参数 -e -X clean package后打印出更多的出错日志信息 at org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filter…

大数据未来的前景怎么样?_光点科技

随着科技的迅猛发展和互联网的普及&#xff0c;大数据已成为当今社会中不可或缺的重要资源。大数据是指庞大而复杂的数据集合&#xff0c;这些数据通过高级计算技术进行处理和分析&#xff0c;可以揭示出有价值的信息和趋势。在过去几年中&#xff0c;大数据已经在各行各业产生…

迁移学习、微调、计算机视觉理论(第十一次组会ppt)

@TOC 数据增广 迁移学习 微调 目标检测和边界框 区域卷积神经网络R—CNN

pyspark笔记:读取 处理csv文件 (pyspark DataFrame)

pyspark cmd上的命令 1 读取文件 1.1 基本读取方式 注意读取出来的格式是Pyspark DataFrame&#xff0c;不是DataFrame&#xff0c;所以一些操作上是有区别的 1.1.1 format DataFrame spark.read.format("csv").option(name,value).load(path) format表示读取…

基于飞桨paddle的卷积神经网络构建手写数字识别模型测试代码

基于飞桨paddle的优化的卷积神经网络构建手写数字识别模型测试代码 原始测试图片为255X252的图片 采用的是多层卷积神经网络实现模型 本次预测的数字是: 0 预测结果正确 测试结果&#xff1a; PS E:\project\python> & D:/Python39/python.exe e:/project/python/MNIST…

如何用Python统计CSDN质量分

文章目录 CSDN质量分查询selenium爬取博客地址单篇测试批量查询分析 CSDN质量分查询 CSDN对博客有一套分数评价标准&#xff0c;其查询入口在这里&#xff1a;质量分查询&#xff0c;效果大致如下 如果质量分太低&#xff0c;就会在博文的标题下面出现黄底黄字&#xff1a; 这…

华为OD机试真题 Java 实现【数字涂色】【2022Q4 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多&…

程序员,必须要知道的热门开源项目!

&#x1f3c6; 文章目标&#xff1a;了解热门开源项目 &#x1f340; 入门篇&#xff1a;程序员,必须要知道的热门开源项目! ✅ 创作者&#xff1a;熊猫Jay ✨ 个人公众号: 熊猫Jay字节之旅 (文末有链接) &#x1f341; 展望&#xff1a;若本篇讲解内容帮助到您&#xff0c;请帮…

使用easyexcel实现复杂excel表格导出

1、问题描述 最近在做一个自动化开发票的需求&#xff0c;就是把网页预览的发票导出成一个excel文件。其实这个很好实现&#xff0c;就是使用blob就可以实现把网页的html内容导出成一个.xls的文件就行了。 Blob把html导出为excel文件_blob导入导出excel_金斗潼关的博客-CSDN博…

【我们一起60天准备考研算法面试(大全)-第二十七天 27/60】【真分数】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

HTTP——一、了解Web及网络基础

HTTP 一、使用HTTP协议访问Web二、HTTP的诞生1、为知识共享而规划Web2、Web成长时代3、驻足不前的HTTP 三、网络基础TCP/IP1、TCP/IP协议族2、TCP/IP的分层管理3、TCP/IP 通信传输流 四、与HTTP关系密切的协议&#xff1a;IP、TCP和DNS1、负责传输的 IP 协议2、确保可靠性的TCP…

搭建简单的chatbot并部署到HuggingFace上

调用ChatGPT接口完成聊天任务 下面的代码调用ChatGPT的ChatCompletion接口实现聊天任务&#xff0c;生成的结果如下图打印的信息所示。而且&#xff0c;在封装Conversation class中&#xff0c;message一直使用append进行追加&#xff0c;即每次调用ChatCompletion接口时都传入…

【C++入门到精通】C++入门 —— 类和对象(构造函数、析构函数)

目录 一、类的6个默认成员函数 二、构造函数 ⭕构造函数概念 ⭕构造函数的特点 ⭕常见构造函数的几种类型 三、析构函数 ⭕析构函数概念 ⭕析构函数的特点 ⭕常见析构函数的几种类型 四、温馨提示 前言 这一篇文章是上一篇的续集&#xff08;这里有上篇链接&#xff09;…

qt服务器 网络聊天室

widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//给服务器指针实例化空间server new QTcpServer(this); }Widget::~Widget() {delete ui; }//启动…

C++ malloc/free和new/delete

1.malloc和free malloc是开辟内存单元的库函数&#xff1b; malloc不会调用构造函数&#xff1b; free只是释放malloc所开辟的空间&#xff1b; free不会调用析构函数。 #include <iostream> using namespace std; class A { public:A(int i0) { cout << "A&…

BUG分析以及BUG定位

一般来说bug大多数存在于3个模块&#xff1a; 1、前台界面&#xff0c;包括界面的显示&#xff0c;兼容性&#xff0c;数据提交的判断&#xff0c;页面的跳转等等&#xff0c;这些bug基本都是一眼可见的&#xff0c;不太需要定位&#xff0c;当然也不排除一些特殊情况&#xf…