Autor Zpráva
nemeja
Profil
Pěkný večer,
při brouzdání jsem narazil na eshop jedné nejmenované české modelky, akorát vydala nějaké slevy a jelikož byl server přetížen, vypisoval chybu s přístupem k databázi, včetně údajů (závadu jsem nahlásil správci stránky):
Soubor: /var/www/virtuals/v3cms/cz.****/php/lib/V3DbLayout.php(83) : eval()'d code, Třída: V3DbLayerMYSQL, Funkce: __construct, Řádek: 1
array(6) { ["TYPE"]=> string(5) "MYSQL" ["HOST"]=> string(9) "localhost" ["USER"]=> string(5) "****" ["PASSWORD"]=> string(12) "****" ["DEFAULTDB"]=> string(30) "virtuals_v3cms_cz_***" ["ENCODING"]=> string(4) "utf8" }
Soubor: /var/www/virtuals/v3cms/cz.****/php/lib/V3DbLayout.php, Funkce: eval, Řádek: 83
Soubor: /var/www/virtuals/v3cms/cz.****/system.inc.php, Třída: V3DbLayout, Funkce: __construct, Řádek: 12
array(6) { ["TYPE"]=> string(5) "MYSQL" ["HOST"]=> string(9) "localhost" ["USER"]=> string(5) "****" ["PASSWORD"]=> string(12) "****" ["DEFAULTDB"]=> string(30) "virtuals_v3cms_cz_****" ["ENCODING"]=> string(4) "utf8" }
Soubor: /var/www/virtuals/v3cms/cz.****/index.php, Funkce: require, Řádek: 52
string(54) "/var/www/virtuals/v3cms/cz.****/system.inc.php"
Server podporuje přístup k databázi pouze z lokálu. Zajímalo by mě:
• Jakým způsobem kontroluje server, zda se jedná o localhost aplikaci?
• Pokud podle IP adresy, jak by se dala podvrhnout?
• Jak se proti tomu účinně bránit?
Všimněte si použití funkce eval. Stačí mi odkaz na potřebnou literaturu/článek. Moc děkuji předem
DJ Miky
Profil
• Jakým způsobem kontroluje server, zda se jedná o localhost aplikaci?

Správný způsob je, že MySQL server naslouchá pouze na lokálním socketu nebo na tzv. loopback rozhraní (to je to označení localhost, IP 127.0.0.1) a vůbec nenaslouchá na vnějším síťovém rozhraní, tedy požadavky přicházející po síti (z jiných strojů, z internetu) se k němu vůbec nedostanou. To je zaručeno mechanismem síťových rozhraní v operačním systému – jedná se o dvě oddělená rozhraní. Existují i další, méně bezpečná řešení (a bohužel se i používají).


• Jak se proti tomu účinně bránit?

Pokud je na serveru použít jiný způsob ochrany, tak určitě implementovat ochranu popsanou výše – zakázat naslouchání na vnějším rozhraní. Jenom pozor – nezaručí to 100% bezpečnost, útočník může získat přístup např. zneužitím zranitelnosti v jiné službě.

A co se týče samotného problému úniku hesla v chybové hlášce, jedná se o nastavení PHP. Vždy by na produkčním serveru mělo být vypnuto zobrazování chyb (direktiva display_errors v konfiguračním souboru php.ini). V neposlední řadě může být problém v použitém CMS – soudě podle neošetřování chyb a eval je možné, že i samotný CMS bude náchylný na zranitelnosti, jako je SQL injection, local/remote file inclusion a podobně.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: