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 it
This commit is contained in:
parent
9e77bd9d16
commit
06020cad87
@ -1,15 +1,10 @@
|
|||||||
# 3306 - Pentesting Mysql
|
# 3306 - Pentesting Mysql
|
||||||
|
|
||||||
{{#include /banners/hacktricks-training.md}}
|
|
||||||
|
|
||||||
## Riferimenti
|
|
||||||
- [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}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
## **Informazioni di base**
|
## **Informazioni di base**
|
||||||
|
|
||||||
**MySQL** può essere descritto come un **Sistema di Gestione di Database Relazionali (RDBMS)** open source disponibile senza costi. Funziona sul **Linguaggio di Query Strutturato (SQL)**, consentendo la gestione e la manipolazione dei database.
|
**MySQL** può essere descritto come un **Sistema di Gestione di Database Relazionali (RDBMS)** open source disponibile gratuitamente. Funziona con il **Linguaggio di Query Strutturato (SQL)**, consentendo la gestione e la manipolazione dei database.
|
||||||
|
|
||||||
**Porta predefinita:** 3306
|
**Porta predefinita:** 3306
|
||||||
```
|
```
|
||||||
@ -118,7 +113,7 @@ Puoi vedere nella documentazione il significato di ciascun privilegio: [https://
|
|||||||
|
|
||||||
Abusando del classico `INTO OUTFILE` è possibile ottenere *l'esecuzione di codice arbitrario* su obiettivi che successivamente eseguono script **Python**.
|
Abusando del classico `INTO OUTFILE` è possibile ottenere *l'esecuzione di codice arbitrario* su obiettivi che successivamente eseguono script **Python**.
|
||||||
|
|
||||||
1. Usa `INTO OUTFILE` per creare un file personalizzato **`.pth`** all'interno di qualsiasi directory caricata automaticamente da `site.py` (ad es. `.../lib/python3.10/site-packages/`).
|
1. Usa `INTO OUTFILE` per creare un file personalizzato **`.pth`** all'interno di qualsiasi directory caricata automaticamente da `site.py` (ad esempio `.../lib/python3.10/site-packages/`).
|
||||||
2. Il file `.pth` può contenere una *singola riga* che inizia con `import ` seguita da codice Python arbitrario che verrà eseguito ogni volta che l'interprete viene avviato.
|
2. Il file `.pth` può contenere una *singola riga* che inizia con `import ` seguita da codice Python arbitrario che verrà eseguito ogni volta che l'interprete viene avviato.
|
||||||
3. Quando l'interprete viene eseguito implicitamente da uno script CGI (ad esempio `/cgi-bin/ml-draw.py` con shebang `#!/bin/python`), il payload viene eseguito con gli stessi privilegi del processo del server web (FortiWeb lo ha eseguito come **root** → RCE completa pre-autenticazione).
|
3. Quando l'interprete viene eseguito implicitamente da uno script CGI (ad esempio `/cgi-bin/ml-draw.py` con shebang `#!/bin/python`), il payload viene eseguito con gli stessi privilegi del processo del server web (FortiWeb lo ha eseguito come **root** → RCE completa pre-autenticazione).
|
||||||
|
|
||||||
@ -153,7 +148,7 @@ uid=0(root) gid=0(root) groups=0(root)
|
|||||||
|
|
||||||
## MySQL lettura arbitraria di file da parte del client
|
## MySQL lettura arbitraria di file da parte del client
|
||||||
|
|
||||||
In realtà, quando provi a **caricare dati localmente in una tabella** il **contenuto di un file**, il server MySQL o MariaDB chiede al **client di leggerlo** e inviare il contenuto. **Quindi, se riesci a manomettere un client mysql per connetterti al tuo stesso server MySQL, puoi leggere file arbitrari.**\
|
In realtà, quando provi a **caricare dati localmente in una tabella** il **contenuto di un file**, il server MySQL o MariaDB chiede al **client di leggerlo** e inviare il contenuto. **Quindi, se riesci a manomettere un client mysql per connetterti al tuo server MySQL, puoi leggere file arbitrari.**\
|
||||||
Si prega di notare che questo è il comportamento utilizzando:
|
Si prega di notare che questo è il comportamento utilizzando:
|
||||||
```bash
|
```bash
|
||||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||||
@ -213,9 +208,9 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
|||||||
```
|
```
|
||||||
### Privilege Escalation via library
|
### Privilege Escalation via library
|
||||||
|
|
||||||
Se il **server mysql è in esecuzione come root** (o un altro utente con privilegi superiori) puoi farlo eseguire comandi. Per questo, devi utilizzare **funzioni definite dall'utente**. E per creare una funzione definita dall'utente avrai bisogno di una **libreria** per il sistema operativo su cui è in esecuzione mysql.
|
Se il **server mysql è in esecuzione come root** (o un altro utente con privilegi superiori), puoi farlo eseguire comandi. Per questo, devi utilizzare **funzioni definite dall'utente**. E per creare una funzione definita dall'utente avrai bisogno di una **libreria** per il sistema operativo che esegue mysql.
|
||||||
|
|
||||||
La libreria malevola da utilizzare può essere trovata all'interno di sqlmap e dentro metasploit eseguendo **`locate "*lib_mysqludf_sys*"`**. I file **`.so`** sono librerie **linux** e i **`.dll`** sono quelli per **Windows**, scegli quello di cui hai bisogno.
|
La libreria malevola da utilizzare può essere trovata all'interno di sqlmap e all'interno di metasploit eseguendo **`locate "*lib_mysqludf_sys*"`**. I file **`.so`** sono librerie **linux** e i **`.dll`** sono quelli di **Windows**, scegli quello di cui hai bisogno.
|
||||||
|
|
||||||
Se **non hai** quelle librerie, puoi **cercarle**, oppure scaricare questo [**codice C per linux**](https://www.exploit-db.com/exploits/1518) e **compilarlo all'interno della macchina vulnerabile linux**:
|
Se **non hai** quelle librerie, puoi **cercarle**, oppure scaricare questo [**codice C per linux**](https://www.exploit-db.com/exploits/1518) e **compilarlo all'interno della macchina vulnerabile linux**:
|
||||||
```bash
|
```bash
|
||||||
@ -620,7 +615,7 @@ x$waits_global_by_latency
|
|||||||
{{#endtab}}
|
{{#endtab}}
|
||||||
{{#endtabs}}
|
{{#endtabs}}
|
||||||
|
|
||||||
## Comandi automatici HackTricks
|
## HackTricks Comandi Automatici
|
||||||
```
|
```
|
||||||
Protocol_Name: MySql #Protocol Abbreviation if there is one.
|
Protocol_Name: MySql #Protocol Abbreviation if there is one.
|
||||||
Port_Number: 3306 #Comma separated if there is more than one.
|
Port_Number: 3306 #Comma separated if there is more than one.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user