Moszkva küldte be a következő leírást, egy ingyenes magyar tárhelyszolgáltatót érintő problémáról. Mivel egyelőre nincs tudomásom róla, hogy az illetékesek értesítve lettek volna, a jómodor úgy diktálja, hogy kiradírozzam a szolgáltató megnevezését, mindazonáltal a keresési tér nem túl nagy...
****nél vettem észre a következő "sebezhetőséget". (más ingyenes szolgáltatóknál is fennállhat)
A SESSION kezelésnél egy könyvtárba mentik az összes aldomainhez(felhasználóhoz) tartozó munkamenet fájlokat. Ez a könyvtár a szerveren a /mnt/session.
pl.:
pistike.xy.hu domaint kiszolgáló tárhelyen egy egyszerű php támogatta site van, amely munkamenet változókban tárolja el a belépés adatait.
$_SESSION["login"] true/false
$_SESSION["uId"] beléptetett felhasználó id-ja
Pistike rosszindulatú haverja, Józsi tisztában van a változó nevekkel, mondjuk úgy megsejtette őket.
Így beregisztrál az xy.hu-n, megkapja a jozsika.xy.hu domain-t.
Feltesz a tárhelyére egy php scriptet kb. a következő tartalommal:
<?
session_start();
$_SESSION["login"] = true;
$_SESSION["uId"] = 1; /* Mert úgy okoskodik, hogy egyes id-jú felhasználó az van.... */
?>
Józsika ezután ellátogat az így elkészült oldalára. A böngészője megkapja a sütit, benne a PHPSESSID nevű munkamenet azonosítóval.
Ezután Józsika átírja a süti domain paraméterét pistike.xy.hu-ra. Elmenti a megváltoztatott sütit, meglátogatja pistike oldalát. A böngészője a szervernek átnyújtja az immár a pisitike.xy.hu-hoz tartozó munkamenet azonosítót, és létrejön$_SESSION["login"] = true;
$_SESSION["uId"] = 1;
Józsika belépett pistike.xy.hu-n található site-ra az 1 id-jú user nevében.
Ahogy azt Moszkva is említi, nem biztos, hogy csak egy szolgáltatót érint a probléma sőt, a pénzes rendszerek is ugyanúgy érintettek lehetnek, ezért jó lenne, ha mindenki körbenézne a saját háza táján!
(Frissítés: annyira tudtam, hogy benne fog maradni valami komprommitáló infó...)
Moszkva 2009.01.29. 09:58:04
dnet 2009.01.29. 13:19:43
Itt egy pl 2005-ből (igen, négy éves):
stock.ter.dk/session.php
Egy másik (dátum nélkül):
phpsec.org/projects/guide/4.html
dnet 2009.01.29. 13:23:34
Moszkva 2009.01.29. 13:54:18
Csak azt írtam, hogy itt van egy szolgáltató akit érint., és még több is lehet.
A print_r($_SESSION) megoldást nem értem, mivel azzal a saját magad álltal létrehozott munkamenet változókat iratod ki, nem pedig az ő által létrehozzotakat, amiknek szeretnél értéket adni. Így ez nem segít a "megsejtésben".
Moszkva 2009.01.29. 14:17:03
Akkor tényleg működhet, ha előtte be tudsz a webes alkalmazására jelentkezni, és így ki tudod íratni milyen változók jöttek létre. De ehhez kell az is, hogy free legyen a regisztráció, ill. ha admin hozzáférést akarsz, akkor nem biztos, hogy pl.: $_SESSION['admin'] kap akármilyen értéket, és így a változó létre is jön.