Wat is path traversal?

Path traversal of directory traversal is een kwetsbaarheid waarbij een aanvaller willekeurige bestanden van een server op kan vragen door uit een map te breken.

Hoe werkt path traversal?

Path traversal ontstaat wanneer een gebruiker een bestand op de server kan opvragen en de server de input van de gebruiker niet controleert. Neem bijvoorbeeld het onderstaande voorbeeld:

https://example.com/get_file.php?file=public/marketing.pdf

We zien dat het PHP-bestand een PDF ophaalt uit de map public. Maar wat als we een andere map invullen?

https://example.com/get_file.php?file=private/secret.txt

Zonder goede access control zal het bestand “secret.txt” nu gedownload worden. Een aanvaller moet hier weten dat het bestand “secret.txt” bestaat en dat deze in de map “private” aanwezig is. Hierover later meer. Omdat we nu van directory zijn veranderd noemen we deze aanval “directory traversal”.

In het bovenstaande voorbeeld staat de map in de url. Het is met een truc ook mogelijk om hoger te gaan. Het commando om een map hoger te gaan is “../”. Wanneer het programma niet hoger meer kan, dan zal het commando genegeerd worden. Op Linux is het bestand /etc/passwd altijd aanwezig en leesbaar. Vroeger stonden hier wachtwoorden in, maar tegenwoordig is het meer een lijst van gebruikers. Wanneer we dit bestand willen opvragen kunnen we het volgende doen:

https://example.com/get_file.php?file=../../../../../../../../etc/passwd

Hoewel we geen idee hebben hoever we naar boven moeten, voegen we een heel aantal keer ../ toe. Wellicht is het teveel, maar dat maakt niet uit. Als het goed is krijgen we nu de inhoud van /etc/passwd te zien.

Hoe vindt een hacker bestanden?

Sommige bestanden staan altijd op dezelfde locatie, zoals het passwd bestand. Anderen staan vaak op dezelfde locatie. Als we bijvoorbeeld de inhoud van get_file.php willen hebben, dan is de kans groot dat deze staat in de map /var/www/ of /var/www/html. Dit hoeft echter niet, waardoor het een kwestie van raden is, en veelgebruikte paden proberen. In het eerdergenoemde voorbeeld werd de map “private” genoemd. Een hacker zou dit kunnen vinden door alle broncode te bekijken en verwijzingen naar de map te vinden. Ook kan een aanvaller proberen de accesslog op te vragen. Hierin wordt gelogd welke bestanden opgevraagd zijn, ook door andere gebruikers.

Standaard locaties:
C:\windows\win.ini
C:\windows\system.ini
C:\windows\iis.log
C:\windows\System32\Drivers\etc\hosts
C:\inetpub\index.asp
/etc/passwd
/etc/shadow
/etc/crontab
var/www/logs/access_log
var/www/logs/access.log
/etc/httpd/logs/acces.log
var/log/apache/access_log
var/log/apache2/access_log
/var/www/index.php
/var/www/html/index.php

path traversal

Meer informatie over onze diensten

Wilt u er zeker van zijn dat uw websites, apps of systemen vrij zijn van lekken of kwetsbaarheden? Onze experts gaan graag voor u aan de slag. Voor meer informatie over onze pentests of andere diensten kunt u vrijblijvend contact opnemen via onderstaand contactformulier. We vertellen u graag wat we voor u kunnen betekenen.

    Contact

    Randstad 22 147
    1316 BM Almere

    info@cyberant.com
    +31 (0)85 047 1590