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

Krytyczna luka w Fortra MFT GoAnywhere. Bez uwierzytelnienia można otrzymać uprawnienia admin.

24 stycznia 2024, 11:59 | W biegu | 0 komentarzy
Tagi: , , , ,

W marcu ubiegłego roku informowaliśmy o możliwości wykonania kodu bez uwierzytelnienia (unauth RCE) w aplikacji GoAnywhere MFT. Aby móc skutecznie wyeksploitować podatność, atakujący musiał mieć dostęp do portalu administracyjnego, który w większości przypadków dostępny będzie tylko w sieci wewnętrznej (wystawienie takiego panelu do Internetu nie jest dobrą praktyką). Wtedy podatność ta była szeroko wykorzystywana przez ransmoware Clop.

Jak opisuje Fortra, GoAnywhere Managed File Transfer to rozwiązanie mające na celu umożliwić prostą i bezpieczną wymianę danych między i wewnątrz organizacji. Ma to pomóc dostosować się do regulacji prawnych takich jak GDPR (czyli RODO), HIPAA, PCI DSS i tym podobnych. 

W poniedziałek, Fortra opublikowała informację, że nowa podatność oznaczona identyfikatorem CVE-2024-0204 pozwala na obejście procesu uwierzytelniania (authentication bypass). Szczegóły podatności zostały opisane na blogu horizon3.ai. Producent, jako sposób na tymczasowe załatanie podatności, podaje usunięcie pliku InitialAccountSetup.xhtml oraz restart usługi. 

Badaczom udało się sprawdzić (co w przypadku Javy nie wymaga żmudnej inżynierii wstecznej), że plik ten jest powiązany z klasą com.linoma.ga.ui.admin.users.InitialAccountSetupForm, która jest implementowana w GoAnywhere/lib/gamft-7.4.0.jar.

Mapowanie w form-faces.xml

Podczas instalacji oprogramowanie pozwala na stworzenie pierwszego użytkownika z uprawnieniami administratora:

Jednak gdy taki użytkownik istnieje już w systemie, to zapytanie jest filtrowane przez metodę doFilter(), przez którą przechodzą wszystkie zapytania kierowane do aplikacji.

Metoda doFilter() sprawdzająca, czy w systemie istnieje już administrator

Obejście tych sprawdzeń okazało się niemożliwe. Jednak sprawdzając często spotykane błędy w aplikacjach uruchomionych na serwerze Apache Tomcat, odnaleziono powód występowania podatności. Problem leży w procesie normalizacji ścieżki w przypadku wystąpienia sekwencji /..;/. Jeśli zapytanie zawiera taki ciąg, to nie jest odpowiednio odfiltrowywanie, a to pozwala na dotarcie do formularza dodawania użytkownika:

https://192.168.1.1:8001/goanywhere/images/..;/wizard/InitialAccountSetup.xhtml

Obejście filtra pozwala na stworzenie kolejnego użytkownika

PoC został opublikowany na portalu GitHub. Według producenta podatne są wersje Fortra GoAnywhere MFT 6.x od 6.0.1 oraz Fortra GoAnywhere MFT 7.x przed 7.4.1. 

Użytkownikom jak zwykle zalecamy aktualizację, a także zadbanie o to, aby nie wystawiać do sieci paneli takich jak ten. Jeśli jest to zupełnie konieczne, dostęp powinien być realizowany z użyciem VPN-ów. 
Luka ma potencjał na bycie wykorzystywaną przez automaty. Administratorom zalecamy sprawdzić, czy nie ma nowych uprzywilejowanych użytkowników w systemie (przez Users -> Admin Users). Informacje o potencjalnym ataku można też wyciągnąć z logów transakcji bazy danych (\GoAnywhere\userdata\database\goanywhere\log\*.log).

~fc

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



Komentarze

Odpowiedz