
Windows上の7-Zip 21.07以前では、.7z拡張子のファイルをヘルプ>コンテンツ領域にドラッグすると、権限昇格およびコマンド実行が可能になります。
権限昇格攻撃に関するPoCコードはどこにも公開していません。見つかったPoCコードは権限昇格とは関係ありません。ご了承ください。
7-Zipは、自由で無料のファイルアーカイバです。7-Zipのコマンドプロンプト版はUnix系システム向けに設計されており、AmigaOSもその中に含まれます。また、DOS用のDost PortやHX-DOS拡張機能を使用してWindowsコマンドプロンプトで実行することも可能です。
少しだけトルコ語で書きます。あなたもトルコ語を学んでください。
まず、脆弱性を発見した経緯について述べたいと思います。WinRAR上でXXE脆弱性を引き起こすペイロードを見ました。同時にHTML Helperファイルを使用して、JavaScript経由でActiveXObjectとWScript.Shellを利用してコマンドを実行できるようにしていました。これはlolbinで使用されるHTAと何ら変わりはなく、どうすれば有利に転じられるかを考えました。
(https://www.exploit-db.com/exploits/47526)
実際の目的は、7z、zip、rarなどの圧縮形式の拡張子をダブルクリックした後、ターゲットコンピュータからリバースシェルを取得することでした。そのためにHTML Helperファイルを使用できないかと考えていました。WinAFLで長時間ファジングを行った後、FzGM.exeにヒープオーバーフローがあることを発見しましたが、ヒープオーバーフロー後も権限は同じユーザーのままであるため意味がありませんでした。そのためCreateRemoteThreadは使用しませんでした。なぜならAPIを呼び出す必要があり、そのAPIをトリガーするためにはchmファイルが必要だったからです。ソースコードを調査したところ、特に2か所でWindows APIの呼び出し時に誤った操作があり、それが直接的な権限の問題を引き起こしていることに気付きました。この発見点は、以下の画像に示すように、FzGM.exeの下に子プロセスを作成します。通常はこのプロセスがhh.exeの下にあることを期待します。


APIをインクルードせずに関数経由で正しく設定されていれば、hh.exeの下に子プロセスが作成されることを期待していましたが、7-zip.chmファイルはそれを自身で呼び出しています。典型的な例として、7-zip.chmファイルを編集してコマンド実行を行うと確認できます。ヒープオーバーフロー後に呼び出されるAPIの権限問題に続き、7z.dllファイル内にある誤った設定を利用しました。これには長い間取り組んでいます。CreateRemoteThread()を行う意味はありません。私のペイロード内で実行し呼び出す必要があるのは、HTML Helper APIそのものではなく、7-zip経由でこのAPIがフックされるポイントであり、そのポイントを実行できることです。ただし、このペイロードはhh.exeとの統合でのみ動作するため、ドラッグアンドドロップのような機能で動作します。7-zip.chmファイルが7-zipのHELPボタンから呼び出され、そこで呼び出されたアドレスをペイロード内で権限問題のある「ベースポインタ」にリダイレクトすることで、上位ユーザーに移行します。その後の処理は、ペイロード内にpsexecが含まれており、psexec -s cmd.exeコマンドでnt authority/systemとしてシステム権限に昇格します。

PoC動画:
多くの質問はActiveX警告に関するものでした。この問題は基本的に次のように解決できます。ペイロードが実行される前に、
<'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0' -Name '1201' -Value '0' -PropertyType "DWord">
というチェックを行います。この値が1の場合はポップアップが表示され、0として新しい値が割り当てられるとバイパスされます。ただし、その時点でペイロードを実行しているユーザーにのみ影響することに注意してください。
必要な箇所は開発者に伝えており、CVEでも承認されています。自分を権威だと思い込み、私にエクスプロイトを提供すべきだというような認識が生まれることには理解できません。アップデート後に公開すると述べているにもかかわらず、アップデート前にこのような無礼が行われるのは、自分を権威と見なすことに起因していると思います。私は権限昇格攻撃のPoCコードを公開したくないかもしれません。それは私の自由意志であり、その正しさを疑問視する点については、誰が何を考えようと全く関心がありません。
第一の方法: 7-zipがアップデートされない場合、7-zip.chmファイルを削除することができます。 第二の方法: プログラム内のすべてのユーザーが読み取りおよび実行権限でアクセスできるようにする必要があります。
関連するSigmaルール: https://github.com/kagancapar/CVE-2022-29072/blob/main/7z_CVE-2022-29072.yml