Я создаю простой веб-сервер. Только для демонстрации:
HTML контент:
<h1>Welcome to search engine</h1>
<form action="nowhere" method="GET">
<input type="text" name="q" id="input1" >
<input type="text" name="q2" id="input2" >
<input type="submit" id="btn">
</form>
<form action="nowhere" method="GET">
<input type="text" id="input3" >
<input type="submit">
</form>
JS контент:
const puppeteer = require (' puppeteer ');
(asyn c () => {
const MALICIOUS_SCRIPT =' alert ("xss") ';
const browser = ожидайте кукловода. launch ({headless: false});
постоянная страница = ожидание browser.newPage ();
ожидание page.goto ('http://localhost: 4000 / ' , {waitUntil: "networkidle2"};
const formsArray = await page. $$ ('form');
for (i in formsArray){
const newArr = await formsArray[i].$$eval('input[type="text"]', inputs => inputs.map(input => input.id))
let newArr2 = newArr.map(el => '#'+el)
for(j in newArr2){
await page.type(newArr2[j],MALICIOUS_SCRIPT,{delay: 10})
}
await page.click('input[type = "submit"]');
// await formsArray[i].evaluate(form => form.submit());
}}) ();
Идея того, что я хочу сделать, состоит в том, чтобы взять все формы в файле HTML и для каждой формы взять все входные данные, вставить в него все вредоносные сценарии ввода и отправить, после этого проверить, есть ли предупреждение после отправки, если нет go до следующей формы и повторите все снова. Но после отправки первой формы возникает ошибка ("(узел: 46436) UnhandledPromiseRejectionWarning: Ошибка: контекст выполнения был разрушен, скорее всего из-за навигатора на. ") так как это сделать правильно? Я просто хочу проверить, уязвим ли сайт к XSS?