ΠœΠ΅ΠΆΡΠ°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ скриптинг (XSS)

Абстрактный

Когда Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΎ Π²Π΅Π±-прилоТСниях, количСство уязвимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, нСоспоримо. Богласно Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Ρƒ OWASP Top Ten 2007, мСТсайтовый скриптинг (XSS) Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² число Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых уязвимостСй ΠΊΠ°ΠΊ ΠΈΠ·-Π·Π° лёгкости эксплуатации, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ·-Π·Π° ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠ³ΠΎ ΡƒΡ‰Π΅Ρ€Π±Π° для уязвимых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Бпустя 14 Π»Π΅Ρ‚ этот Ρ‚ΠΈΠΏ уязвимости всС Π΅Ρ‰Π΅ присутствуСт Π² Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π΅ OWASP Top Ten 2021, составляя ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ A3-Injection.

XSS

Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Β«ΠœΠ΅ΠΆΡΠ°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ скриптинг»?

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ скрипт β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π’ случаС Π²Π΅Π±-прилоТСния, Ссли ΠΎΠ½ΠΎ Π½Π΅ провСряСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π½Π° сСрвСр, врСдоносный Π°Π³Π΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ скрипты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнят ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π΅Π±-сайта. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этой ситуации Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚ врСдоносного.

Π’Π΅ΠΌ самым ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ XSS отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π΅Π±-Π°Ρ‚Π°ΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Π½Π°Ρ†Π΅Π»Π΅Π½Π° Π½Π΅ нСпосрСдствСнно Π½Π° скомпромСтированноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСходят ΠΊ уязвимому Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ. ВнСдряя ΠΊΠΎΠ΄ Javascript Π½Π° Π²Π΅Π±-страницу, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ Β«Same-OriginΒ», Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΡƒΡŽ для раздСлСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π΅Π±-сайтов, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ cookie, Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌ сСансов ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, хранящСйся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈ использовании Π²Π΅Π±-сайта.

XSS

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JavaScript?

JavaScript β€” это язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слоТныС элСмСнты Π½Π° Π²Π΅Π±-страницах, учитывая, Ρ‡Ρ‚ΠΎ обычная Π²Π΅Π±-страница ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ статичСский ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚. Когда Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚Ρ‹, 2D/3D-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ рСсурсы, JavaScript, бСзусловно, задСйствован. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ аналогию с кСксом, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ слой Ρ‚ΠΎΡ€Ρ‚Π° Π² стандартных Π²Π΅Π±-тСхнологиях, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ HTML ΠΈ CSS.

XSS

  • HTML β€” это язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для структурирования ΠΈ осмыслСния Π²Π΅Π±-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Он позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π°Π±Π·Π°Ρ†Ρ‹, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ изобраТСния ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° страницу.
  • CSS β€” это язык ΠΏΡ€Π°Π²ΠΈΠ» стилСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для примСнСния стиля ΠΊ HTML-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ. Он опрСдСляСт Ρ†Π²Π΅Ρ‚Π° Ρ„ΠΎΠ½Π° ΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… столбцах.
  • JavaScript β€” это язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ динамичСски обновляСмый ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°, Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ изобраТСниями ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ уязвимого ΠΊΠΎΠ΄Π° XSS

<?php $search = $_GET['q']; echo "Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎ запросу " Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹. $search; ?>

Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ прСдставляСт собой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π°, уязвимого для XSS, Ссли отсутствуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, *q ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‡Π΅Ρ€Π΅Π· запрос GET.*

ВлияниС XSS

  • ΠŸΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° врСдоносныС Π²Π΅Π±-сайты;
  • Ѐиксация Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ клавиш ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ;
  • Доступ ΠΊ истории Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ содСрТимому Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ;
  • Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ эксплойты Π½Π° Π±Π°Π·Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ сбою Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°);
  • ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ cookie-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ;
  • Π£ΠΊΡ€Π°ΡΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½ сСанса Π²Ρ…ΠΎΠ΄Π° Π² систСму, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹, Π½Π΅ имСя Π΅Π΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;
  • Π—Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ запросы Π½Π° сСрвСр;
  • Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС Π²Π΅Π±-страницы;
  • ΠžΠ±ΠΌΠ°Π½ΡƒΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ свой ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ прилоТСниям;
  • Π—Π°Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΆΠ΅Ρ€Ρ‚Π²Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ врСдоносным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π·Π°Ρ…Π²Π°Ρ‚Ρƒ устройства ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹.

Π’ΠΈΠΏΡ‹ Π°Ρ‚Π°ΠΊ

БущСствуСт Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π°Ρ‚Π°ΠΊ с использованиСм мСТсайтового скриптинга, ΠΈ, нСсмотря Π½Π° сходство, ΠΈΡ… ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ ΠΈ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ сущСствСнно Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ. Π’ΠΎΡ‚ ΠΎΠ½ΠΈ:

ΠžΡ‚Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹ΠΉ XSS

ΠžΡ‚Ρ€Π°ΠΆΡ‘Π½Π½Π°Ρ XSS-Π°Ρ‚Π°ΠΊΠ° β€” самая распространённая ΠΈ простая ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Ρ‚ΠΈΠΏΠΎΠ² XSS. Она ΠΏΡ€ΠΎΡ‰Π΅ всСго рСализуСтся ΠΈ Π»Π΅Π³Ρ‡Π΅ всСго обнаруТиваСтся. ЀактичСски, это СдинствСнный Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ извСстная ΠΊΠ°ΠΊ нСпСрсистСнтная Π°Ρ‚Π°ΠΊΠ°, ΠΎΠ½Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΆΠ΅Ρ€Ρ‚Π²Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠ»Π° ΠΏΠΎ врСдоносным ссылкам, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ отправляСт запрос Π½Π° сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ «отраТаСтся» ΠΆΠ΅Ρ€Ρ‚Π²Π΅ Ρ‡Π΅Ρ€Π΅Π· Π·Π°Ρ€Π°ΠΆΠ΅Π½Π½ΡƒΡŽ страницу.

Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ самого прилоТСния, Π΅ΠΌΡƒ достаточно ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ ΠΆΠ΅Ρ€Ρ‚Π²Ρƒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° Π·Π°Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ ссылки, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ эту Π°Ρ‚Π°ΠΊΡƒ смСсью ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Ρ‡ΠΈ.

XSS

ΠžΡ‡Π΅Π½ΡŒ распространённый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π°Ρ‚Π°ΠΊΠΈ β€” поля поиска Π½Π° Π²Π΅Π±-сайтах, Π³Π΄Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для поиска, которая отобраТаСтся Π½Π° страницС. Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ провСряСт эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Javascript Π² это ΠΏΠΎΠ»Π΅ поиска ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½Π½Ρ‹ΠΉ XSS

Π₯Ρ€Π°Π½ΠΈΠΌΡ‹ΠΉ XSS-Π°Ρ‚Π°ΠΊ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹ΠΌ XSS-Π°Ρ‚Π°ΠΊΠΎΠΉ, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· врСдоносной ссылкой. Π₯Ρ€Π°Π½ΠΈΠΌΡ‹ΠΉ XSS-Π°Ρ‚Π°ΠΊ позволяСт Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ скрипты Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° постоянной основС, зараТая ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊ Π½Π΅ΠΌΡƒ обращаСтся. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ постоянная XSS-Π°Ρ‚Π°ΠΊΠ°.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π΄Π΅Π» ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²/ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² прилоТСния Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ провСряСт сообщСния, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Если Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ врСдоносный ΠΊΠΎΠ΄ Π² эти ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ любого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, заходящСго Π½Π° страницу.

XSS

Атаки с использованиСм сохранСнных XSS ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π±ΠΎΠ»Π΅Π΅ слоТными, Ρ‡Π΅ΠΌ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-сайт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ:

  • Достаточный Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π°Π²Π΄Π°Ρ‚ΡŒ Π°Ρ‚Π°ΠΊΡƒ;
  • Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ систСмы бСзопасности, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сохранСнных XSS-Π°Ρ‚Π°ΠΊ.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½, кибСрпрСступник смоТСт ΠΏΠΎΡ€Π°Π·ΠΈΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСС количСство ΠΆΠ΅Ρ€Ρ‚Π². Π›ΡŽΠ±ΠΎΠΉ, ΠΊΡ‚ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π°Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹ΠΉ Π²Π΅Π±-сайт, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ врСдоносныС скрипты Π² свой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ скрипта символы, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ, Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ тСкстом Π½Π° скомпилированной страницС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π°Ρ‚Π°ΠΊΡƒ Stored XSS практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ. НСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ‚Ρ€Π΅Π²ΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ подозрСния.

XSS на основС DOM

DOM-Based (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°) консолидируСтся, ΠΊΠΎΠ³Π΄Π° врСдоносный Π°Π³Π΅Π½Ρ‚ измСняСт взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈ Π²Π΅Π±-сайтами, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ обращаСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, измСняя Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΆΠ΅Ρ€Ρ‚Π²Ρ‹ Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΡ‚Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹Π΅ ΠΈ сохранённыС XSS-Π°Ρ‚Π°ΠΊΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° HTML Π½Π° сторонС сСрвСра, Π°Ρ‚Π°ΠΊΠΈ Π½Π° основС DOM ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ это ΠΈ Ρ„ΠΎΠΊΡƒΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° активности Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ смоТСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ процСсс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ клиСнтский Javascript отправляСт свои Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ смоТСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния Π² своСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅.

XSS

Как Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ сСбя (ΠšΠ»ΠΈΠ΅Π½Ρ‚)

  • ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ скрипты Π½Π° страницах, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΈΡ… ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ;
  • Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΏΠΎ ссылкам ΠΈΠ· ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСктронных писСм ΠΈΠ»ΠΈ сообщСний Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ…;
  • Доступ ΠΊ Π²Π΅Π±-сайтам осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнного Π²Π²ΠΎΠ΄Π° ΠΈΡ… URL-адрСсов Π² Π°Π΄Ρ€Π΅ΡΠ½ΡƒΡŽ строку Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, Π° Π½Π΅ ΠΏΡƒΡ‚Π΅ΠΌ наТатия Π½Π° сторонниС ссылки;
  • РСгулярно обновляйтС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ послСдними исправлСниями ошибок ΠΈ обновлСниями бСзопасности. РСгулярноС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ снизит уязвимости Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… уязвимыми для XSS-Π°Ρ‚Π°ΠΊ.
  • ΠŸΡ€ΠΎΠ²Π΅ΡΡ‚ΠΈ Π°ΡƒΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ;

Как Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ сСбя (сСрвСр)

Атаки, связанныС с Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ΠΌ A03:2021, происходят ΠΈΠ·-Π·Π° отсутствия очистки ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, отправляСмой Π½Π° сСрвСр, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… с сСрвСра. БущСствуСт мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. OWASP Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ очистку HTML-ΠΊΠΎΠ΄Π° для языков PHP ( http://htmlpurifier.org/) , JavaScript (https://github.com/ecto/bleach) ΠΈ Python (https://pypi.org/project/bleach/ ) .

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠΈ:

  • Никогда Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ eval() ;
  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ бСзопасности ΠΏΡ€ΠΎΡ‚ΠΈΠ² XSS
    • X-XSS-Protection: 1; mode=block АктивируСт Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅;
    • X-Content-Type-Options: nosniff ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вставку ΠΊΠΎΠ΄Π° Javascript Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ элСмСнтов;
    • Content-Security-Policy: script-src Π‘Π°ΠΌΡ‹ΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ практичСски любого ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° XSS;
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π»Π°Π³ΠΈ HttpOnly ΠΈ Secure Π² Ρ„Π°ΠΉΠ»Ρ‹ cookie сСанса.

ΠŸΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.......