Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Podczas analizy dziur w TP-linkach opisywanych tutaj, udało mi się zlokalizować jeszcze kilka dodatkowych innych podatności, które umożliwiają finalnie uzyskanie root shella na urządzeniu w nieco inny sposób. Zobaczmy.
Standardowo router udostępnia usługę ftp. Jednak jest ona w pewien sposób chrootowana (nie możemy uzyskać dostępu poza wskazanym przez twórców urządzenia katalogiem):
Zróbmy jednak mały trick. Po umieszczeniu w routerze pendrive z dowolnym folderem możemy go udostępnić przez ftp:
Kliknięcie przyciski „Save” generuje request HTTP jak poniżej. Request ten został przeze mnie przechwycony na lokalnym http proxy (darmowy burp suite) i następnie zmodyfikowany jak poniżej – tzw. path traversal:
Czym taka modyfikacja komunikacji http skutkuje? Możliwością uzyskania poprzez ftp dostępu na urządzeniu…również w trybie zapisu:
Ale jak uzyskać interaktywnego shella? Po rozglądnięciu się na urządzeniu, w katalogu /tmp/samba dostępny jest plik smb.conf (przez ftp jest możliwy do niego dostęp w trybie zapisu). Analiza dokumentacji do samby pokazuje wiele możliwości uruchomienia dowolnego polecenia z uprawnieniami root w OS, m.in.:
root preexec (S) This is the same as the preexec parameter except that the command is run as root. This is useful for mounting filesystems (such as CDROMs) when a connection is opened.
Jak widać, poza montowaniem CDROM-ów, opcja to może służyć do analizy routerów ;-) Zmodyfikowany plik smb.conf wygląda tak:
/tmp/szel to po prostu binarka netcat skompilowana na architekturę MIPS oraz umieszczona na routerze za pomocą ftp (korzystając z wcześniejszej podatności). Pozostaje już tylko finalny test:
Interaktywny root-shell to zawsze ciekawy wynik, jednak jak się to może przydać do analizy przypadków takich jak ten?
Zobaczmy jak wyglądają wybrane ciągi znakowe w binarce httpd (którą można np. pobrać z wykorzystaniem wcześniejszego tricku z ftp):
Widzimy tutaj m.in. ciąg start_art.html – ale skąd wiadomo co się dzieje po jego uruchomieniu z przeglądarki? Zobaczmy w takim działające na routerze procesy (po wpisaniu w przeglądarkę: http://192.168.0.1/userRpmNatDebugRpm26525557/start_art.html):
Teraz jest wszystko jasne: 192.168.0.100 to mój adres IP, router pobiera nart.out i robi na nim chmod 777 a następnie uruchamia jako root…
–Michał Sajdak (michal.sajdak<at>securitum.pl)