Żądny wiedzy? Wbijaj na Mega Sekurak Hacking Party w maju! -30% z kodem: majearly

Opis błędu CVE-2018-0296 – ominięcie uwierzytelnienia w webinterfejsie Cisco ASA

15 czerwca 2018, 00:55 | Teksty | komentarze 2
W tekście opisany jest błąd CVE-2018-0296 – upubliczniony 6 czerwca przez Cisco; dotyczący urządzeń Cisco ASA. Oficjalnie podatność została zaklasyfikowana jako Denial Of Service, choć nasze zgłoszenie dotyczyło innego typu błędu. Szczegóły poniżej.

Słowem wstępu, urządzenie Cisco ASA (Adaptive Security Appliance) to bardzo popularne urządzenie, będące często częścią infrastruktury wielu dużych i mniejszych firm, pełniąc rolę VPN-a lub firewalla. Często też natykamy się na nie podczas testów penetracyjnych.

Przedstawione niżej informacje zostały przedstawione wyłącznie w celach edukacyjnych. Nie należy ich używać na żywych systemach bez pozwolenia właściciela.

Urządzenie ASA może wystawiać interfejs webowy na porcie 443. Domyślnie zazwyczaj zobaczymy tylko panel do logowania (Rys 1.).

Rys 1. Panel logowania Cisco ASA

Rys 1. Panel logowania Cisco ASA

Analizując komunikację HTTP, zauważyłem, że zasadniczo ASA odnosi się do zasobów w dwóch katalogach: /+CSCOU+/  i /+CSCOE+/ . Podstrony wewnątrz /+CSCOE+/  mogą wymagać uwierzytelnienia, z kolei te znajdujące w środku /+CSCOU+/  uwierzytelnienia nie wymagają nigdy.

Pomyślałem, że oprogramowanie w takim urządzeniu może być napisane dość naiwnie – i decyzję, czy uwierzytelnienie jest konieczne, podejmować na podstawie początku ścieżki. Sprawdźmy to.

W pierwszym kroku próbuję skorzystać z endpointu /+CSCOE+/files/file_list.json  w sposób standardowy (Rys 2.).

Rys 2. Próba dostępu do chronionej ścieżki kończy się przekierowaniem

Rys 2. Próba dostępu do chronionej ścieżki kończy się przekierowaniem

Jak widać, w odpowiedzi zostaję przekierowany do strony logowania. Spróbujmy zatem podmienić ścieżkę na następującą: /+CSCOU+/../+CSCOE+/files/file_list.json  (Rys 3).

Rys 3. Obejście sprawdzenia uwierzytelnienia

Rys 3. Obejście sprawdzenia uwierzytelnienia

W ten oto prosty sposób udało się ominąć uwierzytelnienie :)

Okazuje się, że za pomocą file_list.json  można wylistować listę plików widoczną z poziomu webinterfejsu. Ciekawie wygląda np. katalog sessions (Rys 4.), a po wejściu na jedną z sesji, można się dowiedzieć jaki identyfikator użytkownika jest z nią powiązany (Rys 5.). To teraz wiadomo już, czyje hasło można próbować łamać ;)

Rys 4. Listing zawartości katalogu /sessions

Rys 4. Listing zawartości katalogu /sessions

Rys 5. Wydobycie loginu zalogowanego użytkownika

Rys 5. Wydobycie loginu zalogowanego użytkownika

Opis błędu przez Cisco

Błąd został zgłoszony do Cisco właśnie na takim przykładzie jak powyżej, tj. na możliwości uzyskania informacji o zalogowanych użytkownikach. Oficjalnie jednak podatność została opisana w następujący sposób:

A vulnerability in the web interface of the Cisco Adaptive Security Appliance (ASA) could allow an unauthenticated, remote attacker to cause an affected device to reload unexpectedly, resulting in a denial of service (DoS) condition. It is also possible on certain software releases that the ASA will not reload, but an attacker could view sensitive system information without authentication by using directory traversal techniques.

Z opisu wynika, że techniki directory traversal mogą zostać rzeczywiście wykorzystane, natomiast głównym skutkiem podatności jest Denial-of-Service, który przez nas nie został zgłoszony.

Najprawdopodobniej podczas analizy podatności, inżynierowie Cisco odkryli, że istnieje inna podstrona, do której odwołanie skutkuje unieruchomieniem urządzenia.

Niezależnie od tego, jakie dokładnie skutki niesie za sobą ta podatność, wszystkich adminów urządzeń Cisco zachęcamy do jak najszybszych aktualizacji.

— Michał Bentkowski, hakuje w Securitum

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. nobody

    Na starszym sofcie (wersja z ~2016 roku) nie da się tego ataku przeprowadzić, ale DoS działa pięknie chociaż wymaga uwierzytelnienia (wystarczyło w URLu podać dwie kropki, ASA się zawiesiła i zrestartowała)

    Odpowiedz
    • Maciej

      W switach alcatela znalazłem z kolegą podobny błąd. Tzn daje podobne efekty z tym, że wystarczy wpisać odpowiedni URL, nie znając loginu ani hasła można zrestartowac urządzenie do defaultowych ustawien :D Zgłosiliśmy do ALU w grudniu(2017) ale nie wiem czy naprawili, może wam podesłać szczegóły?

      Odpowiedz

Odpowiedz na Maciej