Ett exempel på hur en dator kan ”hackas”

2007-08-23 19:40 | Kategorier » IT-säkerhet, Webb,

KodJag har suttit ett tag och funderat på om jag ska publicera det här eller inte, men till sist ändå bestämt mig för att göra det då jag tror att många kan få upp ögonen till att de verkligen måste tänka sig för när de öppnar upp sin dator mot Internet. Driver du en hemsida på en egen dator kan det vara en bra idé att prova att attackera din egen dator på nedanstående vis ifall möjlighet till det finns.

Låt oss börja med att måla upp en bild av den dator som kommer att hackas.

En person, låt oss kalla honom Offer-Olle, bestämmer sig för att det vore kul att ha en egen hemsida och kommer snabbt fram till att det går att köra en webbserver på sin egen dator. Eftersom Offer-Olle har sin dator påslagen nästan jämt tycker han att det låter som ett utmärkt sätt att spara pengar på, han slipper att skaffa något dyrt webbhotell och får dessutom massa utrymme till sidan eftersom den lagras på hans egna hårddisk. Sagt och gjort, han tankar hem någon färdig webbservermjukvara. Kanske gör han det så lätt för sig som möjligt och laddar hem ett paket där webbserver, PHP-stöd och databas finns i samma paket.

Glad i hågen installerar Olle detta och börjar göra sin egna hemsida. Det vore ju tufft om hans vänner skulle kunna ladda upp roliga bilder och annat direkt via hans hemsida med, så han kodar en sida för att besökarna ska kunna ladda upp filer med.

Det är nu hackern kommer, för lita på att det inte tar många minuter innan någon utomstående sniffar reda på att Olle kör en webbserver. Attackeraren tar en snabb koll på hemsidan, en enkel gästbok, lite personlig information och… Nämen.. En filuppladdningssida. Snabbt kastar attackeraren ihop en liten PHP-fil, döper den till phpinfo.php (namnet spelar ingen roll, det är med för att göra kommande saker tydligare) och laddar sedan upp den. Innehållet är så enkelt som:

<?php phpinfo(); ?>

Hackern ser att filen blivit uppladdad och klickar nyfiket på den i fillistan. Det som borde hända är att han får filen skickad till sig, eller att den visas på skärmen. Det som händer är däremot desto bättre – för attackeraren. PHP-filen körs och funktionen phpinfo skriver ut en sida med information om webbservern och hur den är inställd. Hackern ser att servern körs på en Windows XP-burk och bestämmer sig för att testa nästa steg. En ny PHP-fil skapas, denna gång döps filen till cleaner.php:

<?php
shell_exec('del phpinfo.php');
shell_exec('del cleaner.php');
?>

Vad gör då denna? De två raderna med shell_exec()-kommandot kommer att försöka köra de två kommandona som finns innanför citationstecknena. Med andra ord kommer filen försöka radera först phpinfo.php (den som laddades upp först) och sedan sig själv. Hackern laddar upp filen och klickar på den i fillistan. Efter det går han tillbaks till listan för att se om raderingen lyckades. Jodå, filerna är borta. Nu börjar det gå upp för attackeraren att man förmodligen kan göra nästan vad man vill. En ny fil skapas och döps till check.php:

<?php
$output = shell_exec('dir c:');
echo "<pre>$output</pre>";
shell_exec('del check.php');
?>

Det som händer här är att kommandot dir c:\ körs, ett kommando som listar alla filer och kataloger som ligger direkt i c:. Resultatet sparas i variabeln output och skrivs sedan ut, varefter filen raderar sig själv. Denna gång gör hackern på samma sätt som förut, laddar upp filen och klickar på den i listan. Det som skrivs ut på skärmen är precis det väntade, innehållet i roten på c:. Tänker man ett steg till så ser man snabbt ut att detta är en genväg till att kunna sno nästan vilken fil man vill. Detta genom att kopiera den till den mapp som uppladdningsfunktionen använder sig av. Genom informationen från phpinfo() och innehållet i filen som listar de uppladdade filerna går det att lista ut var denna finns.

Detta byggs lätt ut till en attack där attackeraren laddar upp andra filer och program, som sedan kan flyttas till vilket ställe som helst på offrets hårddisk och sedan köras. Dessa program kan orsaka allt ifrån att all data blir raderad till att attackeraren helt tar kontrollen över offrets dator. Exakt hur dessa delar går till tänker jag däremot inte beskriva närmre.

Hur skyddar man sig mot detta?
Enklast är förmodligen att inte tillåta att vilka filtyper som helst laddas upp, tätt efter det kommer att begränsa möjligheten för dessa filer att på något som helst vis köras. Särskilt det sista steget bidrar till en dramatiskt höjd säkerhetsnivå i det här fallet. Att sätta rätt behörighetsnivåer för webservern är också att rekommendera.

Från dess att en attackerare kommer åt en uppladdningssida som har de här svagheterna till dess att attackeraren har full kontroll över offrets dator behöver det bara ta någon minut. Jag har själv stött på många ”hobbysidor” som har liknande svagheter, så det är inte helt ovanligt.

Detta är så klart långt ifrån det enda sättet man kan attackera en sida på.

Framöver kommer jag att posta fler artiklar rörande IT-säkerhet. För att inte missa detta kan du prenumerera på min RSS-feed.

Gravatar
|
rEAL — 2007-09-22 23:16

Går även använda sig av:

Shell

$output”;
?>

Gravatar
|
rEAL — 2007-09-22 23:18

går tydligen inte posta kod här :/

Gravatar
|
Alexander — 2008-01-31 01:16

Läste din artikel. Men kan inte ”hackern” lika gjärna ladda upp valfritt c**.php shell på servern och gå mot den eller tänker jag fel nu ?

Gravatar
|
Kristoffer — 2008-01-31 10:34

Alexander: Nejdå, du tänker helt rätt. Vad attackeraren vill hitta på begränsas mer eller mindre bara av dennes fantasi i ett sådant läge jag beskrev ovan. När det väl är fastslaget att man kan ladda upp och exekvera kod så har man ju milt sagt fria tyglar… 🙂

Gravatar
|
Anders — 2008-01-31 18:19

Exempel som detta ger även ett intressant perspektiv på hur man kör en server. Visst, man kan köra en webserver på sitt vanliga administratörs-login på sin windows xp burk som ändå står på hela nätterna för att man har t.ex. några torrents igång. Men, då ökar också den skada ev. intrång kan leda till. I en välanpassad servermiljö och med hjälp av tekniker så som virtualisering kan man minimera den skada som den som gör intrång kan åstadkomma.

Lämna en kommentar


Regler för kommentarer på Gate 303

Creeper MediaCreeper