Уязвимость: account.mail.ru/login?back_url=https://mobile-auth.attacker.com
Файл: main.js (fmail-30262) — getBackUrl()
Bypass: regex /^https:\/\/mobile-auth/ не привязан к домену
// Regex — допускает любой URL начинающийся с "https://mobile-auth"
var B = /^((mailapp|internal-api|myteam-messenger):\/\/)|(https:\/\/mobile-auth)/;
// getBackUrl — проверяет 3 условия, B.test() пропускает attacker URL
getBackUrl: function(e, t) {
var n = e || this.urlData.backUrl || this.urlData.back_url;
if (n) {
var o = document.createElement("a");
o.href = n;
if (validateMailRuUrl(o.href) || k.test(o.href) || B.test(o.href))
return o.href; // ← ATTACKER URL RETURNED
}
return "https://e.mail.ru"; // default
}
// exit — вызывает getBackUrl и перенаправляет
exit: function(e) {
window.location.href = this.getBackUrl(e); // ← REDIRECT TO ATTACKER
}