科学&テクノロジー

パート 3 – RCE の DLL ロード チェーン

9月 22, 2024 / nipponese

1727027588
2024-09-20 16:18:51

[1]コードはランダムな一時ディレクトリ内のすべてのファイルのリストを取得します。

[2]それらのファイルを反復処理し、 [3] それらを削除します。

[4]ディレクトリ全体が削除されます。 2番目の引数は falseこれは、ディレクトリ削除操作が再帰的ではないことを意味し、後でこれを悪用することになります。

私が徹底的に分析したところ、 DumpDataReader コンストラクターを見ると、これをファイル書き込みプリミティブとして使用するにはいくつかの障害があることに気付きました。

• 末尾が dmp特定の名前のファイルをドロップする必要があるのに対し、 FUSE.Paxos.dllDLL 読み込みガジェットにハードコードされているとおりです。
• ファイルは抽出後すぐに削除されます。
• ファイルは GUID を含むパスに抽出されますが、そのパス名を予測することはできません。そのため、DLL を読み込むガジェットへの完全なパスを指定する必要があります。
• 攻撃者の文字列(パス)は、 File.Exists後ほど、これがどのように問題となるかを見ていきます。
• 複数のファイルを抽出する必要がある場合があります。この場合も、若干の問題が発生することがあります。以下で説明します。

リストがかなり長いので、この時点ではガジェットは役に立たないように見えます。しかし、 expand 呼び出し自体は 引数注入に対して脆弱私は遊び始めました expand さまざまな引数をテストしたところ、この挿入は上記のすべての制限を回避するのに十分であることが判明しました。それでは、その方法を見てみましょう。

1. DumpDataReader: DMP以外の拡張子を持つファイルの抽出

回避したい最初の制限は、ファイル名が以下で終わらない限りファイルの抽出を禁止するものです。 dmpこれは、-F スイッチが expand ユーティリティ:

expand -F:*dmp attacker-path C:WindowsTemp

ファイルを考えてみましょう f.cab 悪意のある FUSE.Paxos.dllそれを抽出して名前を保存することはできないはずです。 -F:*dmp 議論。遊んでいるうちに、どちらかが -r または -i 提供される expand-F 引数は完全に無視されます!次のスクリーンショットでは、 -i 口論。

#パート #RCE #の #DLL #ロード #チェーン