- Databáze XML zranitelnosti Wrappers (2) -

Poslední aktualizace v 28.06.2014 16:26:34

O zneužití protokolů http:// nebo file:// u externích entit jsme se již zmínili. Tyto protokoly ovšem nejsou jedinými prostředky, kterými externí entity mohou přistupovat k datům. V případě PHP jsou podporovány všechny následující wrappery, viz. PHP manuál.

file://
http://
ftp://
php://
zlib://
data://
glob://
phar://
ssh2://
rar://
ogg://
expect://

Pro útočníka z nich budou mít zřejmě nejzásadnější význam wrappery php:// a expect://.

Název

Popis

File Encode

Wrapper php:// kromě jiného umožňuje použití filtru convert.base64-encode, jenž je možné zneužít k načtení a zakódování souboru kódováním Base64. Díky němu může útočník do externí entity načíst také soubory obsahující nepovolené metaznaky (např. ostré závorky). Pro útočníky je to tedy nástroj, jak ze serveru mohou získat například obsah .php souborů.
<!ENTITY entita SYSTEM " php://filter/convert.base64-encode/resource=index.php">

Code Execution

Druhý ze zmíněných wrapperů expect:// zase může útočníkovi otevřít cestu, jak na napadeném systému spustit systémový příkaz. Kód z následujícího výpisu by například spustil příkaz ls sloužící k výpisu filesystému na unixových systémech, a tento obsah by vložil do dokumentu. Jistě chápete, že následky zdárného útoku by mohly být i mnohem závažnější. Naštěstí není možnost použití wrapperu expect příliš častá, i když… Právě zranitelnost na Facebooku umožňovala wrapperu expect:// využít, viz. http://sensepost.com/blog/10178.html

<!ENTITY entita SYSTEM "expect://ls">