mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
30 lines
3.1 KiB
Markdown
30 lines
3.1 KiB
Markdown
# MySQL File priv do SSRF/RCE
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
**To jest podsumowanie technik MySQL/MariaDB/Percona z [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**.
|
|
|
|
### Server-Side Request Forgery (SSRF) za pomocą funkcji SQL
|
|
|
|
W badaniach nad eksfiltracją danych SQL Out of Band, funkcja `LOAD_FILE()` jest powszechnie stosowana do inicjowania żądań sieciowych. Funkcja ta jest jednak ograniczona przez system operacyjny, na którym działa, oraz konfiguracje uruchamiania bazy danych.
|
|
|
|
Globalna zmienna `secure_file_priv`, jeśli nie jest ustawiona, domyślnie wskazuje na `/var/lib/mysql-files/`, ograniczając dostęp do plików tylko do tego katalogu, chyba że zostanie ustawiona na pusty ciąg (`""`). Ta zmiana wymaga modyfikacji w pliku konfiguracyjnym bazy danych lub parametrach uruchamiania.
|
|
|
|
Jeśli `secure_file_priv` jest wyłączona (`""`), a wymagane uprawnienia do plików i `file_priv` są przyznane, pliki spoza wyznaczonego katalogu mogą być odczytywane. Niemniej jednak, zdolność tych funkcji do wykonywania wywołań sieciowych jest w dużej mierze uzależniona od systemu operacyjnego. W systemach Windows wywołania sieciowe do ścieżek UNC są możliwe dzięki zrozumieniu konwencji nazewnictwa UNC przez system operacyjny, co może prowadzić do eksfiltracji hashy NTLMv2.
|
|
|
|
Metoda SSRF jest ograniczona do portu TCP 445 i nie pozwala na modyfikację numeru portu, chociaż może być używana do uzyskiwania dostępu do udziałów z pełnymi uprawnieniami do odczytu i, jak pokazano w wcześniejszych badaniach, do kradzieży hashy w celu dalszej eksploatacji.
|
|
|
|
### Zdalne Wykonanie Kodu (RCE) za pomocą Funkcji Użytkownika (UDF)
|
|
|
|
Bazy danych MySQL oferują możliwość użycia Funkcji Użytkownika (UDF) z zewnętrznych plików bibliotecznych. Jeśli te biblioteki są dostępne w określonych katalogach lub w `$PATH` systemu, mogą być wywoływane z poziomu MySQL.
|
|
|
|
Technika ta pozwala na wykonywanie żądań sieciowych/HTTP za pomocą UDF, pod warunkiem spełnienia kilku warunków, w tym dostępu do zapisu do `@@plugin_dir`, `file_priv` ustawionego na `Y` oraz wyłączenia `secure_file_priv`.
|
|
|
|
Na przykład, biblioteka `lib_mysqludf_sys` lub inne biblioteki UDF umożliwiające żądania HTTP mogą być załadowane w celu wykonania SSRF. Biblioteki muszą być przeniesione na serwer, co można osiągnąć poprzez kodowanie hex lub base64 zawartości biblioteki, a następnie zapisanie jej w odpowiednim katalogu.
|
|
|
|
Proces ten różni się, jeśli `@@plugin_dir` nie jest zapisywalny, szczególnie dla wersji MySQL powyżej `v5.0.67`. W takich przypadkach należy użyć alternatywnych ścieżek, które są zapisywalne.
|
|
|
|
Automatyzacja tych procesów może być ułatwiona przez narzędzia takie jak SQLMap, które wspierają wstrzykiwanie UDF, a w przypadku ślepych wstrzyknięć SQL mogą być wykorzystywane techniki przekierowywania wyjścia lub smugglingu żądań DNS.
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|