Открито от:
Гитхъб и имена: Varma Kollu VarmaKollu
Туитър: https://twitter.com/itsvarmakollu
Беше открито при тестване на Бъг Баунти програма на организация, която използваше ServiceNow и техният домейн в обхвата беше „redacted.service-now.com“. Потърсих експлойтите на ServiceNow в Google и открих, че домейнът е уязвим към CVE-2019-20768 и CVE-2021-45901.
Докладвах ги и отчетите бяха приети.
След това се опитах да намеря още бъгове и стигнах до крайна точка /logout_redirect.do. След известно тестване открих, че тази крайна точка рефлектира стойността на параметъра sysparm_url в отговора.
Стойността на параметъра – sysparm_url се отразява в JavaScript. Можете да видите отражението тук:
<script data-
comment="loading_page redirect">setTimeout(function() {
top.location.href = 'VALUE-OF-SYSPARM_URL';
}, 0);</script>
В горния код можем ясно да видим, че ако можем да добавим „javascript:alert()“ в параметъра sysparm_url, тогава можем да постигнем XSS. Опитах „javascript:alert()“ и в отговор „javascript:“ беше премахнат.
Тогава си помислих, че ако думата „javascript:“ се премахва, тогава можем да опитаме „javajavascriptscript:“, така че ако „javascript“ се премахне, тогава все още имаме „javascript:“, но не проработи.
След игра с различни видове encode-ване и изпробване на различни видове техники за заобикаляне. Открих странно поведение в това какво се рефлектира и как.
Така че, когато използвах „//aman:“, тогава рефлекцията е просто „aman:“ без // така че замених „//aman:“ с „//javascript:“ и очаквах отражението като „javascript:“, но Получих "null" в отговора.
След това замених // с //\ и не съм сигурен защо го направих, но проработи и отражението беше „javascript:“
Използвах за payload: //\javascript:alert(document.domain)
и получих „javascript:alert(document.domain)“ в отговор, където „//\“ беше премахнато.
Отворихме URL адреса в браузъра и получихме хубав изскачащ прозорец.
Оказа се, че това е 0-Day в ServiceNow.
Създадох темплейт в Нуклей (https://github.com/projectdiscovery/nuclei-templates/blob/master/cves/2022/CVE-2022-38463.yaml) и сканирах различни Бъг Баунти програми със сканър-а, което доведе до множество открити компании съдържащи тази уязвимост: