SWFの有名な脆弱性について
つまりCV-2007-0071です。flash 9 x.ocxに問題があります。バージョンは9.0.15まで影響します。
抜け穴自體は簡単で、Dowdの思考方向は大衆から逸脫していないが、肝心なのは、かなり牛迫的な一連の利用技術である。
具體的なディテールはDowdで素晴らしいパーパーを書きました。多くの人が見ました。たくさんの人が作ったと思います。
文章をじっくり拝読しましたが、何かの原因で、最後の完成品を作っていませんでした。これは手でどうやって利用を觸発したのかというのではなく、その文章についての誤謬と他の周辺の小さな問題の補足です。
最初の障害はswfファイルフォーマットです。これはあなたの時間を二時間から三時間ぐらいかかります。
Sothink SWF Decompplierをダウンロードすることを推奨します。もちろんFlash CS 3も必要です。
參考文獻はもちろんAdobe自身が公開しているSWFファイル形式pdfです。
多くのファイルフォーマットと同じで、SWFはヘッダと一連のブロックから構成されている。
SWFは圧縮と非圧縮の2種類に分かれていますが、どちらも基本的なヘッダブロックを保持しています。圧縮方式はzlibです。標準的なzlibで解凍できます。圧縮したSWFは先に処理したほうがいいです。
ブロックフォーマットには様々な表示とデータがありますが、たいていは6バイト、後4バイトで長さを表します。節約のために、ブロックが63バイト以內の場合も2バイトで表示と長さを表します。
もう一つの長い數字は形式を表しています。一番長いのは5バイトで32桁の整體を表しています。節約のためにもあります。これもちょっと面倒です。手は面倒です。やはりプログラムを書いて自分で計算します。
ファイル形式解析という関所を過ぎて、パースの各ブロックのプログラムも書きました。各ブロックを分解してファイルに分けて組み立てて、後は手動で編集するのが便利です。
第二の障害はアクションです。この場所はどれぐらいの時間がかかりますか?
參照ファイルはもちろんAdobe自身のpdfですが、マニュアルとして使います。0×62×63 0×47などのバイトコードの機能を覚えておけばいいです。
まず、それがMaskTableというものです。
これはあなたのASが合法的かどうかをチェックするための表です?;镜膜摔弦护膜蝐har[255]と理解できます。ゼロ以下はこの操作數が存在しないことを表しています。ゼロより大きいのは基本的にこの操作數を表すパラメータの長さです。
例えば0×47対応テーブルオフセット0×47の値は0であり、この動作數(0×47)にパラメータがないことを説明する。
この表を修正すると、チェック仕様が修正されたことに相當します。例えば、オフセット0 xF 9を0×20に変更すると、検査時に0 xf 9の操作數をチェックすると、0×20バイトがスキップされます。この中のいくつかの邪悪な操作を隠すことができます。
チェックと実行は分離されていますが、自分が存在しない操作は実行されないので、チェックしました。実行する時には悪いことができます。存在しない操作です。例えば、0 xf 9などは、単純にバイトをスキップしただけです。
一番簡単なのはASバイトのpaperであげました。簡単に説明します。一番目はempを保存してから文脈を回復します。二つ目はポインタを取って、eipを修正するつもりです。偶然です。このポインタはちょうど次の実行するASバイトを指します。三つ目はジャンプが必要です。このアドレスはempに上書きされます。つまり、コントロールを獲得したらまず実行されます。ASlinokeの関數はASlinokeのASlinopを任意に返します。ASlinopの5バイトの関數はASlinopを解決できます。ASlinopのAS likeのASlinopのASlicorekeのASlinopのASlicorekeはAS 5バイトのASlinopのASlicap AS解析関數が戻り、制御が得られます。
Dowdは最善の案ではなく、最も分かりやすい案を提示していますので、理解後はこのMarker+2つの意味で操作しない方がいいです。また、もっと簡単な方法があります。
Maskのテーブルについては、各バージョンのコントロールが関連文字を検索することで、基本的に見つけやすいです。
解析の場所はMaskの読み取り斷點を降りることができます。実行するところはIDAで大きなSwitch caseを検索できます。斷點は指定されたMarkerの條件斷點に等しいです。これらは具體的には言いません。
第三の障害があるかもしれませんが、検査は通っていますが、実行されていません。
これはFlash CS 3で編集した関數ではなく、直接ASバイトコードを使って修正したほうがいいようです。
コンテキスト保証機能を回復して実行したら、プログラムの流れは正常には言いません。
他のプラットフォームやブラウザについても、様々なバージョンのフラッシュの問題は、Dowdが明らかに誤認している疑いがあります。
あなたが必ず1つのところを書かなければならないので、このところの違ったバージョンは必ずしも書くことができるとは限らないので、違うバージョンは直接に切ってしまいやすいです。だから、何度か觸発されたり、めちゃくちゃに書いたりしても、無駄です。特に高いバージョンはこの問題表現が特に顕著です。
失敗について。
失敗した場合もあります。コントロール自體はランダムにロードされていませんが、flash 9 x.ocxデフォルトのローディングアドレスが占有されている場合もあります。
これを見て初めてofficeシリーズとの衝突を発見しましたので、officeの利用は難しいです。
ぜひ試してみたいなら、マクロなどを考えてもいいです。
swfを埋め込む時、xlsが開けばいいです。wordが開けたら、編集を閉じてください。この問題も解決します。
個人はこのswfができたら無反応で相手のブラウザを落札してもいいと思います。しかも全部で500バイトしかないです。確かに黃色で暴力的です。國內ではこのようにしないでください。本當に怖いです。
- 関連記事