문제 설명
입력 유효성 검사 및 출력 인코딩이 누락되면 JavaScript를 삽입할 수 있으므로 리플렉션된 XSS(교차 사이트 스크립팅)가 발생합니다.
리플렉션된 교차 사이트 스크립팅은 Microsoft System Center 2016 인증 페이지에 임의의 JavaScript를 삽입하는 데 사용할 수 있습니다. 아래의 GET 요청을 가로채서 SpaceID를 수정하여 웹 콘솔의 왼쪽 탐색 창에 임의의 문자열을 삽입할 수 있습니다.
GET/OperationsManager/InternalPages/NavigationTree.aspx?SpaceId=1002&ViewId=Favorites_Overview HTTP/1.1
다음은 임의의 문자열의 예입니다.
abc%3E%3C","00000000-0000-0000-0000-000000000000");alert(1);//%3E
악의적인 JavaScript는 일단 삽입이 되면 페이지의 현재 동작을 수정하고 트로이 목마, 강제 악성 리디렉션, 콘텐츠 스푸핑, Keylogger, 콘텐츠 유출, VIEWSTATE 및 유효성 검사기의 토큰 유출(CSRF 방지 제어 무력화) 등을 유발합니다.
공격은 다음 단계로 구성됩니다.
-
공격자는 XSS 페이로드를 사용하여 System Center의 인증된 특정 GET 요청을 만들고, 피해자가 특수 URL에 액세스하도록 속이거나, 사용자가 특정 요청을 트리거하는 피싱 사기에 액세스하도록 속입니다.
-
인증된 피해자가 홈페이지를 로드/다시 로드합니다.
참고: 공격은 모든 viewID 값 및 SpaceID 쿼리 문자열 매개 변수가 있는 모든 요청에 적용할 수 있습니다.
테스트 사례
예상 결과: 유효하지 않은 SpaceID 오류 또는 빈 창 및 임의의 JavaScript의 실행 없음
결과: 임의 JavaScript가 실행되었습니다.
해결 방법
엄격한 입력 유효성 검사를 구현합니다. 정수만 SpaceID로 허용되므로 입력에 대한 데이터 형식 검사는 취약점을 해결하는 데 충분합니다.
SpaceID가 지원되는 값(1001 및 1002)인지 확인하기 위해 검사를 추가했습니다. 그렇지 않으면 트리 데이터가 비어 있습니다.
참조
CVE-2020-1331의 보안 지침 공지를 참조하세요.
보안 분류
리플렉션된 교차 사이트 스크립팅, 콘텐츠 스푸핑