login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Cookie hacken

Offline timo - 25/11/2006 17:00
Avatar van timoPHP ver gevorderde Is er een mogelijkheid dat als je een string door htmlspecialchars haalt en wel UBB [url=..] hebt dat er alsnog javascript kan worden gebruikt (om cookie te hacken dmv document.cookie)?

11 antwoorden

Gesponsorde links
Offline MindPrison - 25/11/2006 17:02 (laatste wijziging 25/11/2006 17:02)
Avatar van MindPrison PHP gevorderde dat hangt puur van je UBB parser af volgens mij. Je moet gewoon zorgen dat deze geen javascript commando's doorlaat.
Offline nemesiskoen - 25/11/2006 17:03
Avatar van nemesiskoen Gouden medaille

PHP expert
Citaat:
Is er een mogelijkheid dat als je een string door htmlspecialchars haalt en wel UBB [url=..] hebt dat er alsnog javascript kan worden gebruikt (om cookie te hacken dmv document.cookie)?

Ja

Daarom is het aangeraden niet alleen cookie hijacking te voorkomen, maar ook te voorkomen dat ALS iemand een cookie hijackt hij hier iets mee kan doen.
Offline timo - 25/11/2006 17:04
Avatar van timo PHP ver gevorderde en hoe kunnen mensen dan er alsnog doorkomen, want <script la.. document.write(d.cookie) werkt door die htmlspecialchars niet meer...
Offline Micron - 25/11/2006 17:05
Avatar van Micron HTML beginner Gewoon gebruik maken van str_replace(); en dan al die onblur etc. replacen door ervan te laten maken on blur. Zo doe ik het ook =]
Offline MindPrison - 25/11/2006 17:06 (laatste wijziging 25/11/2006 17:06)
Avatar van MindPrison PHP gevorderde met gewoon [url=javascript:document.write(d.cookie) ]blabla[/ url] kun je ook javascript uitvoeren.
Offline Micron - 25/11/2006 17:14 (laatste wijziging 25/11/2006 17:15)
Avatar van Micron HTML beginner Ja maar dat [url=... word geparsed door je UBB. Al gebruik je dan:

  1. <?php
  2.  
  3. $bericht = str_replace("javascript","java scr!pt",$bericht);
  4.  
  5. ?>


Dan is beginnen met javascript al opgelost, gebruik nog wat dingen om te parsen zoals onblur, onclick et cetra en klaar.
Offline ikkedikke - 26/11/2006 13:23
Avatar van ikkedikke PHP expert niks onclick en onblur, je moet er voor zorgen dat er quotes om je links staan.
kijk maar op regel 44 en 45 van dit script.
Offline nemesiskoen - 26/11/2006 13:31
Avatar van nemesiskoen Gouden medaille

PHP expert
en alsnog zijn er manieren om cookies te hijacken. Dus doe zoals ik zei: beveilig niet enkel je formulieren maar ook je cookies, dmv het ip.

Hier is een psuedocode voorbeeld van hoe je het kan doen:
  1. <?php
  2. function encrypt_algo($what, $key) {
  3. // ROEP HIER JE ENCRYPTIE ALGORITME AAN
  4. return $crap;
  5. }
  6. function decrypt_algo($what, $key) {
  7. // ...
  8. }
  9.  
  10. function findUser($key) {
  11. if(isset($_COOKIE)) {
  12. $ip = encrypt_algo($_SERVER['REMOTE_ADDR'], $key);
  13. $ip = serialize($ip);
  14. if(isset($_COOKIE[$ip)) {
  15. $data = unserialize($_COOKIE['ip']);
  16. $username = decryptie_algo($data[0], $key);
  17. $pass = decrypt_algo($data[1], $key);
  18. return array("username" => $username, "pass" => $pass);
  19. }
  20. }
  21. return false; // cookie not set
  22. }
  23.  
  24. function setUserCookie($username, $pass, $key, $time) {
  25. $key_for_cookie = serialize(encrypt_algo($_SERVER['REMOTE_ADDR'], $key));
  26. $data_for_cookie = serialize(array(encrypt_algo($username, $key), encrypt_algo($pass, $key)));
  27. setCookie($key_for_cookie, $data_for_cookie, $time);
  28. return true;
  29. }
  30.  
  31. Use:
  32.  
  33. setUserCookie('koen', 'kwartvankakke', 'abc', time()+3600);
  34. $my_cookie_data = findUser('abc');


Ik heb ook in een oud tijdperk daar enkele classes voor geschreven, zodat je het zo kan aanroepen:
  1. <?php
  2.  
  3. $core->loadClass("Nemesis_Cookie");
  4.  
  5. require 'Nemesis/Cookie.php';
  6.  
  7. $cookie = Nemesis_Cookie::createInstance(Nemesis_Cookie::SAFE_MODE);
  8. $cookie->add("naam", "koen");
  9. $cookie->add("pass", md5("abc"));
  10. $cookie->save();
  11.  
  12. var_dump($cookie->get());


(dit is overigens geen wrapper rond $_COOKIE maar maakt gebruik van een beveiligingsmethode gebasseerd op bovenstaande pseudocode.)
Offline timo - 26/11/2006 14:27
Avatar van timo PHP ver gevorderde @vage: kan je beter gewoon in een sessie het ip door md5 halen, thx voor hulp allemaal!
Offline ikkedikke - 26/11/2006 17:34
Avatar van ikkedikke PHP expert dan gaat de sessieID ongecodeerd in een cookie dus dat is gevaarlijker.
Offline nemesiskoen - 26/11/2006 20:18
Avatar van nemesiskoen Gouden medaille

PHP expert
Ja, timo, heel goed... ergh, waar slaat dat op?
Het gaat erom dat de cookie wordt beveiligd, en dat gaat binnen bovenstaande manier. Waarom dan nog een sessie gebruiken als het niet nodig is?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s