Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

SQL injection bez uwierzytelnienia w Magento – można pobrać całą bazę danych

29 marca 2019, 08:51 | W biegu | komentarze 3

Wiele osób twierdzi, że SQL injection umarło dawno temu i każdy wie jak się przed tym zabezpieczać. Z naszego doświadczenia podczas pentestów widzimy, że różnie z tym jest.

Tym razem wykryto nie wymagający uwierzytelnienia SQL injection w najpopularniejszej globalnie platformie e-commerce – Magento. Oficjalnie twórcy chwalą się 300 000 sklepami korzystającymi z systemu.

Co można zrobić? Po prostu wyciągnąć bez uwierzytelnienia całą bazę (fani RODO się ucieszą ;) – w tym zahashowane hasła użytkowników (np. admina…), dane osobowe, dane o zamówieniach, parametryzacje sklepu, itp.

Podatność załatano w wersji 2.3.1 (a zajęło to 4 miesiące od zgłoszenia!). Jest również łata do poprzednich linii (2.2.x, 2.1.x oraz nawet 1.x). Badacze pokazują po prostu jeden prosty URL, który wykorzystuje bez uwierzytelnienia SQL injection. Dla uczciwości wskazują, że ten URL działa w Magento 2.2.x oraz 2.3.x, choć core problemu istniał od Magento 1.x.

Jak sprawdzić czy byliśmy zaatakowani tym SQLi? Warto w logach serwera www poszukać dostępu do zasobu: /catalog/product_frontend_action/synchronize. Normalnie występuje to bardzo rzadko, a w exploicie – zawsze ;)

Zauważcie, że badacze opublikowali pełen PoC zaledwie 3 dni po wydaniu patcha (z drugiej strony Magento łatało buga 4 miesiące!). Zapewne 'źli panowie’ mają już gotowego exploita – czy na podstawie analizy łaty czy na podstawie właśnie opublikowanego researchu. Nie podlinkujemy jeszcze przez kilka chwil pełnego exploita i pełnych szczegółów (choć mamy to przygotowane) – ale zapewniamy: exploit jest bardzo prosty i nie macie wiele czasu na łatanie.

–ms

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



Komentarze

  1. Magda

    „Warto w logach serwera www poszukać dostępu do zasobu: /catalog/product/frontend_action_synchronize”

    Prawidłowy URL to jest /catalog/product_frontend_action/synchronize

    Odpowiedz
    • racja, fixed

      Odpowiedz
      • Tak naprawdę oba URL-e odpalą ten sam controller. Również np. „/catalog/product_frontend/action_synchronize”. Sugeruję robić check np. na słowo „synchronize”.

        Odpowiedz

Odpowiedz