MySQL File priv to SSRF/RCE

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする

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

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

SQLのアウトオブバンドデータ流出の探索において、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が書き込み可能でない場合、特にMySQLのバージョンがv5.0.67を超える場合、代替の書き込み可能なパスを使用する必要があります。

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

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする

Last updated