MySQL File priv to SSRF/RCE

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

To jest podsumowanie technik MySQL/MariaDB/Percona z https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Server-Side Request Forgery (SSRF) za pomocą funkcji SQL

Podczas eksploracji wycieku danych SQL Out of Band, funkcja LOAD_FILE() jest często wykorzystywana do inicjowania żądań sieciowych. Jednak ta funkcja jest ograniczona przez system operacyjny, na którym działa, oraz konfiguracje startowe bazy danych.

Zmienna globalna secure_file_priv, jeśli nie jest ustawiona, domyślnie przyjmuje wartość /var/lib/mysql-files/, co ogranicza dostęp do plików do tego katalogu, chyba że zostanie ustawiona na pusty ciąg znaków (""). Ta modyfikacja wymaga zmian w pliku konfiguracyjnym bazy danych lub parametrach startowych.

Jeśli secure_file_priv jest wyłączone ("") i zakładając, że plik i uprawnienia file_priv są odpowiednie, możliwe jest odczytywanie plików spoza wyznaczonego katalogu. Jednak możliwość wykonywania przez te funkcje wywołań sieciowych zależy w dużej mierze od systemu operacyjnego. W systemach Windows, wywołania sieciowe do ścieżek UNC są możliwe dzięki zrozumieniu przez system operacyjny konwencji nazewnictwa UNC, co potencjalnie prowadzi do wycieku skrótów NTLMv2.

Ta metoda SSRF jest ograniczona do portu TCP 445 i nie pozwala na modyfikację numeru portu, ale można jej użyć do uzyskania dostępu do udziałów z pełnymi uprawnieniami do odczytu i, jak wykazano w wcześniejszych badaniach, do kradzieży skrótów w celu dalszego wykorzystania.

Wykonywanie zdalnego kodu (RCE) za pomocą funkcji zdefiniowanych przez użytkownika (UDF)

Bazy danych MySQL umożliwiają korzystanie z funkcji zdefiniowanych przez użytkownika (UDF) z zewnętrznych plików bibliotek. Jeśli te biblioteki są dostępne w określonych katalogach lub w systemowym $PATH, można je wywołać wewnątrz MySQL.

Ta technika umożliwia wykonywanie żądań sieciowych/HTTP za pomocą UDF, pod warunkiem spełnienia kilku warunków, w tym dostępu do zapisu do @@plugin_dir, ustawienia file_priv na Y i wyłączenia secure_file_priv.

Na przykład biblioteka lib_mysqludf_sys lub inne biblioteki UDF umożliwiające żądania HTTP mogą być ładowane w celu wykonania SSRF. Biblioteki muszą zostać przesłane na serwer, co można osiągnąć poprzez kodowanie zawartości biblioteki w formacie szesnastkowym lub base64, a następnie zapisanie jej w odpowiednim katalogu.

Proces różni się, jeśli @@plugin_dir nie jest zapisywalny, zwłaszcza dla wersji MySQL powyżej v5.0.67. W takich przypadkach należy użyć alternatywnych ścieżek, które można zapisywać.

Automatyzację tych procesów można ułatwić za pomocą narzędzi takich jak SQLMap, które obsługują wstrzykiwanie UDF, a dla ślepych wstrzyknięć SQL można wykorzystać przekierowanie wyjścia lub techniki przemytu żądań DNS.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated