Open Redirect: back_url regex bypass → post-auth redirect to attacker

Уязвимость: account.mail.ru/login?back_url=https://mobile-auth.attacker.com

Файл: main.js (fmail-30262) — getBackUrl()

Bypass: regex /^https:\/\/mobile-auth/ не привязан к домену


Уязвимый код (main.js offset 896508):

// 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
}