PHP Session Hack
- July 4th, 2010
- Posted in Security
- Write comment
A php átal nyújtott session kezelés nagyon egyszerű és rengetegen használják, és biztonságosnak vélik, pedig távolról sem az alapesetben.
Nézzünk egy egyszerű példát.
session_start();
if (auth($_POST["user"],$_POST["pass"]))
{
$_SESSION["logged"] = true;
}
Ez egy egyszerű beléptető szkript, rengetegen használják ezt a módszert azonban nem teljesen biztonságos, hiszen létezik XSS amivel könnyedén megszerezhetjük a session váltózót.Még a legnagyobbakkal is megesik hogy XSS található a weboldalon, lást Twitter, Facebook stb, és továbbá fontos azt is megjegyezni, hogy az XSS nem csak a Cookieről szól!.
Ha található egy XSS rés az oldalon, ami nagyon valószínű, akkor a támadó el tudja lopni a session változót (általában PHPSESSID re halgat ) és azt felhasználva be tud lépni.
Példa : http://duppy.info/stuff/php-session/cook1.php
Forráskód : http://duppy.info/stuff/php-session/cook1.php.txt
Mint a fenti példa mutatja, bárki aki megszerzi a session azonosítót vissza élhet vele nagyon könnyedén.
Megoldás:
Általános megoldás nincsen, mindenki kialakíthat egyet ami a célnak megfelel.
1. HttpOnly kevesen használják viszont nagyon hatásos így a cookie-t nem lehet elérni a hagyományos módon (document.cookie) de ez nem oldja meg teljesen az XSS problémát mert XSS nem csak a cookieről szól, de a mostani esetben egy plusz réteget biztosít és mindössze egyetlen sor az egész:
ini_set(“session.cookie_httponly”, 1)
2. Az ip cím ellenőrzés nem a legjobb megoldás de használhatjuk ezt is, azonban a User Agent jobb megoldásnak tűnik, de lehet a kettőt kombinálni is.
Először töröljük a régi PHPSESSID-t itt : http://duppy.info/stuff/php-session/del.php
És itt található egy példa : http://duppy.info/stuff/php-session/cook2.php
Forráskód : http://duppy.info/stuff/php-session/cook2.php.txt
Mivel nem ugyanaz az IP és (esetleg) a UserAgent ezért nem működik a Session lopás, lehet csak UserAgent re alapozni így egyetlen dobása van a támadónak, ha nem találja el 1 próbálkozásból a UserAgentet akkor a Sessiont töröljük és a valódi usernek újra be kell lépnie.
No comments yet.