Forum und email

CGI futtatható állományként telepített PHP

Table of Contents

Lehetséges támadások

A PHP CGI futtatható állományként való használata egy telepítési lehetőség azok számára, akik valami oknál fogva nem szeretnék a PHP-t modulként a szerverbe integrálni (pl. Apache), vagy a PHP-t más CGI wrapper-ekkel szeretnék használni biztonságos chroot és setuid környezet kialakítása érdekében. Ez a forma magával vonja azt, hogy a PHP a szerver cgi-bin könyvtárába legyen telepítve. A CERT advisory » CA-96.11 azt tanácsolja, hogy ne tegyél feldolgozó (interpreter) programot a cgi-bin könyvtárba. Bár a PHP használható mint egy egyedülálló feldolgozó program, a PHP-t úgy tervezték, hogy az ilyen telepítésekből adódó támadásokat kivédje:

  • Rendszerfájlok elérése: https://domain.nev/cgi-bin/php?/etc/passwd Az URL lekérési információja (query information), ami a kérdőjel (?) után található, parancssori paraméterként kerül átadásra a feldolgozónak. Általában a feldolgozók megnyitják, és lefuttatják az első paraméterként adott fájlt. Ha a PHP CGI futtatható állományként hívódik meg, nem veszi figyelembe a parancssori paramétereket.
  • Bármilyen web dokumentum elérése a szerveren: https://domain.nev/cgi-bin/php/titkos/doc.html Az elérési út információ (path information) az URL része, a futtatható fájl neve után lévő /titkos/doc.html a CGI program által megnyitásra és futtatásra kerülő fájl elérésének meghatározására használatos. Tipikusan néhány webkiszolgáló beállítási lehetőség (Apache-ban: Action) használatos a kérések átirányítására a dokumentumhoz, mint a https://domain.nev/titkos/szkript.php a PHP értelmező számára. Ezzel a beállítással a szerver először ellenőrzi az elérési engedélyeket a /titkos könyvtárra, és ezután állítja elő az átirányító kérést a https://domain.nev/cgi-bin/php/titkos/szkript.php oldalra, amit így már a PHP feldolgoz. Azonban ha eredetileg is ebben a formában volt megadva a kérés, nem történik elérési ellenőrzés a /titkos/szkript.php fájlra, csak a /cgi-bin/php fájlra. Ilyen módon bárki, aki elérheti a /cgi-bin/php címet, egyben tetszőleges védett dokumentumot is elérhet. A PHP esetében az --enable-force-cgi-redirect fordítási paraméter, a doc_root és user_dir konfigurációs lehetőségek használhatóak ennek kivédésére, ha a szerver dokumentumainak könyvtárfájában van olyan könyvtár, ami elérési korlátozásokkal bír. Nézd meg az alábbi lehetőségeket a különböző kombinációkhoz!