login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Debug] groote lek!

Offline thyssimonis - 03/08/2005 11:40 (laatste wijziging 03/08/2005 20:47)
Avatar van thyssimonisPHP interesse Beste, sitemaster leden.

Een hacker is acteif geweest op me site en kon inloggen:S op iemand anders acount. Ik kon de login bug niet vinde.
Daarom zoek ik iemand die me wil helpen.
Zoja dan pm ik jouw de login.php etc. wat je nodig hebt.

37 antwoorden

Gesponsorde links
Offline Ontani - 03/08/2005 11:50 (laatste wijziging 03/08/2005 11:51)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
lek kan overal in zitten, als er ergens een exploit mogelijk is, kan het op een andere pagina als de login.php gebeurd zijn.
controleer overal of je $_GET en $_POST goed hebt beveiligd
Offline thyssimonis - 03/08/2005 11:54
Avatar van thyssimonis PHP interesse if ($_POST['submit']) {
}

Dat is toch goed?
Offline Ontani - 03/08/2005 11:56
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
if (isset($_POST['submit'])) {
}

ik had het eerder over: $_POST['username'], $_POST['password'].
werk je met cookies? zoja, let op wat je in de cookies opslaat
Offline freddyboeke - 03/08/2005 11:58 (laatste wijziging 03/08/2005 12:00)
Avatar van freddyboeke HTML beginner controleer je wat de gebruiker invoert?

Want als je dat niet doet, kan de gebruiker php gebruiken in die form. En na wat puzzelen en logisch denken, lukt het je wel om:
-De actieve functie af te sluiten
- een nieuwe functie te beginnen
- waarmee je je bv inlogd

meer info over deze zaken vind je in het Hackers Guide van Sijmen Ruwhof

Download de PDF versie, print ze eens uit, en lees het eens rustig door, is een erg leerzaam artikel (of moet ik zeggen miniboek) ...
Offline thyssimonis - 03/08/2005 12:05 (laatste wijziging 03/08/2005 12:13)
Avatar van thyssimonis PHP interesse Thanx:) boek wist ik dat bestond ga ik dan toch maar keer lezen.
Ja ik gebruik cookies

  1. <?
  2. $list_query = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_POST['gebruikersnaam']."' AND wachtwoord='".md5($_POST['wachtwoord'])."'")or die(mysql_error());
  3. $list = mysql_fetch_assoc($list_query);
  4. setcookie("username", "".$list['gebruikersnaam']."", time() +604800, "/");
  5. setcookie("userid", "".$list['id']."", time() +604800, "/");
  6. setcookie("userhash", "".$list['wachtwoord']."", time() +604800, "/");
  7. ?>


Offline Ontani - 03/08/2005 12:07
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
misschien via een exploit, de cookie gefetched, op eigen pc opgeslagen en dan ingelogged
Offline thyssimonis - 03/08/2005 12:11 (laatste wijziging 03/08/2005 12:49)
Avatar van thyssimonis PHP interesse Wat, hoe doe je dan dan?
?page=<script>alert(document.cookie);</script>
Dit doet het niet!
Offline Dennis - 03/08/2005 12:46
Avatar van Dennis Gouden medaille

Grafische expert
Dan is het zeer makkelijk om jou account te misbruiken.
Offline Ontani - 03/08/2005 12:56
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
kijk eens naar je zoek pagina, en typ eens <script>alert(document.cookie);</script> in je zoek veld
^^
Offline thyssimonis - 03/08/2005 13:04
Avatar van thyssimonis PHP interesse Sorry, hij doet het niet!
zijn er nog meer manieren met
?page=<script>alert(document.cookie);</script>
Offline Ontani - 03/08/2005 13:09
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
bekijk die hackersguide die freddy liet zien.
en laat je include script op de main page eens zien (waarmee je alle contents include) misschien zit daar wel een serieuze blunder in
Offline DaOxx - 03/08/2005 13:19 (laatste wijziging 03/08/2005 13:27)
Avatar van DaOxx PHP beginner Sql-injection??

mysql_escape_string(); <--

Als je hier geen rekening mee houd kan men jou query aanpassen. Voorbeeld ik voer in:
Gebruikersnaam: Admin
Wachtwoord: OR != '' // weet niet of dit zo werkt, maar ergens in de buurt.

Op deze manier kun je dus ook gewoon hele tabellen weg gooien.
Offline thyssimonis - 03/08/2005 14:15
Avatar van thyssimonis PHP interesse
  1. <?php
  2. if (!$_GET['page']) { include 'home.php'; }
  3. elseif (file_exists($page.".php")) { include($page.".php"); }
  4. elseif ($_GET['page']) {
  5. $list_query = mysql_query("SELECT * FROM pagina WHERE naam='".$_GET["page"]."' ");
  6. $list = mysql_fetch_assoc($list_query);
  7. if (empty($list['id'])) { include 'include/error.php'; } else { echo ''.page_spilts(bb_bericht($list['bericht']), '?page='.$_GET['page'].'').''; }
  8. }
  9. ?>


Hier include ik alles mee.
Offline Ontani - 03/08/2005 14:18
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
$page = ?
Offline thyssimonis - 03/08/2005 14:30
Avatar van thyssimonis PHP interesse ?page=forum/index
?page=lala

Bijvoorbeeld

Hij kan ook pagina uit datebase hallen.
Offline Shifty - 03/08/2005 15:26
Avatar van Shifty Onbekend De fout is dat je de username en userid opslaat in de cookie. Dit kan je veranderen waardoor iemand onder een andere account kan inloggen.
Offline Ontani - 03/08/2005 15:54
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
elseif (file_exists($page.".php")) { include($page.".php"); } wat is $page dan $page != ?page
Offline ikkedikke - 03/08/2005 16:11
Avatar van ikkedikke PHP expert hoe controleer je op de volgende paginas of de cookies kloppen?
Offline thyssimonis - 03/08/2005 20:05
Avatar van thyssimonis PHP interesse @Ontani $page = ?page=
$page moet dus eigenlijk $_GET['page'] worden
@ikkedikke hoe bedoel je?
@Shifty als ik geen userid en gebruikersnaam meer mag opslaan dan heb ik nog hash. dan kan ik nog wel controleren of cookie bestaat!
Maar nu zien van wie het is omdat userid weg is!
Offline ikkedikke - 03/08/2005 20:12 (laatste wijziging 03/08/2005 20:12)
Avatar van ikkedikke PHP expert hoe controleer je of, wat er in de cookies staat, klopt?(de code)
Offline thyssimonis - 03/08/2005 20:18
Avatar van thyssimonis PHP interesse
  1. if ($_COOKIE['username'] > "" AND $_COOKIE['userid'] > "" AND $_COOKIE['userhash'] > "") {


Offline thyssimonis - 03/08/2005 20:37 (laatste wijziging 03/08/2005 20:39)
Avatar van thyssimonis PHP interesse Hacker heeft die gegeven:

Citaat:
1. Meld je aan.
2. Verwijder je cookies.
3. Log nu in op de site.
4. Je hebt nu als het goed is een cookie van de site.
5. Zoek het profiel van de Beheerder, en kijk wat zijn gebruikersnaam & id is.
6. Sluit alle internet browsers nu af en open de cookie.
7. Nu zie je ergens staan: Gebruikersnaam en userid..
8. zo nee.. blijf zoeken 
9. Zo ja, wijzig die in die van de beheerder.
10. Ga nu naar de site en je beschikt over beheer rechten 


Wie kan me helpen?
Offline Martijn1989 - 03/08/2005 20:41
Avatar van Martijn1989 PHP ver gevorderde Dan moet je het wachtwoord veranderen in md5() dat is een optie,.. kijk even naar : http://nl2.php.net/md5

Ik zou hier gewoon dit van maken :

  1. if ($_COOKIE['username'] = "" AND $_COOKIE['userid'] = "" AND $_COOKIE['userhash'] = "") {
Offline thyssimonis - 03/08/2005 20:43
Avatar van thyssimonis PHP interesse Alle wachtwoorden zijn all md5()

$_COOKIE['userhash'] is ook al md5 in db ook
Offline nemesiskoen - 03/08/2005 20:43
Avatar van nemesiskoen Gouden medaille

PHP expert
wat een... "primitieve hacker"... iedereen die een beetje php kan weet dat dit onzin is... met een beetje verstand slaag je een gehashed password op in een cookie en controleer je met een simpele functie of het userid en pass overeen komen.
Zelf voeg ik deze samen via een andere functie en slaag ik dit gegevevn ook op in men tabel.
Zodat ik maar 1 cookie hoef te bakken.

Die functie daarvan ziet er ongeveer zo uit:
  1. <?php
  2. function voegSamen($arg1,$arg2){
  3. $arg1=md5($arg1);
  4. $arg2=md5($arg2);
  5. $arg1sh=SHA1($arg1);
  6. $arg2sh=SHA1($arg2);
  7. $arg1=md5($arg1sh).$arg1;
  8. $arg2=md5($arg2sh).$arg2;
  9. $argT=$arg1&$arg2;
  10. $argT=md5($argT);
  11. return $argT;
  12. }
  13. ?>


have fun om da te kraken...

Offline Shifty - 03/08/2005 22:13
Avatar van Shifty Onbekend @thyssimonis: bekijk het profiel van fireblade daar eens.

Zie je veranderingen? Dat heb ik gedaan om te laten zien dat het toch aan de cookies ligt. Je kunt gemakkelijk onder een ander account inloggen.
Offline thyssimonis - 03/08/2005 22:30 (laatste wijziging 03/08/2005 22:33)
Avatar van thyssimonis PHP interesse
  1. %22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E


Doet het niet meer.
Probeelem ben ik aan oplosse en ga zo update!!!
Hij is strax antihack

  1. if(mysql_num_rows($sql) == 0) {
  2. $referer = $HTTP_REFERER;
  3. mysql_query("INSERT INTO leden_online SET $sql2, datum='$time', datum_start='$time', pagina='$page_url', referer='$referer'")or die(mysql_error());
  4. } elseif(mysql_num_rows($sql) != 0) {
  5. mysql_query("UPDATE leden_online SET datum='$time', pagina='$page_url' WHERE $sql3")or die(mysql_error());
  6. }
  7.  
  8. $url = substr($_SERVER['REQUEST_URI'], 1);
  9.  
  10. if(eregi("%", $url) OR eregi(";", $url) OR eregi(")", $url))
  11. {
  12. header("Location: ?page=include/error");
  13. }
  14.  
  15. if(IsSet($_COOKIE['username']) AND IsSet($_COOKIE['userid']) AND IsSet($_COOKIE['userhash'])) {
  16. $check_lid_query = mysql_query("SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['username']."' AND id='".$_COOKIE['userid']."' AND wachtwoord='".$_COOKIE['userhash']."'")or die(mysql_error());
  17. if(mysql_num_rows($check_lid_query)) {
  18. $ingelogd = 1;
  19. $user = mysql_fetch_assoc($check_lid_query);
  20. }
  21. else { $ingelogd = 0; }
  22. }
  23. else { $ingelogd = 0; }
  24.  
  25. function check_login($ingelogd) {
  26. if($ingelogd == 0) {
  27. header('Location: ?page=include/slot');
  28. }
  29. }


Is toch veilig, staat in me config

ik controleer met check_login($ingelogd);
en cookie roep ik nu $user['id'] op!

Allemaal bedankt Groote lek is weg:P
Closen maar!
Offline Geerios - 04/08/2005 13:35
Avatar van Geerios Onbekend Ik heb hem net uit getest maar hij is nog steeds nie veilig hoor!
Offline haytjes - 04/08/2005 13:40 (laatste wijziging 04/08/2005 13:41)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
  1. "SELECT * FROM leden WHERE gebruikersnaam='".$_COOKIE['username']."' AND id='".$_COOKIE['userid']."' AND wachtwoord='".$_COOKIE['userhash']."'"


kijkt hier een keer naar:

ik kan mijn cookie veranderen naar wat ik wil:
$_COOKIE['username'] = root'; --

Query:SELECT * FROM leden WHERE gebruikersnaam='root'; --' AND id='*' AND wachtwoord='*'

Die -- is gelijk aan // in php dus alles wat erachter komt valt weg:

Query:SELECT * FROM leden WHERE gebruikersnaam='root'; --
dus nu ben ik root !!!!!!!!!!!!!!!!
Offline Ibrahim - 04/08/2005 13:44
Avatar van Ibrahim PHP expert waarom cookie sessie is veiliger (denk ik ) want die staan opgeslagen op de pc van de host.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.479s