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

[内网渗透]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

相关文章:

[内网渗透]SUID提权

文章目录 [内网渗透]SUID提权0x01.什么是SUID&#xff1f;0x02.如何设置SUID&#xff1f;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以r…...

clang 编译器前端 分析

clang 编译器前端 分析 clang的python接口教程&#xff08;二&#xff09; Python接口clang解析C语言AST抽象语法树 clang static analyzer源码分析 clang静态代码分析是clang相对于gcc一个比较能够引起关注的点&#xff0c;特别是clang静态代码分析基于checker的架构和大部…...

3个月精通Python(基础篇)——第1天:Python和Vscode环境安装

安装 Python&#xff1a; 访问 Python 官网 下载 &#xff0c;下载最新的 Python 安装程序。 双击安装程序&#xff0c;按照提示进行安装设置即可。 在安装过程中&#xff0c;请勾选“Add Python X.X to PATH”选项&#xff0c;这样安装后 Python 会被自动添加到系统的环境变量…...

react native web RN webpack nginx 部署

# nginx配置 location /app {root html;index index.html;# url 切换时始终返回index.htmltry_files $uri /app/index.html; } # 图片样式缓存1年 location ~* /app.*\.(js|css|png|jpg)$ {access_log off;expires 365d; } # html/xml/json 文件不缓存 location ~* /app.…...

Jmeter性能测试之Beanshell解析并提取json响应

1&#xff1a;前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下&#xff0c;并将该jar包添加到测试计划的Library中&#xff1b;否则会报&#xff1a;Typed variable declaration : Class: JSONObject not found in namespace的错误 2&#xff1a;解析思路 利用beansh…...

vue-echarts配置项详解

起因 最近接手了一个vue3项目&#xff0c;echarts用的是"vue-echarts": “^6.0.0”&#xff0c;每次查看文档的时候痛苦不已&#xff0c;找一个配置要花费大量时间&#xff0c;所以这篇文章&#xff0c;主要就是为了记录比较常见的一些配置。 主要会写三种图的配置…...

两个csv进行根据相同字段进行合并

源文件&#xff0c;第一列&#xff0c;编号0 目标文件&#xff0c; 编号3 根据社区名称进行匹配&#xff0c;然后将第一个csv文件的经纬度添加到第二个文件中。 import csvsource r"D:\000datasets\链家房价数据\2020去重后社区名称地理编码.csv" target r"…...

SolidWorks绘制Maxwell仿真用带桥接的三维平板螺旋线圈

文章目录 前言一、建立涡状线二、拉伸方法1&#xff08;建立工作面&#xff0c;较复杂&#xff09;三、拉伸方法2&#xff08;穿透&#xff0c;较简单&#xff09;四、建立桥接 前言 在使用Maxwell进行电磁场仿真时&#xff0c;经常需要绘制各种异形线圈&#xff0c;由于Maxwel…...

【每日一个知识点二】原型链

我都是想到啥写啥&#xff0c;丝毫没有规律。前面聊到箭头函数没有原型&#xff0c;就想到了再整理一篇原型链的。 原型 原型是JavaScript中对象的一个属性&#xff0c;它指向另一个对象&#xff0c;用于实现继承关系。每个对象都有一个原型属性__proto__&#xff0c;它指向它…...

placeholder样式自定义(uniapp 微信小程序、h5)

一、使用uniapp开发 ①第一种方式&#xff1a;&#xff08;写在行内&#xff09; <input type"text" placeholder"姓名" placeholder-style"font-size:28rpx;color:#999999;" />②第二种方式&#xff1a; &#xff08;给input加上placeho…...

【LeetCode】383. 赎金信

题目&#xff1a;383. 赎金信 由于此题只含有小写字母,并且magazine里面的字母不可重复使用. 故首先用一个长度为26的整形数组记录magazine里字母出现的次数。 再用这个整形数组跟ransomeNote进行遍历比较&#xff0c;当数组中出现-1时&#xff0c;说明false,否则true. 代码&am…...

【算力革命】算力架构

AI芯片可按架构分为CPU、GPU、FPGA、ASIC&#xff0c;各架构的优缺点可参考以下文章&#xff1a; CPU、GPU、FPGA、ASIC等AI芯片特性及对比_cpu gpu fpga_maopig的博客-CSDN博客 最近&#xff0c;新名词 DSA&#xff08;Domain Specific Architecture&#xff0c;特定领域架构…...

【视觉SLAM入门】4.3. (非线性最小二乘问题)优化算法实现-ceres和g2o, 图优化理论

"天道不争而善胜" 1. Ceres库1.1 名词解释1.2 具体例子1.3 C实现1. 定义代价函数2. 构建最小二乘问题3. 配置求解器&#xff0c;开始优化4. 优化完毕&#xff0c;查看结果 2. G2O(General Graphic Optimization)2.1 图优化2.2 具体例子2.3 C实现1. 定义顶点2. 定义边…...

vue Can‘t resolve ‘path‘

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. 这句话的意思是webpack 5之前是自动导入node一些核心模块的垫片&#xf…...

【JavaEE初阶】——第七节.Servlet入门学习笔记

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;JavaEE进阶 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录 前…...

vue项目登录页面实现记住用户名和密码

vue项目登录页面实现记住用户名和密码 记录一下实现的逻辑&#xff0c;应该分两步来理解这个逻辑 首次登录&#xff0c;页面没有用户的登录信息&#xff0c;实现逻辑如下&#xff1a; 用户输入用户名和密码登录&#xff0c;用户信息为名为form的响应式对象&#xff0c;v-model…...

数学建模-MATLAB三维作图

导出图片用无压缩tif会更清晰 帮助文档&#xff1a;doc 函数名 matlab代码导出为PDF 新建实时脚本或右键文件转换为实时脚本实时编辑器-全部运行-内嵌显示保存为PDF...

pytorch工具——使用pytorch构建一个神经网络

目录 构建模型模型中的可训练参数假设输入尺寸为32*32损失函数反向传播更新网络参数 构建模型 import torch import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net,self).__init__()#定义第一层卷积层&#xff0c;输入维…...

在CSDN学Golang云原生(Kubernetes Pod)

一&#xff0c;pod的定义与基本用法 在 Kubernetes 中&#xff0c;Pod 是最小的可部署单元&#xff0c;它包含一个或多个容器。使用 Golang 来定义和操作 Pod 时&#xff0c;需要使用 kubernetes/client-go 包提供的 API。 以下是 Golang 定义和基本用法 Pod 的示例&#xff…...

我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.7.0更新

什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规范的业务RestFull API 不在去关心一些繁琐。重复工作&#xff0c;而是把重点聚焦到业务。 动机 每次Web API常用功能都需要重新写一遍。或者复…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言&#xff1a;我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM&#xff08;Java Virtual Machine&#xff09;让"一次编写&#xff0c;到处运行"成为可能。这个软件层面的虚拟化让我着迷&#xff0c;但直到后来接触VMware和Doc…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...