webForumDet fria alternativet

Include säkerhet

10 svar · 1 042 visningar · startad av Mr T

Mr TMedlem sedan maj 20071 147 inlägg
#1

Bakgrund:
Efter att i flera år gjort allt själv börjar jag inse inse tidsbesparandet att använda redan färdiga PHP script till div. funktioner. Ofta är dom script man tankar hem enkla att lägga upp. Ofta är det bara en configurations-fil man bahöver ändra div. variabler i för att få det att funka.

Läst på i en tidigare diskusion (http://www.webforum.nu/showthread.php?t=163281 ) om att med med include kommandot ibland kan länka till en "fullständig" url-adress (www.domännamn...osv.).

Fråga :
Kan någon som vet configurations-filens namn och adress komma åt innehållet i dess variabler ?
Om man kan komma åt saker så som lösenord till databaser, kan dom då utifrån (från en anna server) ex. rensa och ta bort mina tabeller?

Altså, hur mycket helvete kan dom (dom = folk som vill jävlas) göra mot min sida, och hur löser man det när man som jag använder andras script och deras redan diffinerade filnamn och variabler ?

stevenetMedlem sedan juni 2000985 inlägg
#2

Såvida du inte har en felinstallerad webbserver kommer de bara få ut det körda skriptet. Största faran är förmodligen någon form av XSS-attack, där hackaren kan kapa dina användares sessioner.

Om skriptet är utformat så att det inte kontrollerar om den inkluderade filen är lokal eller inte, skulle jag rekommendera dig att antingen fixa det, eller slänga det helt.

Enkelt exempel:

<?php
$allowed_pages = array ("guestbook", "blog");

if(in_array($_GET["page"], $allowed_pages)) {
    include($_GET["page"].".php");
}
?>
LedelMedlem sedan dec. 2004735 inlägg
#3

Om vi antar att du har följande kod:

$mySecretDBPassword = "superpass";
include($_GET['inc'] . "php");

Och sedan bestämmer filen du vill inkludera: http://www.sida.com/page.php?inc=databasefunction

Så kan ju jag skriva: http://www.sida.com/page.php?inc=MINSIDA/MITTSCRIPT?s=
Då kommer du försöka inkludera MINSIDA/MITTSCRIPT?s=.php, och det sista är ju en Querystring så den spelar ingen roll. Vet jag då vad dina variabler heter kan jag ju, i mitt script, skriva ut innehållet i $mySecretDBPassword. Inte så bra ;)

stevenetMedlem sedan juni 2000985 inlägg
#4

Ledel skrev:

Om vi antar att du har följande kod:

$mySecretDBPassword = "superpass";
include($_GET['inc'] . "php");

Och sedan bestämmer filen du vill inkludera: http://www.sida.com/page.php?inc=databasefunction

Så kan ju jag skriva: http://www.sida.com/page.php?inc=MINSIDA/MITTSCRIPT?s=
Då kommer du försöka inkludera MINSIDA/MITTSCRIPT?s=.php, och det sista är ju en Querystring så den spelar ingen roll. Vet jag då vad dina variabler heter kan jag ju, i mitt script, skriva ut innehållet i $mySecretDBPassword. Inte så bra ;)

"va?"

Mr TMedlem sedan maj 20071 147 inlägg
#5

Lite förvirrad då jag inser att samtalet hamnar lite i hårtopparna på mig. Jag gör ett exempel så får vi se om jag får ett svar på min, lite lägre, nivå :)

filen variabler.php innehåller bla.
$databasen = "min.databas.com";
$databaslogin = "hemligt";
$databaslösen = "såiniHhemligt";
$annanvariabel = "hemligt hemligt";

I filen spottautdata.php ser det bla. ut såhär:
include("variabler.php");
// Öppna databasen
$databasen = mysql_pconnect($databasen, $databaslogin, $databaslösen);
$data = ......

Min fråga är : Om ni vet att filen heter variabler.php och vet variablernas namn, kan man då från en anna domän plocka ut den informationen ?
Om man nu vet databas, login och lösen kan man då från annan domän plocka data från databasen ?

PeddaMedlem sedan juni 20004 880 inlägg
#6

Om allow_url_fopen i php.ini är avstängt så kan man inte läsa in filen via include()
Har testat med ini_set('allow_url_fopen', 'on'); men det gick inte iaf.
Men det kanske finns något sätt att gå runt det på ändå.

stevenetMedlem sedan juni 2000985 inlägg
#7

Pedda skrev:

Om allow_url_fopen i php.ini är avstängt så kan man inte läsa in filen via include()
Har testat med ini_set('allow_url_fopen', 'on'); men det gick inte iaf.
Men det kanske finns något sätt att gå runt det på ändå.

Hurvida man kan inkludera externa sidor sätts via allow_url_include.

Mr T skrev:

Lite förvirrad då jag inser att samtalet hamnar lite i hårtopparna på mig. Jag gör ett exempel så får vi se om jag får ett svar på min, lite lägre, nivå :)

filen variabler.php innehåller bla.
$databasen = "min.databas.com";
$databaslogin = "hemligt";
$databaslösen = "såiniHhemligt";
$annanvariabel = "hemligt hemligt";

I filen spottautdata.php ser det bla. ut såhär:
include("variabler.php");
// Öppna databasen
$databasen = mysql_pconnect($databasen, $databaslogin, $databaslösen);
$data = ......

Min fråga är : Om ni vet att filen heter variabler.php och vet variablernas namn, kan man då från en anna domän plocka ut den informationen ?
Om man nu vet databas, login och lösen kan man då från annan domän plocka data från databasen ?

Nej, man kan fortfarande inte komma åt exekverad kod. Vad du istället ska oroa dig för är XSS. Kontrollera och filtrera indatan!

Mr TMedlem sedan maj 20071 147 inlägg
#8

XSS ?

(Snacka om att känna sig som en Lamer ibland på detta forumet.)

stevenetMedlem sedan juni 2000985 inlägg
Mr TMedlem sedan maj 20071 147 inlägg
#10

Tack !

Mr TMedlem sedan maj 20071 147 inlägg
#11

Vill tacka all som gjort inlägg i denna tråden tidigare.

Har försökt att ta till mig all kritik ni gett mig. Vill nu se hur väl jag lyckats.
Har byggt ett busenkelt CMS-system. Innan jag börjar använda det, vill jag se om ni ser några risker med systemet och att jag lämnar ut alla uppgifter om systemet på sidan nedan.
Just på denna sidan har jag låtit alla få prova på, detta gör att stevenets påpekande om XSS är påfallande, men då det (väll) endast är mitt ev. admin lösen som kan snos på denna sidan, ser jag det som en acceptabel risk. När systemet är igång är det ju inte tänkt att andra än aministratörerna ska kunna ändra på sidan.

Så ta en titt och ge kritik tack och se gärna om ni kan hacka systemet. (ställ dock inte till det för J för mig tack)

http://cms.axplock.com/

126 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
124 ms — hämta tråd, inlägg och bilagor (db)