Beveiligings check

  • Hey,


    Ik heb dus een klein scriptje, waarbij de gebruiker een naam invult, en een .zip file upload.
    Vervolgens wordt er dan op de server een mapje aangemaakt in een 'uploads' folder, met de opgegeven naam, en dan in het mapje wordt de zip uitgepakt.


    Dit werkt allemaal perfect, maar voordat ik het wil gaan gebruiken op me site, ik twijfel nog erg over de veiligheid van het script.
    Zou iemand me kunnen vertellen of ik iets over het hoofd ziet? De upload folder wordt met htaccess beveiligt, de rest van de beveiliging zit in het scriptje.



    Tot nu toe heb ik:


    - Extensie check via mime. Het bestandje moet een .zip file zijn anders upload hij niet.
    - Filesize check. Het bestandje mag niet groter zijn dan 1MB.
    - Naam check. Als er al een mapje met precies de zelfde opgegeven naam bestaat op de server, upload hij niet.



    Zijn er nog meer dingen waar ik op moet letten? En zijn er eventeel ook nog andere risico's waar ik op moet letten?

  • Als het goedis pakt hij het enkel uit
    Het upload & extract gedeelte is dit:



    Hierbij worden de bestanden niet geopend/uitgevoerd volgens mij

  • @Sukel
    Ooit gehoord van SHELL99 exploit code? Wellicht handig als je het een en ander uitzoekt daarover dan heb je meer informatie hierover.
    Er bestaan nog veel meer van dit soort exploits, ze zien er onschuldig uit maar kunnen je een hoop narigheid bezorgen ;)

  • Ik raad je aan de zip te uploaden naar een OS safe directory waar os level commands beschikbaar zijn, dan daar met een zip safe file checker via command line interference te controleren of hij veilig is dan uitpakken en verplaatsen met php's stream_to_stream.

  • Ik raad je aan de zip te uploaden naar een OS safe directory waar os level commands beschikbaar zijn, dan daar met een zip safe file checker via command line interference te controleren of hij veilig is dan uitpakken en verplaatsen met php's stream_to_stream.


    O.o
    Haha sorry, dit gaat even te ver over mijn 'knowledge' heen haha.
    Hoe werkt dit precies?

  • Eigenlijk is het aangeraden om bestanden die je voor de gebruiker niet beschikbaar wilt hebben buiten de webroot te zetten.


    Je oplossing met .htaccess (Deny from all) in de "uploads" directory is overigens niet verkeerd en ook niet onveilig. Het nadeel kan alleen zijn dat mocht er een syntax error zijn dat de htaccess mogelijk verkeerd geïnterpreteerd wordt of totaal niet geladen wordt (denk aan verkeerde apache configuratie). Een ander punt is dat je mogelijk met verouderde software werkt waardoor er mogelijke lekken kunnen worden misbruikt, dus zorg dat je software up-to-date is.


    Stel dat je dat allemaal gewoon op orde hebt, dan is er niks mis met een .htaccess beveiliging. De gebruiker kan hier niet omheen werken.
    Als een kwaadwillende shell access krijgt tot jouw account, dan heb je wel een probleem, maar ik zou mij dan meer druk maken om het feit dat iemand überhaupt toegang heeft gekregen tot een shell account inplaats van je druk te maken om het feit dat ze nu bij die paar geüploade bestanden kunnen.


    Mocht shell access voor je account niet ingeschakeld staan, dan is er niks aan de hand.

    Kast: HAF922 | CPU: I7-930 @ 4.0GHz | CPU Cooler: Noctua NH-D14 | HDD0: Crucial M4 128GB, HDD1: Kingston SSD 64GB, HDD2/3: WD Black & Green 1TB, HDD4: Seagate 1.5TB | Mem: Kingston HyperX 12GB @ 1600MHz | Graphics: Crossfire HD6970 | Res: 5760x1080

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!