Dne 1. října 2021 se objevila v médiích informace o vysoce kritické zranitelnosti ve webovém serveru Apache ve verzích 2.4.49 a 2.5.50 umožňující útočníkovi díky nedostatečné validaci URI adresy přecházet mezi adresáři a dokonce si i zobrazovat obsah souborů. Za určitých okolností může tato zranitelnost vést dokonce k vykonání vzdáleného kódu.
Zranitelnost CVE-2021-42013 bypassuje opravu zranitelnosti CVE-2021-41773. Samontná chyba je velice jednoduchá a velmi snadno replikovatelná. Vychází z předpokladu, že webový server Apache nesprávně obsluhuje URI část HTTP požadavku. Díky tomu je možné pomocí kombinace dvou teček a lomítka přecházet mezi adresáři v adresářové struktuře směrem nahoru a následně i směrem dolů. Server Apache totiž posloupnost znaků
..
v URI adrese zkouší normalizovat tak, že je odstraňuje. A to nejen ve formě dvou teček, ale i jejich případnou zakódovanou podobu:
..
.%2e
.%2E
V těchto případech server Apache s normalizací uspěje. Avšak vzhledem k nedokonalé kontrole mu takzvaně 'pod raderem' projdou například následující posloupnosti znaků:
%2e%2e
%2E%2E
%2e%2E
%2E%2e
%2E%2E
Ve všech těchto případech dojde u náchylného serveru ke zneužití chyby Path Traversal.
Určitou ochranou je nastavení direktivy adresáře webu na hodnotu "require all denied", která zamezuje přechod v adresářové struktuře mimo adresáře webového serveru. Avšak u některých serverů mají administrátoři nastavenou direktivu "require all granted". V případě, že jsou na serveru povoleny CGI skripty (modul mod-cgi), mění se tato zranitelnost z Path Traversal na Remote Code Execution.
Pro otestování zranitelnosti typu Path Traversal stačí v libovolném webovém klientovi spustit následující HTTP/HTTPS požadavek
curl 'https://<host>/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd'
kde <host> je doména nebo IP adresa (případně port) testovaného serveru. Pokud se výstupem obsah souboru /etc/passwd, pak je daný server náchylný.
Pro otestování zranitelnosti typu Remote Code Execution stačí v libovolném klientovi spustit následující HTTP/HTTPS požadavek:
curl 'https://<host>/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh' --data 'echo Content-Type: text/plain; echo; id'
Aplikace cURL se snaží přistupovat k souboru /bin/bash a přes Content-Type mu předává systémový příkaz echo; id. V případě, že je server Apache náchylný, zobrazí pod jakými právy běží.
Produkt Adamantine zvyšuje ochranu před únikem citlivých údajů Vašich zákazníků.
Kontaktujte nás