
PoC exploit code for CVE-2021-26855
CVE-2021-26855에 대한 PoC 익스플로잇 코드입니다.
원본 코드는 https://github.com/GreyOrder에서 개발되었습니다.
CVE-2021-26855 SSRF를 golang으로 간단히 구현한 연습 영향받는 버전
Exchange Server 2013 CU23 미만
Exchange Server 2016 CU18 미만
Exchange Server 2019 CU7 미만
사용 조건
이 취약점은 이전 Exchange 취약점과 다릅니다. 이 취약점은 로그인 가능한 사용자 ID가 필요하지 않으며, 권한 없이 내부 사용자 리소스를 얻을 수 있습니다. CVE-2021-27065와 함께 사용하여 원격 명령 실행을 구현할 수 있습니다.
취약점 트리거 요구 사항
대상 서버에 취약점이 존재
대상 Exchange 서버는 로드 밸런싱 서버여야 함, 즉 두 개 이상의 서버가 동시에 사용되어야 함
대상 이메일 주소. 참고: 주소는 도메인 내의 이메일 주소여야 하며, 단순한 이메일 주소가 아닙니다. 둘 사이에는 차이가 있습니다. 테스트 결과, 특수한 경우를 제외하고 올바른 이메일 주소이면 문제가 없었습니다.
공격자는 또한 내부 Exchange 서버의 FQDN(Fully Qualified Domain Name)을 식별해야 합니다. 실제로는 서버 호스트 이름만 필요합니다. 호스트 이름은 도메인 내에서 확인될 수 있기 때문입니다.
위 네 가지 항목 중 FQDN은 NTLM Type2 메시지를 통해 캡처할 수 있으며, 이메일 주소는 직접 열거할 수 있습니다. FQDN에 대한 추가 설명: 저는 NTLM Type2만을 사용하여 시스템 정보를 캡처하기 때문에, 기본적으로 도구로 얻은 FQDN은 현재 접근 중인 머신입니다. 따라서 취약점을 직접 트리거할 수 없습니다. FQDN 이름을 기반으로 수동으로 판단하고 -n을 사용하여 다른 Exchange 서버 호스트 이름으로 교체해야 합니다. 사용 방법
이 취약점을 익스플로잇하려면 Ruby나 Python 같은 스크립트 언어를 사용하는 것이 더 편리합니다. Golang을 배우기 위해 Golang으로 작성했으므로, 이 작은 도구는 반제품에 불과하며 시간이 있을 때 업데이트할 예정입니다.
이 도구는 현재 다음 기능을 지원합니다:
취약점 탐지 (단순히 명중 가능 여부만 확인하며, 탐지용으로 사용할 수 없음)
사용자 열거
간단한 메일 ID 및 제목 읽기
메일 다운로드 (업그레이드됨, 이제 표준 eml 파일)
사용자가 저장한 연락처 읽기 (전역이 아닌, 대상이 저장한 연락처만 해당)
폴더 지정 (임의 지정 불가, 자세한 내용은 https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/distinguishedfolderid 참조)
다른 용도로는 직접 XML 내용을 수정하십시오.
사용법:
go run CVE-2021-26855-PoC.go -h
-h string 필수, 대상 IP 또는 도메인 이름
-U string 선택 사항, 열거할 사용자 목록 필요
-d 선택 사항, 메일 다운로드
-l 선택 사항, 메일 목록 표시
-n string 선택 사항, FQDN 지정 필요
-t string 선택 사항, 요청 지연 시간 (기본값 "1")
-u string 선택 사항, 대상 지정 (기본값 "administrator")
-c 선택 사항, 현재 사용자가 저장한 연락처 읽기 (전체 아님)
-f string 선택 사항, 볼 폴더 지정 (기본값 "inbox")