XSS met $_SERVER['PHP_SELF']

Vandaag ga ik uitleggen hoe $_SERVER['PHP_SELF'] een gevaar kan vormen. Ik leg uit wat het is, hoe het tot een beveiligingslek kan leiden, en hoe je het tegen kunt gaan.


Wat is $_SERVER['PHP_SELF']?


$_SERVER['PHP_SELF'] wordt vooral gebruikt in formulieren. De ingevulde gegevens worden naar dezelfde pagina verstuurt als waar het formulier staat.

Stel, het formulier is als volgt, en staat op http://jouwwebsite.nl/direct/vb.php
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
Emailadres: <input type="text" name="email" />
</form>


Bij het openen, zal dat tot het volgende leiden:
<form action="/direct/vb.php" method="post">
Emailadres: <input type="text" name="email" />
</form>


$_SERVER['PHP_SELF'] geeft dus het pad naar het bestand dat op dat moment wordt uitgevoerd.


Wat is het gevaar hiervan?


Laten we verder gaan met ons voorbeeld. Stel dat een kwaadwillig persoon de pagina op deze manier aanvraagt:
http://jouwwebsite.nl/direct/vb.php/" onload="<script>alert(document.cookie)</script>


Dan zal de code als volgt worden:
<form action="/direct/vb.php/" onload="<script>alert(document.cookie)</script>" method="post">
Emailadres: <input type="text" name="email" />
</form>


Zoals je kan zien is er nu een code uitgevoerd op een plek waar dat niet hoort. In het voorbeeld zal het enkel leiden tot het weergeven van de cookie, maar je begrijpt wel dat de gevolgen veel ernstiger kunnen zijn.


Hoe gaan we dit lek tegen?


In plaats van $_SERVER['PHP_SELF'], zet je simpelweg niets neer. Zo dus:
<form action="" method="post">

Op deze manier zal het formulier via dezelfde weg worden verzonden, maar is het beveiligingslek weg.


Hopelijk is de boodschap duidelijk. Wat je dus moet onthouden: Gebruik nooit $_SERVER['PHP_SELF'] in een formulier! Vergeet niet om rechts op LEUK te klikken als je deze tutorial leerzaam vond. Vragen kunnen in de reacties of op het forum worden gesteld.
 

Reacties (14)

 
En hoe kan een kwaadwillig persoon de pagina op die manier opvragen?
 
Door naar http://jouwwebsite.nl/direct/vb.php/" onload="<script>alert(document.cookie)</script> te gaan xD.
 
Handig! ik zelf had dit lek ook.
 
Weet je zeker dat dit werkt? want speciale tekens in een url worden normaal gesproken omgezet in de ascii code daarom wordt een spatie altijd %20
 
Dat kan je tegen gaan met String.fromCharCode(). Werkt ook tegen het escapen van quotes.
 
Alleen jammer dat een <form> geen onload event heeft :P
 
Niet? :P Naja, het gaat ook om het idee. Het is enkel een voorbeeld.
 
Zonder code kunnen we je niet helpen.

En ja, dat kan. Met een meta-tag redirect.
 
<script>location.href=http://digitalplace.nl/forum;</script>

Volgens mij zo... Maar denk er is over na, misschien krijgt de beheerder van de site na het invullen van zijn formulier wel een mail met daarin de link naar bijvoorbeeld een log bestand. Hij opent de log file en het script stuurt je automatisch door naar DPF. Opzich is daar niets ergers aan maar wel als de link een virus bevat. ;)
 
wtf mijn posts zijn weg:S Maar ik wilde zeggen dat de fout dus in de title tag zit... dus ik heb ergens code die de pagina steeds oproept, en daarin kunnen mensen een xss injectie doen... Hoe verhelp ik dat?
 
Sanderb11 schreef:wtf mijn posts zijn weg:S Maar ik wilde zeggen dat de fout dus in de title tag zit... dus ik heb ergens code die de pagina steeds oproept, en daarin kunnen mensen een xss injectie doen... Hoe verhelp ik dat?

Ik zou zeggen start een topic en publiceer daar je code, dan kunnen we je helpen aan de hand van de code. ;)
 
Alle posts van sanderb11 zijn weg omdat het spam was.
 
Zover ik kan zien sanderb11, heb je alles zelf verwijderd...
 
nee ze zijn niet weg omdat het spam was:S Maar zal wel...
Ik heb me password dan maar gechanget:S want ik heb waarschijnlijk ook RAT in me pc...

Maarja die XSS is opgelost:D Kep nu alleen nog 8 sql injecties in mijn site terwijl ik meeste heb verholpenXD Alleen ik snap deze niet:S

Plaats reactie

Alleen leden kunnen reacties plaatsen. Ga naar de inlogpagina of word gratis lid van DigitalPlace.nl.

Details

Avatar Thisegzz
Door: Thisegzz Administrator

Categorie: Exploits
1 jaar geleden
1219 x bekeken

Jouw mening

Leuk Niet leuk

Updates

Op de hoogte blijven van de nieuwste updates van DigitalPlace.nl? Dat kan!


Opties



Naar boven