hallo allemaal,
ik was net even aan het kloten, en ik ben ergens achter gekomen, wat veel van jullie misschien wel interessant/schokkend vinden..
veel mensen denken dat checken van een plaatje met headers en/of een functie uit de gd library..
dit is niet correct, het is nog steeds mogelijk php in een plaatje te zetten, terwijl het WEL een geldig plaatje is!
maak met the gimp een klein gifje, met als commentaar <?php phpinfo(); ?>
als je dit bestand als gif opslaat, en je vraagt het op van een server, zal je gewoon een plaatje zien..
hernoem je het nu naar php, dan zie je eerst een hoop code, en daarna de php info!
*getest op wampp5*
edit: of het enigzins nut heeft weet ik niet.. nog geen situatie kunnen bedenken..;) maar toch..
vond het wel grappig, dus wou het even delen..
Okee: welke chmod zou je nodig hebben om Apache de PHP code niet uit te laten voeren. Ik neem aan dat plaatjes niet executable hoeven te zijn, PHP wel? (in CGI-modus wel neem ik aan, maar als PHP als apache extentie draait?) Want als dat het geval is is dat in je uploadscript een manier om het leven weer wat veiliger te maken.
En natuurlijk controleren via mime & extentie :)
Maar bedankt voor het delen, ik wist het nog niet.
Het mime checken en extensie zal die dus volledig doorkomen. Dus als jij zo een plaatje kan uploaden op een website, deze via een exploit kan hernoemen tot .php en hoppa je voert php uit :)
?
Onbekende gebruiker
03-12-2006 00:48
Het kunnen hernoemen naar een .php zou al een te grote fout zijn in een website.
Maar goed de verklaring ontbreekt nog daarom: als je comment in een plaatje opslaat komt dit er gewoon als ASCII in te staan. Parser begint binary als ASCII te lezen en komt op een gegeven moment [ignore]<?php[/ignore] tegen, parsert deze code en gaat weer verder naar het eventuele volgende code blok.
Het zelfde effect geeft het openen van elk ander binary bestand met kladblok het toevoegen van een paar regels code (maakt niet uit waar) en het opslaan als .php;
De kans dat je rename uit kan voeren, dus of er een lek script in zit dat rename draait op user-input, of dat er ergens code via eval wordt uitgevoerd, is vrij klein.