
CVE-2023-38146 "ThemeBleed" のPythonを使った概念実証
gabe_k が C# による初期 PoC を作成し、実際にこの CVE を発見してくれたことに多大な感謝を捧げます。これは彼のコードを Python でリメイクしたもので、彼のステージファイルを再利用しています。 初期 PoC を見るには、彼のページはこちら: https://github.com/gabe-k/themebleed
CVE-2023-38146 "ThemeBleed" に対する Python を使用した概念実証 (PoC) です。
このプログラムは Impacket の SMB サーバー を使用し、smb2Create 関数をオーバーライドするため、Impacket の機能が必要です。
Usage:
Replace {IP-ADDRESS} in the exploit.theme file
python3 ThemeBleedServer.py - Run the SMB server
Use the .theme file on a vulnerable windows 11 machine
As in Gabe's Exploit you need to create a new stage 3 file that is a dll that exports VerifyThemeVersion, the current file only opens Calc.
Themebleed は、インターネットから msstyles ファイルを要求する .THEME ファイルから始まります。 ファイルに "999" というバージョン番号が使用されている場合、ReviseVersionIfNecessary 関数が呼び出されます。この関数は .dll ファイルを安全でない方法で読み込むため、攻撃者は検証されていないライブラリファイルを読み込むことができます。
これをまとめたのは、C# のコードを Linux でコンパイルできなかったためです。おそらく、その仕組みに対する私自身の無知が原因だと思います。ただ、私は Python なら書けます。
ThemeBleedServer.py/overrideSmb2Create の 44〜53 行目 - ここでパスの変更が行われます
ThemeBleedServer.py の 191 行目から最後まで - サーバーの作成
exploit.theme の 13 行目 - IP 変更用。