Przednia furtka, a w zasadzie otwarte wrota w ruterze Netgear

dodał 23 października 2013 o 22:34 w kategorii Wpadki  z tagami:
Przednia furtka, a w zasadzie otwarte wrota w ruterze Netgear

Często opisujemy tylne furtki w oprogramowaniu urządzeń sieciowych. Po co komu jednak tylna furtka skoro wrota dostępu są szeroko otwarte? W niektórych modelach ruterów Netgear można jednym linkiem na stałe wyłączyć uwierzytelnienie.

Zach Cutlip, badacz zajmujący się bezpieczeństwem urządzeń sieciowych, odkrył banalnie prostą metodę trwałego wyłączenia potrzeby uwierzytelnienia w celu uzyskania dostępu do panelu administracyjnego w ruterze Netgear WNDR3700v4. Co prawda trudno w to uwierzyć, ale wystarczy raz otworzyć link:

by urządzenie nigdy – nawet po restarcie! – nie zapytało już o login i hasło użytkownika. Jakby tego było mało, otwarcie linka:

wyświetla niezalogowanemu użytkownikowi nazwę wszystkich skonfigurowanych sieci i ich hasła dostępu jawnym tekstem. Jeśli jesteście ciekawi, skąd biorą się takie kwiatki – zapraszamy do lektury.

Nie ma to jak wyjątki

Zacznijmy od tego, że w oprogramowaniu rutera znajduje się plik /usr/sbin/net-cgi, który odpowiada za wykonywanie wywołań serwera www. Ten sam plik odpowiada także za określenie, które strony wymagają uwierzytelnienia, a które go nie potrzebują. Jednym ze sprawdzanych warunków jest weryfikacja, czy nazwa ścieżki zaczyna się od ciągu „”BRS_”. Plików, spełniających ten warunek, znajduje się na serwerze www kilkadziesiąt i odpowiadają one głównie za obsługę błędów i konfiguracji urządzenia. Wśród nich znajduje się wspomniany już BRS_success.html, którego wywołanie daje taki efekt:

Hasła dostępu do sieci

Hasła dostępu do sieci

Gdy jeden wyjątek nie wystarcza

Drugim ciekawym wyjątkiem od procesu uwierzytelnienia jest weryfikacja, czy przez przypadek użytkownik nie otwiera pliku unauth.cgi lub securityquestions.cgi. W założeniu pliki te mają być dostępne bez potrzeby uwierzytelnienia, jednak ze względu na konstrukcję sprawdzanego warunku, wystarczy dopisać odpowiedni ciąg do otwieranego linku, by przejść poprawnie weryfikację, np. otwarcie linku

sprawi, że serwer nie zapyta użytkownika o login i hasło. Jest już nieźle, a będzie jeszcze nieźlej!

Do trzech razy sztuka

Trzecim sprawdzanym warunkiem jest bowiem weryfikacja „stanu rutera”. Jeśli w konfiguracji NVRAM zmienna hijack_process jest różna od „3”, serwer nie pyta o login i hasło. Celem tego warunku jest umożliwienie dostępu do interfejsu administratora bez znajomości hasła w momencie pierwszego uruchomienia rutera. Po zakończeniu konfiguracji wartość hijack_process wynosi 3. Cel wprowadzenia wyjątku szczytny  – nie każdy użytkownik spojrzy w instrukcję, by tam znaleźć domyślne hasło administratora. Gorzej niestety z realizacją, ponieważ na serwerze znajduje się plik

którego wywołanie ustawia wartość zmiennej hijack_process na „2”. Jak może pamiętacie, wywołanie plików zaczynających się od „BRS_” nie wymaga uwierzytelnienia. Otwarcie tego pliku powoduje zapisanie w konfiguracji NVRAM (przeżywającej restart urządzenia!) wartości zmiennej, która sprawia, że wszystkie wywołania do interfejsu administracyjnego omijają proces uwierzytelnienia użytkownika. Oczywiście ustawienie tej zmiennej nie ma żadnego innego wpływu na możliwość korzystania z urządzenia. Amen.

Błąd znajduje się co najmniej w urządzeniu WNDR3700v4 (oprogramowanie 1.0.1.32) oraz, co odkryto niezależnie kilka miesięcy wcześniej, także w ruterze WNDR4700 (oprogramowanie V1.0.0.34).