W tym tygodniu nie pisaliśmy jeszcze o błędach w domowych ruterach, a to już wtorek, więc czas nadrobić zaległości. Tym razem mamy dla Was trywialne wstrzykiwanie poleceń w licznych modelach ruterów D-Linka oraz TRENDnetu.
Zanim ruszycie do Shodana szukać obiektów do testów spieszymy poinformować, że interfejs administracyjny w większości opisywanych poniżej modeli jest domyślnie niedostępny z sieci publicznej. Nie eliminuje to oczywiście możliwości ataku – dostęp można włączyć lub wystarczy błąd typu CSRF. Przejdźmy jednak do rzeczy.
Ping jako uniwersalne narzędzie do wstrzykiwania poleceń
Błąd, odkryty niezależnie przez dwóch badaczy, leży w wielokrotnie już atakowanym poleceniu ping. Nie wiemy czemu, ale najwyraźniej zablokowanie możliwości wstrzykiwania dowolnych poleceń wraz z prostym pingiem leży poza zakresem możliwości większości programistów tworzących rozwiązania dla domowych urządzeń sieciowych. Tym razem trzeba oddać minimum honoru programiście – polecenie ping w wersji IPv4 nie jest podatne. Co innego jednak w przypadku wersji IPv6 – tu już wyobraźni komuś zabrakło. Polecenie
curl \
-i http://192.168.0.1/ping.ccp \
--data 'ccp_act=ping_v6&ping_addr=$(telnetd -l /bin/sh)'
daje dostęp do powłoki systemowej. Oczywiście usługa ncc/ncc2 odpowiedzialna za polecenie ping działa z uprawnieniami roota, co oszczędza szukania kolejnego błędu w celu podniesienia uprawnień. Oczywiście skrypt ping.ccp dostępny jest bez potrzeby uwierzytelnienia, bo czemu pytać kogoś o hasło, skoro chce tylko wysłać pakiet ICMP. Czy to na pewno już rok 2015?
Więcej atrakcji
Choć powyżej opisany błąd jest najpoważniejszy, to nie jest jedyny. Dzięki skryptowi fwupgrade.ccp możemy bez uwierzytelnienia wgrać dowolny plik do katalogu /var/tmp. Co prawda brak uprawnień przekieruje nas do formularza logowania, ale plik i tak zostanie wgrany. Z kolei w /var/tmp znajdziemy na przykład konfigurację serwerów DNS, dzięki czemu możemy ją łatwo podmienić w taki oto sposób:
echo 'nameserver 8.8.8.8' > resolv.conf curl \ -i http://192.168.0.1/fwupgrade.ccp \ -F action=fwupgrade \ -F filename=resolv.conf \ -F [email protected]
Do tego możemy jeszcze dołożyć całą garść funkcji diagnostycznych, które także umożliwiają przejęcie kontroli nad urządzeniem i które po prostu ktoś zapomniał usunąć. Szczegóły znajdziecie w oryginalnym raporcie.
Podatne modele
Autor odkrycia potwierdził istnienie powyżej opisanych podatności w następujących modelach:
- D-Link DIR-626L (Rev A) – v1.04b04
- D-Link DIR-636L (Rev A) – v1.04
- D-Link DIR-808L (Rev A) – v1.03b05
- D-Link DIR-810L (Rev A) – v1.01b04
- D-Link DIR-810L (Rev B) – v2.02b01
- D-Link DIR-820L (Rev A) – v1.02B10
- D-Link DIR-820L (Rev A) – v1.05B03
- D-Link DIR-820L (Rev B) – v2.01b02
- D-Link DIR-826L (Rev A) – v1.00b23
- D-Link DIR-830L (Rev A) – v1.00b07
- D-Link DIR-836L (Rev A) – v1.01b03
- TRENDnet TEW-731BR (Rev 2) – v2.01b01
Prawdopodobnie – bo na podstawie obrazów z oprogramowaniem – podatność może znajdowac się także w następujących modelach:
- DIR-651A2 – v1.10NAb02
- DIR-808LA1 – v1.03b05
- DIR-810LA1 – v1.01b04
- DIR-820LA1 – v1.02b10
- DIR-826LA1 – v1.02b26
- DIR-830LA1 – v1.00b07
- DIR-836LA1 – v1.01b03
- TEW-731BRV2 – v2.00b08
- TEW-711BRV1 – v1.00b31
- TEW-810DRV1 – v1.00b19
- TEW-813DRUV1 – v1.00b23
Powoli pojawiają się aktualizacje oprogramowania, jednak nie są jeszcze dostępne dla wszystkich modeli. Zalecamy zatem instalacje alternatywnego oprogramowania tam, gdzie to tylko możliwe.
Komentarze
Pierwsze zdanie najlepsze w całym artykule.
Jakby się komuś nie chciało scrollować ;d to zdanie to:
„W tym tygodniu nie pisaliśmy jeszcze o błędach w domowych ruterach, a to już wtorek, więc czas nadrobić zaległości.”
Przypomina mi to, że dawno, dawno temu była taka strona: Dziura Tygodnia. Dotyczyła systemu HP-UX ;)