Gå til innhold

hjelp til å stoppe hacker


Anbefalte innlegg

Jeg har laget et cms som jeg bruker for å oppdatere hjemmesiden(bloggen) min når jeg er i militæret, men så er det en som har funnet det for godt å hacke denne hver gang jeg har lagt ut noe nytt. Det som skjer er at han/hun sletter alt jeg har lagt ut og skriver f.eks. " i own you".

Jeg lurer på om det er en måte jeg kan logge dette evt, om det er mulig å få tak i et bedre innloggingssystem.

Siden det er snakk om finner dere her, men jeg har slettet innholdet til hackeren nå så det er tomt. håper det er noen som kan hjelpe.

 

/ frustrert Smidt

 

edit:

hvis det er til hjelp bruker jeg databaser til å lagre bloggen i, både kategorier til nyheter bilder og alt.

Endret av Smidt
Lenke til kommentar
Videoannonse
Annonse

Da er nok ikke sikkerheten i sytemet ditt spesielt sikkert. Om jeg fikk se kildekoden til scriptet ditt hadde jeg hatt en større kansje til å hjelpe deg.

 

- Valider info før det sendes til SQL, f.eks:

 

SELECT * from brukere WHERE brukernavn='$_POST[brukernavn]

 

er inden god ide. bruk mysql_real_escape_string() og andre valideringsmåter du måtte ønske,

 

Sørg også for at du ikke kun lager en enkel kjeks satt til en standard verdi. En kjeks er ikke vanvskelig å opprette selv.

Lenke til kommentar

Første tiltak er å bytte passord over alt, og brukernavn. Og du bør også sjekke brukerrettighter til databasen. Kanskje ha en som kun kan lese, og en med lengre passord som også kan skrive?

 

Deretter, for å logge innlogginger kan du vel logge via login.php, lagre dato, ip, os, browser, brukernavn? Da har du et godt utgangspunkt til å finne ut hvordan, når og hvorfra. Kanskje også hvem.

 

Har du noen formeninger om hvordan vedkommende har fått tak i brukernavn og passord? Kan det være en som bruker samme maskin som du, og brukernavnet og passordet ligger i browseren?

Lenke til kommentar
vel sånn som det er nå, bruker jeg ikke database til selve innloggingen. der ligger alt i filer, men passord er md5 kryptert. er det ikke sikkert nok?

5555519[/snapback]

 

Det er fult mulig å finne ut passord til md5, så det er jo ikke sikkert. Men hvis du har bokstaver og tall i passordet så tar det så lang tid å finne det ut at.. ja.. men bruk sha1() istedenfor md5(). Er mer sikkert det!

Lenke til kommentar

md5 og sha1 er teoretisk like sikkert. Begge er en hash og kan stort sett kun brytes ved bruteforce. bytt passordet, og brukernavnet som nevnt tidligere. Endre måten siden kjenner igjen en som allerede er innlogget. sett også en timeout på sessionen din.

 

<?php
//ced innlogging
$_SESSION['har_logga_inn'] = $_SERVER['REMOTE_ADDR'];
$_SESSION'['time'] = time();
?>

<?php
//ved kontroll om innlogging.
if($_SESSION['time'] > time() + 1500 && $_SESSION['har_logga_inn'] == $_SERVER['REMOTE_ADDR']){
//Logga inn
} else {
//vis loginformen
}
?>

Lenke til kommentar

hadde vært supert hvis noen enten kan hjelpe meg med å finne ut hvem det er som har det så hysterisk morsomt med å ødelegge for meg eller lage systemet mitt mer sikkert. synes det blir så utrolig barnslig, er liksom på nivå med at "jeg ødelegger sandslottet ditt fordi du ikke har strømførende piggtrådgjerde rundt"

jeg er ikke god nok enda i php til å kunne lage et system som kan lukke alle muligheter for å ødelegge så hadde vært supert med hjelp.

Lenke til kommentar

når du kjører en spørring opp mot mysql (Select, insert update etc) bruk denne quote_smart() funksjonen. På denne måten hindrer du sqlInjections:

 

<?php
// Quote variable to make safe
function quote_smart($value)
{
  // Stripslashes
  if (get_magic_quotes_gpc()) {
      $value = stripslashes($value);
  }
  // Quote if not integer
  if (!is_numeric($value)) {
      $value = "'" . mysql_real_escape_string($value) . "'";
  }
  return $value;
}

// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
  OR die(mysql_error());

// Make a safe query
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
          quote_smart($_POST['username']),
          quote_smart($_POST['password']));

mysql_query($query);
?> 

 

bruk htmlspesialchars() eller htmlentites() rundt allt som skal sendes ut til visning. disse gjør om < til < og > til > så ingen javascripts blir kjørt, kun vist...

 

 

om du sikrer loginscriptet ditt litt skal det holde. jeg ville også lagt til en autmoatisk utlogging etter f.eks 15 min. sørg også for at browseren din ikke husker brukernavn/pass om du sitter på en maskin flere bruker.

 

Nå vet ikke jeg åssen systemet ditt virker, men sørg for at man ikke bare kan endre url for å få tilgang til de andre filene og at login scriptet ditt ikke kun fungerer gjennom et include system.

 

leg en kontroll om innlogging øverst i alle filer som skal være passordbeskyttet som dreper prosessen med die() om han ikke er inlogget...

Lenke til kommentar

Ja, her er det snakk om buteforce, altså programmet prøver alle mulige kombinasjoner. Jo lenger passord, jo lenger tid tar det. Hvilken krypterings metode du velger av disse utgjør ikke stor forskjell, fremdeles en enveis kryptering som må bruteforces, dette er en metode som ikke noen kryptering kan hindre.

 

Om "hackeren" ikke har tilgang til selve hashen, må han prøve innloggingen din mange ganger(har han heller ikke noe brukernavn vil det jo ta litt lenger tid i tillegg)

 

Så følger man reglene om gode pasord vil det ta veldig lang tid før man kommer igjennom.

 

Passord skal helst være 8 tegn eller mer og bestå av Sore OG små bokstaver, minimum 3 tall og gjerne også _ og -

 

Da har du et passord det vil ta vanvittig lang tid å knekke. Om du da i tilleg bynnet passord regelmessig vil dette hindre de fleste i å komme inn(da du helst har byttet passord innen de har bruteforcet det gamle)

 

Logg gjerne forsjøk på innlogging som er misslykket opp imot brukernavnet å steng kontoen etter f.eks 5 forsøk og krev opplåsning av passordet manuelt gjennom f.eks phpMyAdmin

 

sha1() er altså en liten smule sikrere(160 bits hashing istedenfor 128 bit) men er ikke hash metoden som utgjør den største forkjellen.

 

På de 3 minuttene det er snakk om på NWF der er det et passord på 4 tegn, i kun små bokstaver som tok 3 min og 24 sekunder å bruteforce

 

Hovedforskjellen mellom disse hashingen er nok kun antall muligheter, i md5() er det faktisk teoretisk mulig at 2 passord blir like(selv om de ikke er det) men her er det snakk om ørsmå sansynligheter,mens de er enda mindre i sha1()

Endret av NH
Lenke til kommentar

Du kan jo også bare legge til en dobbelt sha1/md5-kryptering...

$pass = md5(md5("test"));

Hvis vi regner med alle bokstaver (uten æ, ø, å) + tall får vi 36 forskjellige muligheter.

Og når du har en 32-bokstavers lang streng er det 36^32 (63340286662973277706162286946811886609896461828096) forskjellige muligheter! Og det tar LANG tid ;)

Lenke til kommentar

Overhodet ikke.

 

en kryptering som ser slik ut:

md5(md5()) vil forstatt være 32 chars lang streng

 

en kryptering som er hakket siksrere er PEAR::Crypt_HMAC

 

Som også gir deg muligheten til å spesifisere en bestem hemmelig KEY du er avhengig av får å hashe sammenligningen lik.

Endret av NH
Lenke til kommentar
vel sånn som det er nå, bruker jeg ikke database til selve innloggingen. der ligger alt i filer, men passord er md5 kryptert. er det ikke sikkert nok?

5555519[/snapback]

 

Det er fult mulig å finne ut passord til md5, så det er jo ikke sikkert. Men hvis du har bokstaver og tall i passordet så tar det så lang tid å finne det ut at.. ja.. men bruk sha1() istedenfor md5(). Er mer sikkert det!

5555555[/snapback]

Bruteforce av passord på 7 eller flere tegn tar lang tid, uavhengig om det er md5 eller sha1.

 

Du kan jo også bare legge til en dobbelt sha1/md5-kryptering...

$pass = md5(md5("test"));

Hvis vi regner med alle bokstaver (uten æ, ø, å) + tall får vi 36 forskjellige muligheter.

Og når du har en 32-bokstavers lang streng er det 36^32 (63340286662973277706162286946811886609896461828096) forskjellige muligheter! Og det tar LANG tid ;)

5559577[/snapback]

Feil. Du gjør det ikke en brøkdel sikrerer engang. Ingenting som står i vegen for å kjøre bruteforce med 2xmd5 direkte. Det er ikke slik at man MÅ finne den første strengen først og så knekke den neste. Det DU kan gjøre med md5 kan også cracker gjøre med md5. Så enkelt er det :)

 

Edit: Samme gjelder også for sha1, andre hash-funksjoner og kombinasjoner av disse.

Edit2: la til noe

Endret av Ernie
Lenke til kommentar
Seff :blush:

Men så lenge ingen vet hvor mange krypteringer du har eller hvilke du bruker så er det jo sikrere?

5560995[/snapback]

"Anta at cracker kjenner koden" heter det seg.

Det jeg ville gjort er bare å bruke sha1 eller md5 og benyttet meg av et lengre passord (8 tegn eller mer). Selv om cracker kjenner koden vil det ta år og dag å finne passordet. Si a-z + 0-9. Da har man 36 tegn pr. plass. Det gir 36^8 = 2821109907456 kombinasjoner hvilket vil ta 17-18 år å knekke for en hobby-cracker. Driver man litt mer profesjonellt så er det klart man har tilgang til litt mer saftige maskiner, men det vil fortsatt ta lang tid og ingen her er verdt så mye krefter at noen hightech crackere gidder å bry seg.

Endret av Ernie
Lenke til kommentar

Har du fått vite at det er din side som har blitt cracket, og ikke et annet nettsted på serveren?

 

Når en idiot kjeder seg finner vedkommende f.eks et hull i en versjon av phpbb, for så å google etter "powered by phpbb <versjonsnr>", og den måten å "cracke" på er vel en av de mest utbredte måtene og angripe servere på.

 

Det som da som oftest alltid gjøres er at index.php/html/htm endres med noe annet møkk.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...