Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Banalny 0-day w phpMyAdminie – przy pewnych warunkach atakujący może kasować całe bazy danych
O problemie doniósł the Hacker News. Całość do podatność klasy CSRF (czyli zmuszenie przeglądarki ofiary do wykonania jakiejś nieautoryzowanej akcji; w naszej książce mamy cały rozdział o tym problemie):
W zasadzie widać co tutaj się dzieje. Wystarczy osadzić tego typu obrazek na jakiejś stronie (np. na sekuraku) – oraz umieścić stosowną nazwę domenową serwera (lub IP), gdzie znajduje się phpMyAdmin. Jeśli ktoś jest tam zalogowany, np. na innym tabie przeglądarki, ta ostatnia automatycznie wykona żądanie HTTP do zasobu wskazanego w src (nie jest tu nawet wymagany JavaScript). Ofiara była zalogowana, więc żądanie nie wymaga uwierzytelnienia.
–ms
Hmm no tak ale jest to atak na przeglądarkę internetową, a nie samo phpMyAdmin rzeczy samej.
Można teoretyzować, choć CSRF to klasyfikuje się jako podatność webowa.
Skrypt php powinien sprawdzić nagłówek Referer żeby nie dopuszczać poleceń z poza domeny. Ale jak można robić takie błędy po tylu latach istnienia tego projektu.
Trzymanie phpmyadmina na produkcyjnym serwerze w katalogu o standardowej nazwie jest proszeniem się o włamanie.
Najlepiej porządna ochrona przed CSRF (tokeny), bo Referer jest dyskusyjny :-)
„Ofiara była zalogowana, więc żądanie nie wymaga uwierzytelnienia”
Nie „nie wymaga uwierzytelnienia” tylko zostanie uwierzytelnione
Czy takie żądanie wymaga uwierzytelnienia w momencie wysłania? Nie, więc „żądanie nie wymaga uwierzytelnienia” :-)
Mi się wydaje, że jednak żądanie jest uwierzytelniane przy pomocy ciasteczek sesyjnych które załącza przeglądarka. Inaczej nie byłoby konieczne wcześniejsze logowanie ;)
Polecam https://sekurak.pl/czym-jest-podatnosc-csrf-cross-site-request-forgery/ :)