getfile.php – část I.

Představte si následující soubor getfile.php:

<?php
readfile($_GET["filename"]);
?>

Je to k neuvěření, ale pořád takové existují! S mírnými obměnami, doplněnými header() pro zasílání Content-Type, Content-Disposition, atd., ale v principu pořád zobrazí jakýkoliv soubor, o který požádáte.

Falešný dojem bezpečí často navozuje definování root složky:

<?php
define("ROOT", "/home/karel/web/downloads/");
readfile(ROOT . $_GET["filename"]);
?>

Dá trochu práce zjistit, kam přesně je potřeba se vytečkovat (/../), ale i tak je to díra jako vrata.

Reálný příklad ze života je nejmenovaný CMS obsahující tento soubor. CMS byl nasazen na spoustě webů – nicméně jsem zatím narazil jen na dva, které by stály za zmínku (jeden z nich je web firmy vyvíjející tento produkt); vesměs se jinak jednalo jen o jednodušší webové vizitky firem.

http://www.firma.cz/_cms/data/fdwnl.php?f=../../_configs/global.php
Zveřejněno 13.2.2011 v 01:12 v rubrice Hacking · Trvalý odkaz

Přidat komentář