Avatar billede Slettet bruger
08. juli 2006 - 20:55 Der er 9 kommentarer

Hacket site - usikker kode?

Hej eksperter.

Jeg har haft problemer med mit site, der er blevet hacket 3 gange efterhånden. Efter 1. gang, fjernede jeg al "overflødig" kode, dvs. filupload i en underfolder, satte 755-rettigheder på alt og ændrede kodeord på både mysql og sitet; sidstnævnte er jeg i øvrigt ret flittig til.

Jeg har en include-fil, der opretter forbindelse til mysql; kodeordet til dette og sitets kodeord er i øvrigt ikke ens.

Jeg kontaktede b-one over nogle omgange, der ville følge op på nyeste patches på Linux-serveren, men sagde at det sandsynligvis var min kode, den var gal med - eller hvis jeg gjorde brug af f.eks. Mambo, hvilket ikke er tilfældet.

I en opfølgende dialog siger de at min PHP-kode ikke virker sikker. Dette kan jeg ikke bruge til så meget, dels fordi de ikke angiver hvori det usikre består, dels fordi b-one MULIGVIS ikke er helt upartiske når det kommer til begrebet sikkerhed.

Yderligere info:
- Den omtalte include-fil har php-extension, så den burde vel ikke udgøre nogen risiko
- 1. hacker ændrede på en eller anden måde kun i .htaccess-filen, så den redirectede til et andet sted.
- 2. og 3. gang blev der fysisk uploadet filer til sitet; en række php-, com- og scr-filer i både rod- og underfolder, der i stilhed lå og pumpede et eller andet ud, sandsynligvis mails.
- Sitet er ganske simpelt med 8 php-filer af divergerende kompleksitet, hvis egenskaber udelukkende er at hente noget data fra min mysql og på index-siden lige kører en mysql-UPDATE - IKKE ANDET!
- Hvis det på nogen måde kan hjælpe... Herunder ses et gængs kodeeksempel (navne på filer etc. er ændret. Jeg er lidt paranoid efterhånden, på trods af at sitets navn ikke er afsløret :-)
   
<? include "opretsqlforb.php";
  if (isset($_GET['$id'])) {
    $id = $_GET['id'];
  }
  $begivenheden = mysql_query("SELECT manchet, beskrivelse, tidsrum, moedetid FROM aktivitet WHERE aktivid = '$id'");
  $posten = mysql_fetch_array($begivenheden);
?>


Jeg er i vildrede, så spørgsmålene er så:

Kan man på nogen mulig måde få ftp-adgang, uden at kende mit kodeord? Det lyder måske banalt, men jeg stiller det alligevel.

Har I nogle tips til, hvordan man sikrer sit site? Og hvad mener b-one, når de benævner php-kode som værende "usikker"?
Avatar billede erikjacobsen Ekspert
08. juli 2006 - 21:06 #1
Start her: http://www.developer.com/lang/article.php/918141  ;)

Ja, dit ftp password kan jo da opsnappes, da det sendes i klar tekst over nettet. Specielt på dit LAN, eller måske netværk i boligforening, kan man derfor med lidt snilde aflytte det.
Avatar billede mpj_86 Nybegynder
08. juli 2006 - 21:07 #2
include "opretsqlforb.php";
$id = intval($_GET['id']);

$begivenheden = mysql_query("SELECT manchet, beskrivelse, tidsrum, moedetid FROM aktivitet WHERE aktivid = '$id'");
$posten = mysql_fetch_array($begivenheden);

Forstå ikke lige hvorfor du vil have en if på din id..?
Avatar billede well_r Nybegynder
08. juli 2006 - 21:09 #3
$begivenheden = mysql_query("SELECT manchet, beskrivelse, tidsrum, moedetid FROM aktivitet WHERE aktivid = '$id'");

prøv at gøre sådan her i stedet:
$begivenheden = mysql_query("SELECT manchet, beskrivelse, tidsrum, moedetid FROM aktivitet WHERE aktivid = '".addslashes($id)."'");
Avatar billede mpj_86 Nybegynder
08. juli 2006 - 21:13 #4
Det er også en god ide at lukke din mysql, når du ikke skal bruge den mere.

mysql_close($connection);

well_r: hvorfor vil du sætte en addslashes på $id ved at bruge intval() så må $id kun indeholde tal..
Avatar billede Slettet bruger
08. juli 2006 - 21:20 #5
erikjacobsen, tak for det. Jeg sidder og læser på livet løs :)

mpj_86, jeg har tidligere udarbejdet noget kode til TDC. Udvikleren derinde modificerede filerne, således at der først blev checket på om en variabel blev fremsendt. Hun sagde, det var en sikkerhedsanordning.
Måske var det kun en sikkerhedsanordning i TDC-regi, men jeg bruger den nu alligevel, hvis ikke den skader...

well_r, tak for info. Er det en sikkerhedsrisiko at gøre som jeg har gjort?
Avatar billede well_r Nybegynder
08. juli 2006 - 21:59 #6
mpj_86:
Jeg havde ikke lige set dit indlæg da jeg åbnede det vindue ;)
jeg brugte blot hans egen kode :)
Avatar billede Slettet bruger
23. juli 2006 - 11:02 #7
Så gør vi lige status :-)

Tak for info over hele linien. Erik, post lige et svar.

Til info; jeg modificerede sitet ( www.sebbeals.dk ) jf. dit link, men sitet blev hacket igen og lukket af udbyderen umiddelbart efter. Røv! Men interessant og aktuel læsning, uanset.

Jeg har skiftet udbyder og har ikke oplevet problemer længere, men har samtidig også omprogrammeret på ét punkt, der KAN være et sikkerhedshul:

Der blev tidligere benyttet alm. includes - dvs. når jeg klikkede på et menupunkt, var url'en f.eks. index.php?side=hovedside.php
Herefter blev blot en $_GET['side'] og en include $side benyttet.
I princippet kunne en hacker vel lave sin egen URL, der include'r kalder min index-fil + et eksternt script på en server i Langtbortistan.

Jeg fatter dog stadig ikke, hvordan forbryderen overhovedet har kunnet få fysisk adgang til sitet - og uploade egne filer på denne, specielt da jeg har standard-rettigheder på alle foldere og filer.

Mystisk...
Avatar billede erikjacobsen Ekspert
23. juli 2006 - 12:05 #8
Ingen point til mig, tak.

Hvis hackeren inkluderer en fil med navnet "http://www.hacker.langtbortistan.com/script.txt" kan han udføre vilkårlig kode på dit site.

Regel nummer 0: Stol aldrig på input fra brugeren (url, formular, cookies, indtastning ...)
Avatar billede Slettet bruger
23. juli 2006 - 12:54 #9
Nævnte regel er hermed brændemærket på min arm :-)
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