26. juni 2007 - 10:19Der er
35 kommentarer og 1 løsning
Hacking, hvad er sikkert?
Hej alle
Jeg har bare et lille spg. om et mysql udtræk.
Hvis man nu har en almindelig søgeboks input og vil gøre selve udtrækket sikker. Hvilken måde er så bedst at bruge?
Vil dette være sikkert?:
SELECT tabel.tabel_id, tabel.tabel_osv, tabel.tabel_andet FROM tabel WHERE tabel.tabel_osv LIKE '%$seek%' OR tabel.tabel_andet LIKE '%$seek%' ORDER BY tabel.tabel_osv
Hvad kan man ellers gøre i alle de andre filer som bare hiver ting ud af databasen ud over at krypterer password og brugernavn til de forskellige ting??
XSS - Cross Site Scripting - På samme måde så man ikke kan smide HTML/JavaScript ud - Du kan bruge strip_tags() eller htmlentities() for at beskytte mod sådan noget... Alt brugergenereret input skal du passe på med!
Det vil jeg så læse lidt om så jeg kan få sikret mine hjemmesider. Jeg har nemlig lige været ud for at at alle produkter i fra databasen er slettet uden jeg ved hvordan det har kunne lade sig gøre.
Ja det kunne jeg. Så kan jeg måske finde frem til hvordan vedkommende er enten kommet ind i admin systemet eller hacket sig ind i databasen på en eller anden måde..
Hmm.. slet_produkt.php er sikret med sessions og brugernavn ligesom alle andre sider i administrations systemet. Men jeg kan se i loggen af personen eller crawleren har været inde og trykke på alle knapper og links i en periode af 6 timer..
Hmmm! Jeg opdagede lige user-agent'en - Der står heritrix/1.7.1 - Det er en crawler: http://crawler.archive.org/ Er du *SIKKER* på at siden er ordentligt sikret med sessions? For hvis det er en crawler, så følger den bare links jo... Nu jeg undersøger, ser det faktisk ud som om det er netarkivet der har crawlet dine sider: http://netarkivet.dk/index-da.php - Det er også samme IP-blok! Websitet har 130.225.27.144... Jeg tror du skal gå din sikkerhed igennem - For jeg tror bare at du er blevet crawlet!
19. Hvilke IP-numre kommer Netarkivets robotter fra?
Netarkivets robotter kommer pt. fra følgende IP-numre: 130.226.228.7 130.226.228.8 130.226.228.72 130.226.228.73 130.225.26.132 130.225.26.133 130.225.26.135 130.225.26.136 130.225.27.140
Det anede mig også lidt efter jeg læste lidt på deres site..
Men for at kan få adgang til administrations delen skal man indtaste brygernavn og password som ligger i databasen. Passwordet er krypteret i databasen. Dog så er der en "husk mig" funktion som tjekker på om der ligger en cookie med det rigtige brugernavn og krypteret pass i en anden cookie.
Der bliver tjekket på denne på på alle administraitions siderne, så den må have gættet sig til koden eller noget..
Men den har haft hidsig aktivitet på sitet. Jeg kan se at den fyldt min log op med lidt over 12.000 linier :-)
Der må være et hul i den sikkerhed på en eller anden måde - Det gætter sig ikke bare til ting... Kan man på dit site oprette en bruger? Kan det ske at den bruger de har oprettet kan komme ind i administrationsdelen med en "husk mig"-cookie?
Anyway, det er nu egentlig meget sjovt at sådan prøve at opspore ting :) Bare lidt kedeligt at du har mistet dine data :(
De kan sende mig en DVD med alt materialet som de har indsamlet som et plaster :)
Jeg har tilgængen lige set mine filer igennem og har fundet fejlen..
Siden er opbygget sådan:
1. hent id fra GET 2. slet produkt fra GET 3. include "tjek login" 4. include alt html osv.
Så fejlen ligger i at de har fået adgang til siden med en GET med et id på uden at være logget ind. Dog så kan man jo kun undrer sig over hvordan den finder ud at der skal stå et id i GET'en for linket til slet siden ligger i en anden side som er sikret på den rigtige måde
1. include "tjek login" 2. hent id fra GET 3. slet produkt fra GET 4. include alt html osv.
:)
Der må dog have været en produktoversigtsside, hvor der er et link til slet_produkt.php med ID'et i URL'en som de har kunnet tilgå uden at være logget ind, eller være logget ind med en ikke-administrationsbruger?
Jeg fisker bl.a. lidt efter hvordan du redirecter brugeren, hvis han tilgår siden ud at være logget ind. Nogle sætter bare en header på, uden at følge op med en exit()
ja. header("location...") afslutter ikke scriptet, det fortsætter. Kun hvis man kigger på siden gennem en almindelig browser, ser man ikke resten af siden.
Et crawler program vil kunne se sensitiv information du vil udskrive senere i scriptet
if(tjek login in){ header("location: ikke logget ind.php"); }
mysql_query("SELECT * FROM tabel_brugere WHERE user = '".$_POST['user']."' AND pass = '".$pass_md5."'") or die(mysql_error());
bør også være:
mysql_query("SELECT * FROM tabel_brugere WHERE user = '".mysql_real_escape_string($_POST['user'])."' AND pass = '".$pass_md5."'") or die(mysql_error());
Kan man på dit site oprette sig som bruger? Hvis ja: er det muligt når man er logget ind, at tilgå administrationssitet og se en oversigt over produkter, hvor der er et link til slet_produkt.php?
For at kunne oprette/slette produkter skal du have en bruger til administations systemet.
Men det er først muligt at lave flere brugere når man har logget sig ind med i admi systemer. Men det er ikke noget som er offentligt for brugerene på sitet. Det er kun mig der kender til dette.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.