0day na MySQL – podniesienie uprawnień na Linuksie

0day na MySQL – podniesienie uprawnień na Linuksie

    przez -
    8 401
    MySQL
    King Cope, który jest znany z tworzenia exploitów, opublikował sposób na podniesienie uprawnień w bazie MySQL na systemie Linux. Pozwala on na dodanie do bazy danych użytkownika o prawach administratora. Do wykorzystania exploita, atakujący musi posiadać użytkownika w bazie danych z przywilejami FILE. Dzięki temu napastnik może stworzyć plik w systemie o uprawnieniach użytkownika mysql.

    Następnie atakujący tworzy TRIGGER na dowolne zdarzenie w bazie. Zazwyczaj TRIGGER doczepiany jest do użytkownika i wykonywany na jego prawach. Ponieważ jednak mamy możliwość zapisu do plików dzięki FILE, możemy dodać dowolną treść do pliku TRG (plik triggera). Atakujący zapisuje tam zapytanie SQL, które uruchamia się jako root@localhost.

    Następnie należy spowodować uszkodzenie serwera MySQL i jego wznowienie za pomocą przepełnienia stosu, aby plik TRIGGERA został poprawnie zaczytany i rozpoznany. Wykonanie dowolnego zapytania SQL, które uruchamia TRIGGER pozwoli na wykonanie zapytania jako root@localhost.

    Opublikowany przez Kinga exploit wykonuje następujące kroki:

    1. Podłącza się do serwera MySQL
    2. Tworzy tabelę dla TRIGGERa
    3. Tworzy plik dla TRIGGERa: /var/lib/mysql/<bazadanych>/<tabela>.TRG
    4. Poprzez wywołanie przepełnienia stosu, zmusza serwer MySQL do awarii i przeładowania się
    5. Dodaje wartość do tabeli aby wywołać TRIGGER
    6. TRIGGER dodaje wszystkie uprawnienia dla bieżącego użytkownika w mysql.user
    7. Ponowne uszkodzenie i przeładowanie MySQLa
    8. Dodanie nowego użytkownika o uprawnieniach administratora
    9. Ponowne uszkodzenie i przeładowanie MySQLa
    10. Podłącza się do bazy danych jako nowy użytkownik
    11. Wykonuje zrzut loginów oraz hashy haseł z tabeli mysql.user

    Błąd został sprawdzony na systemach:

    • Debian Lenny (mysql-5.0.51a)
    • OpenSuSE 11.4 (5.1.53-log)