Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
root na TP-linku przez… kontrolę rodzicielską
W ostatnim odcinku braliśmy na warsztat 2 modele TP-Link Archer – był tam nieuwierzytelniony root. Tym razem temat trochę trudniejszy do wykrycia ale na pewno przydatny dla badaczy bezpieczeństwa TP-Linków. Weźmy tym razem do zabawy router WDR4300 (swoją drogą bardzo wdzięczny obiekt do w miarę uniwersalnych badań po dużej liczbie urządzeń tego producenta):
Czy wiecie jak zazwyczaj działa na urządzeniach sieciowych kontrola rodzicielska (np. filtrowanie URLi pod względem występowania pewnych słów kluczowych)? Zgadliście – z wykorzystaniem firewalla na działającym pod spodem Linuksie (najczęściej iptables). W interfejsie wygląda to tak:
I dalej tak:
Natomiast na routerze istnieje magiczny plik /tmp/wr741n/parent.sh (jak się można domyślić odpalany z uprawnieniami roota) o zawartości jak poniżej:
Widzicie już o co chodzi w całej zabawie? Tak jest – parametr przekazywany z interfejsu webowego, do tego skryptu nie jest w żaden sposób walidowany. No dobra, jest:
Ale tą prostą walidację kliencką można ominąć na 10 różnych sposobów, np. tak:
I finalny wynik:
Udało mi się też tym zrobić interaktywnego shella co nie jest jakoś strasznie skomplikowane – w szczególności kiedy mamy odpowiednią binarkę skompilowaną na MIPS-a (zobaczcie np. zabawy z nart.out opisywane tutaj).
Podatność została zgłoszona do TP-Link w lutym 2016.
PS
ciąg dalszy nastąpi.
–Michał Sajdak, od czasu do czasu bawi się urządzeniami sieciowymi, w wolnych chwilach realizuje testy penetracyjne w Securitum.
reboot w autostarcie – coś pięknego :)
No też się ucieszyłem, a 20 sekund później wkurzyłem. Ale przynajmniej czegoś nowego się można było nauczyć :)
NIGDY!!! Nie wpisujcie komand typu 'reboot’ 'shutdown’ 'rm-fr’ etc.
Juz lepiej 'ping’ albo 'ls’ lub 'cat’
Zadziala tak samo a bedzie mniej problemow…
Tak, tylko problem jest jak nie widać od razy wyniku (na response). Ping jest dobry, ale czasem są limity długości wstrzykiwanego ciągu (reboot – idealny ;).
sugeruję 'touch /du_a’
Błąd (brak walidacji) oczywiście pozostaje błędem, ale… jaki jest praktyczny sens takiego ataku? W ogóle można zarządzać kontrolą rodzicielską nie posiadając najwyższych uprawnień na tym urządzeniu? I w ilu przypadkach zarządza tym inna osoba, niż admin (jeśli w ogóle taka możliwość istnieje)?
Research. Mały hint na początek – np. pewne moduły do jądra na tym WDR4300 są dokładnie takie same jak na nowiutkich TP-Linkach.
No i co z tego? Nawet Tomato i pochodne mają tak, że pewne ustawienia są zapisywane w generowanych skryptach, w RAMie (folder /tmp jest tam ładowany) albo jako zmienne w NVRAM, a walidacja formularzy jest zrealizowana w JS. Aby mieć dostęp do trzewi routera trzeba być adminem, więc co to niby za „hacking”?
Patrz poprzednia odpowiedź.
Nie możesz tak pisać. Ktoś się zapętli i klops.
Tyle, że producent daje informację o licencji (GPL). W moim TP-Linku była wręcz na papierze. Więc teoretycznie możecie po prostu poprosić producenta o źródła. Inna sprawa, czy będą zgodne z używaną wersją, no i pełny, żywy ekosystem to jednak coś troszkę innego, niż źródła.
Tak czy inaczej warto zaznaczyć w artykule, że opisywana „dziura” to jedynie ciekawostka dla badaczy/testerów, bo czytając artykuł można odnieść wrażenie, że chodzi o coś innego.
W zasadzie nie tyle „root” (bo żeby go uzyskać trzeba już „roota” mieć), tylko dostęp do powłoki. Coś jak ukryte menu w niektórych switchach (i nagle „smart” switch staje się pełnoprawnym zarządzalnym…).
Z tą licencją GPL to wiesz jak jest – publikują otwarte firmwarey, ale mają trochę modułów do jądra (wydaje się że komercyjne) do których nie ma sorsów, to samo np. z serwerem http czy innymi istotnymi usługami. Chyba wg GPLa można tak robić?
TP-link to dobry cel do badań, gdzie się nie włoży rąk to się coś znajdzie. Hardware ok, ale bałbym się to zostawić z oryginalnym softem w domu.
A jakie to antenki macie podłączone do tego routera na zdjęciu?
Jakaś samoróbka? Też bym coś mocniejszego podłączył.
Yyyy, antenki zostały zdjęte i są tam gołe gniazda na anteny :) Taki domowy sposób na ograniczenie zasięgu WiFi ;)
Hehe, wieczorem po pracy to nawet kabel LAN z anteną można pomylić. :)
Kiedyś na meetupie pokazywałeś taką podatność, że wgrywało się plik w zipie na serwer i przez podgląd możliwy był directory traversal. Czy jest gdzieś na sekuraku opis tej podatności? bo jakoś się nie moge doszukać
A to chyba o to Ci chodzi: https://sekurak.pl/tp-link-httptftp-backdoor/ ?
nie to nie to :(