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
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 ;)
–ms
„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
racja, fixed
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”.