MySQL File priv to SSRF/RCE

AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

これはhttps://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/からのMySQL/MariaDB/Perconaテクニックの要約です

SQL関数を使用したサーバーサイドリクエストフォージェリ(SSRF)

SQL Out of Bandデータの外部流出を探索する中で、LOAD_FILE()関数はネットワークリクエストを開始するために一般的に使用されます。ただし、この関数は、それが動作するオペレーティングシステムとデータベースの起動構成によって制約されます。

secure_file_privグローバル変数は、未設定の場合、/var/lib/mysql-files/にデフォルトで設定され、このディレクトリへのファイルアクセスを制限します。この調整には、データベースの構成ファイルまたは起動パラメータの変更が必要です。

secure_file_privが無効("")であり、必要なファイルとfile_priv権限が付与されていると仮定すると、指定されたディレクトリの外のファイルを読み取ることができます。ただし、これらの関数がネットワーク呼び出しを行う能力は、オペレーティングシステムに大きく依存します。Windowsシステムでは、UNCパスへのネットワーク呼び出しが可能です。これは、UNC命名規則を理解しているため、NTLMv2ハッシュの流出につながる可能性があります。

このSSRFメソッドはTCPポート445に限定され、ポート番号の変更は許可されませんが、完全な読み取り権限を持つ共有へのアクセスや、以前の研究で示されたように、ハッシュの盗難などに利用できます。

ユーザー定義関数(UDF)を介したリモートコード実行(RCE)

MySQLデータベースでは、外部ライブラリファイルからユーザー定義関数(UDF)の使用が提供されます。これらのライブラリが特定のディレクトリ内またはシステムの$PATH内でアクセス可能であれば、MySQL内から呼び出すことができます。

このテクニックを使用すると、@@plugin_dirへの書き込みアクセス、file_privYに設定されていること、およびsecure_file_privが無効であることなど、いくつかの条件が満たされる場合に、UDFを介してネットワーク/HTTPリクエストを実行できます。

たとえば、lib_mysqludf_sysライブラリや他のHTTPリクエストを可能にするUDFライブラリをロードしてSSRFを実行できます。ライブラリはサーバーに転送する必要があり、これはライブラリの内容を16進数またはBase64エンコードして適切なディレクトリに書き込むことで達成できます。

@@plugin_dirが書き込み可能でない場合、特にv5.0.67以上のMySQLバージョンの場合、プロセスは異なります。このような場合は、書き込み可能な代替パスを使用する必要があります。

これらのプロセスの自動化は、UDFインジェクションをサポートするSQLMapなどのツールによって容易に行うことができ、盲目的なSQLインジェクションの場合、出力リダイレクションやDNSリクエストスマグリング技術を利用することができます。

AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated