Если XSS недоступна, но на странице уже есть форма с валидным CSRF-токеном, можно использовать HTML-инъекцию с помощью атрибута
form=.Все просто: привязываем внешние
<input> и <button> к существующей форме по id — они попадут в POST-запрос при сабмите. Более того, кнопка может иметь свой formaction=, который перезапишет action формы, сохранив при этом CSRF-токен.💡 Некоторые полезные атрибуты для более гибкого управления формами:
▪️
formnovalidate= — позволяет игнорировать правила валидации формы. Полезно, если исходная форма заполнена не полностью, но нужно отправить запрос.▪️
formmethod= — меняет метод отправки формы, например, с GET на POST.▪️
formenctype= — задаёт тип кодирования данных, например multipart/form-data или text/plain. К сожалению, с его помощью всё ещё сложно отправлять валидный JSON в теле запроса.▪️
formtarget= — позволяет перенаправить ответ формы не в основное окно браузера, а в iframe с указанным id=, чтобы скрыть результат отправки от жертвы.🏃 Больше интересных кейсов по HTML-инъекциям читайте здесь
