Как проверить, уязвим ли сайт к xss-атакам при помощи кукловода? - PullRequest
0 голосов
/ 20 января 2020

Я создаю простой веб-сервер. Только для демонстрации:

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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...