[Vraag] Session Hijacking

Gestart doorSebastiaanh7 reacties32 weergaven

8 berichten · pagina 1 van 1

Sebastiaanh

Lid · Topicstarter

Berichten
9.953
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo,

Omdat ik bezig ga met mijn nieuwe project, wil ik graag weten hoe hackers session hijacking doen, en hoe dit te beveiligen is.

Mvg,
SebastiaanH.

P.S: SQL injection en XSS weet ik natuurlijk wel. wink
0
Berichten
8.602
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Stel voor, bij het inloggen maak jij $_SESSION[uId] aan met daarin het id van de gebruiker. Als je dan session hijacken gaat doen, verander jij het id in een ander id (bijvoorbeeld van een admin). Hoe ik heb het beveiligd:

Random code maken met daarin sha1( microtime() + uId + salt ) en die opslaan in de database + in een sessie. Daarnaast ook ip opslaan in database + uId opslaan in database. Vervolgens controleer je elke keer in de config of lid ingelogd is, en dan bijvoorbeeld deze query:

[COLOR= #0000BB]<?php[/COLOR]

[COLOR= #FF8000]//Kijken of lid ingelogd is:[/COLOR]
[URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]uId[/COLOR][COLOR= #007700]]))
{[/COLOR]

    [COLOR= #FF8000]//Controle query uitvoeren[/COLOR]
    [COLOR= #0000BB]$cQuery[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/mysql_query"]mysql_query[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT 1 FROM ingelogdeLeden WHERE randomCode = "[/COLOR] [COLOR= #007700].[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]randomCode[/COLOR][COLOR= #007700]]) .[/COLOR] [COLOR= #DD0000]" AND uId = "[/COLOR] [COLOR= #007700].[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]uId[/COLOR][COLOR= #007700]]) .[/COLOR] [COLOR= #DD0000]" AND ip = "[/COLOR] [COLOR= #007700].[/COLOR] [URL="http://www.php.net/mysql_real_escape_string"]mysql_real_escape_string[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_SERVER[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]REMOTE_ADDR[/COLOR][COLOR= #007700]]) .[/COLOR] [COLOR= #DD0000]""[/COLOR][COLOR= #007700]);[/COLOR]

    [COLOR= #FF8000]//Kijken of dit daadwerkelijk bestaat:[/COLOR]
    [URL="http://www.php.net/if"]if[/URL] [COLOR= #007700]([/COLOR][URL="http://www.php.net/mysql_num_rows"]mysql_num_rows[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$cQuery[/COLOR][COLOR= #007700]) ==[/COLOR] [COLOR= #0000BB]0[/COLOR][COLOR= #007700])
    {[/COLOR]

        [COLOR= #FF8000]//Bestaat niet, je word uitgelogd + krijgt een melding:[/COLOR]
        [URL="http://www.php.net/session_destroy"]session_destroy[/URL][COLOR= #007700]();[/COLOR]
        [URL="http://www.php.net/die"]die[/URL][COLOR= #007700]([/COLOR][COLOR= #DD0000]Ongeldige sessie[/COLOR][COLOR= #007700]);

    } 

}[/COLOR]

?>


Zo is het bijna onmogelijk om aan sessie hijacking te doen.
0
Sebastiaanh

Lid · Topicstarter

Berichten
9.953
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Oké, ik gebruik dit als random code:

$randcode = sha1(sha1(base64_encode(microtime().rand(1,999).$salt)));


Zal dat een beetje sterk zijn? yummie
0
Berichten
3.283
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Sebastiaanh schreef:
Oké, ik gebruik dit als random code:

$randcode = sha1(sha1(base64_encode(microtime().rand(1,999).$salt)));
Zal dat een beetje sterk zijn? yummie
sha1(microtime()) lijkt me meer dan voldoende aangezien het alleen om een unieke code/hash gaat...
0
Sebastiaanh

Lid · Topicstarter

Berichten
9.953
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ach, zo werkt het iig ook wel. yummieAls de bèta online is (wat nog lang gaat duren) mag je van mij kijken of je het kan hijacken pompom
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Milan schreef:
Stel voor, bij het inloggen maak jij $_SESSION[uId] aan met daarin het id van de gebruiker. Als je dan session hijacken gaat doen, verander jij het id in een ander id (bijvoorbeeld van een admin).
Nee, want je bezoeker kan geen sessies aanpassen.
Sessies worden op de server opgeslagen. Cookies worden bij de bezoeker opgeslagen, en die kunnen dus ook aangepast worden. Sessies niet, die kun je enkel via de server aanpassen.

Je kunt alleen wel de sessies van iemand anders overnemen als je de PHPSESSID-code van iemand anders hebt. Je moet dus zorgen dat je systeem de sessies weigert als ze door iemand anders worden gebruikt dan door de persoon voor wie die sessie ooit is aangemaakt.
In principe heb je daar helemaal geen ingewikkelde codes voor nodig. Als je enkel al het IP van de bezoeker in de sessie stopt zodra je hem aanmaakt en dat IP gewoon bij elke request controleert, dan ben je al veilig bezig.

Cookies is een heel ander verhaal overigens.
0
Berichten
8.649
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Is ID van gebruiker opslaan in sessie als die is ingelogd dan veilig of niet?
0
Berichten
6.144
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kan, maar dan zou ik ook nog een tabel maken met ingelogd.
En als je ingelogd, een sessie maken met RandCode, en dan als je kijkt of ie ingelogd is, dan moet je kijken of hij die sessie heeft met id er is, en of die RandCode sessie klopt met zijn userid.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren