Avatar billede zuledk Nybegynder
26. juni 2007 - 10:19 Der 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

pft

Tommy
Avatar billede coderdk Praktikant
26. juni 2007 - 10:22 #1
if( get_magic_quotes_gpc() )
{
  $seek = stripslashes( $seek );
}
$seek = mysql_real_escape_string( $seek );

Inden SQL'en burde gøre det... :)
Avatar billede zuledk Nybegynder
26. juni 2007 - 10:27 #2
Så dette ville være den absolut sikreste måde?

<input type='text' name='seek'>

$seek = $_POST["seek"];

if( get_magic_quotes_gpc() )
{
  $seek = stripslashes( $seek );
}

$seek = mysql_real_escape_string( $seek );


Og her kommer så sql udtrækket..
Avatar billede coderdk Praktikant
26. juni 2007 - 10:53 #3
den skulle være skudsikker, ja :)
Avatar billede zuledk Nybegynder
26. juni 2007 - 10:54 #4
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??

Er der ikke generelle ting man skal passe på med?
Avatar billede coderdk Praktikant
26. juni 2007 - 11:10 #5
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!
Avatar billede zuledk Nybegynder
26. juni 2007 - 12:24 #6
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.

ligger du et svar
Avatar billede coderdk Praktikant
26. juni 2007 - 12:32 #7
Uha, ja det er sgu ikke rart :(
Avatar billede coderdk Praktikant
26. juni 2007 - 12:32 #8
Du skulle evt. studere webserverens logfiler for at se om du kan spotte noget?
Avatar billede zuledk Nybegynder
26. juni 2007 - 12:40 #9
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..
Avatar billede zuledk Nybegynder
26. juni 2007 - 15:09 #10
Hej igen

Jeg har fundet ip'en på personen der har fået adgang til mit admin system:
130.225.26.133

Dette stod bla. i loggen:

domæne.dk 130.225.26.133 - - [25/Jun/2007:13:47:26 +0200] "GET /admin/slet_produkt.php?id=257 HTTP/1.0" 302 4669 "http://www.domæne.dk/admin/vis_produkter.php" "Mozilla/5.0 (compatible; heritrix/1.7.1-200601241521 +http://netarkivet.dk/website/info.html)"
domæne.dk 130.225.26.133 - - [25/Jun/2007:13:47:30 +0200] "GET /admin/rediger_produkt.php?id=250 HTTP/1.0" 302 12903 "http://www.domæne.dk/admin/vis_produkter.php" "Mozilla/5.0 (compatible; heritrix/1.7.1-200601241521 +http://netarkivet.dk/website/info.html)"
domæne.dk 130.225.26.133 - - [25/Jun/2007:13:47:33 +0200] "GET /admin/slet_produkt.php?id=403 HTTP/1.0" 302 5276 "http://www.domæne.dk/admin/vis_produkter.php" "Mozilla/5.0 (compatible; heritrix/1.7.1-200601241521 +http://netarkivet.dk/website/info.html)"


Kan man ikke finde frem til personen??
Avatar billede coderdk Praktikant
26. juni 2007 - 15:23 #11
Desværre... Ripe siger at den tilhører Uni-C - På Uni-C's register står

0099-003 Statsbiblioteket
    130.225.24.0/22

Altså fra 130.225.24.1 til 130.225.27.254 - Så det er en der har gjort det fra biblioteket :(
Avatar billede coderdk Praktikant
26. juni 2007 - 15:25 #12
Er slet_produkt.php sikret med sessions eller lign? Hvis den er, så har han sikkert haft held til at gætte et username/password ...
Avatar billede zuledk Nybegynder
26. juni 2007 - 15:34 #13
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..
Avatar billede zuledk Nybegynder
26. juni 2007 - 15:37 #14
Det kan umuligt have været en person da loggen viser at trafikken på den ip har været inde på flere sider iløbet af sekunder i 6 timer i træk..
Avatar billede coderdk Praktikant
26. juni 2007 - 15:48 #15
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!
Avatar billede coderdk Praktikant
26. juni 2007 - 15:49 #16
Avatar billede coderdk Praktikant
26. juni 2007 - 15:50 #17
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
Avatar billede zuledk Nybegynder
26. juni 2007 - 15:58 #18
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 :-)
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:00 #19
Jeg har forresten også lige lagt en mail til dem.. om problemet
Avatar billede coderdk Praktikant
26. juni 2007 - 16:02 #20
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 :(
Avatar billede ranglen Nybegynder
26. juni 2007 - 16:04 #21
Hvordan ser slet_produkt.php ud mht kontrol af brugeradgang?
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:05 #22
hmm.. ja der er en side hvor man kan oprette en bruger. Men det kræver jo at man er logget ind for at kunne oprette en..

ja det er det da men ikke godt at jeg skal ind og lave alle produkter igen da jeg ikke har tekst og billeder sådan lige liggende.

men utroligt at den har klikker på knapper og submittet alle steder
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:08 #23
de har lige svarer på mail og har muligvis fundet fejlen .. 2 sek
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:19 #24
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
Avatar billede ranglen Nybegynder
26. juni 2007 - 16:21 #25
hvordan ser "tjek login" ud?
Avatar billede coderdk Praktikant
26. juni 2007 - 16:26 #26
Ja, det skal gøres i en anden rækkefølge:

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?
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:29 #27
således (trimmet lidt ned):

$pass_md5 = md5($_POST['kodeord']);

mysql_query("SELECT * FROM tabel_brugere WHERE user = '".$_POST['user']."' AND pass = '".$pass_md5."'") or die(mysql_error());

Hvis den finder en bruger så:

$_SESSION['tjeklogin'] = "bruger_ok";


og så tjekker de andre sider om session er ok
Avatar billede ranglen Nybegynder
26. juni 2007 - 16:31 #28
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()
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:33 #29
Jeg afslutter med en header så jeg sender brugeren videre til login siden uden exit

er det et issue?
Avatar billede ranglen Nybegynder
26. juni 2007 - 16:41 #30
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");
}

echo "hemmeligt";
Avatar billede coderdk Praktikant
26. juni 2007 - 16:42 #31
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?
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:43 #32
Det kan man jo bare se.. Så er hele admin systemet jo ikke sikret mod en crawler.. Det må jeg vist hellere gå gjort noget ved..
Avatar billede coderdk Praktikant
26. juni 2007 - 16:43 #33
Som ranglen er inde på, bør du efter en header location smide exit så scriptet stopper...
Avatar billede coderdk Praktikant
26. juni 2007 - 16:45 #34
Eller glem min sidste. Opret en funktion du kan tilgå alle steder fra som denne:

function secureDbInput($str)
{
  if( get_magic_quotes_gpc() )
  {
    $str = stripslashes( $str );
  }
  return mysql_real_escape_string( $str );
}

så skal query'en være:

mysql_query("SELECT * FROM tabel_brugere WHERE user = '".secureDbInput($_POST['user'])."' AND pass = '".$pass_md5."'") or die(mysql_error())

:)
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:45 #35
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.
Avatar billede zuledk Nybegynder
26. juni 2007 - 16:47 #36
Den vil jeg bruge frem over..
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester