オフィス(CVE-2012から0158)脆弱性分析

2019年9月12日

1.脆弱性の再現

①クラッシュFOUND

 

 

 

②機能が書き換えをスタックする場所を見つけ、次のブレークポイント、再実行し、シングルステップデバッグを抜け穴を見つけるために、

 

 

 

③分析ザ・機能

MSCOMCTLは、機能コードを見て、IDAにドラッグ

 

 

④コールスタックトレースバックを表示します。

 

最初のリターンアドレスのアドレスが上書きされて見つけ、それをカバー方法を確認

 

 

 

脆弱性は、その最初の引数であるポインタトリガー、そのパラメータを参照して、機能のトリガーに脆弱性を探します

 

 

 

    関数の入り口、文トリガーにの脆弱性を見つけます

 

 

 

 

 

図から分かるように、ローカルにはスタックオーバーフローにつながる、4バイトの変数に大量のデータをコピーし、リターンアドレスをカバーすることは、脆弱性を引き起こす、関数のローカル変数に属します。

 

2.エクスプロイト

    ①原則分析

分析の後、脆弱性データを二回呼び出される関数によって渡されました。

最初:最初のファイルを保存したバイト数(から0xC)、それは彼らが等しい場合、その後、アウトバイト数(から0xC)のデータをコピーし、入ってくるパラメータと比較されますを取得します。

第二:最初のデータがパラメータとして抽出されるパラメータは、それらが等しい場合、バイト数がサイズパラメータの値をコピーするために、ファイルの比較から、4バイトのデータを抽出しました。

 

二回sub_275C876D関数呼び出し

 

 

 

最初のコピー

 

 

 

二回限りファイルが比較値を保存するために使用される(バイトの数が読み取ら)等しい、より大きいまたは4に等しい、抜け穴と非常に良好な用途に結合し、ライン上のみJMP ESP命令

    ②shellcode

  1. JMPは、ESP好ましくは内蔵のシステムおよび各種保護、モジュール内のアドレスを見つけていません

私はimmunityDebuggerを選びました!資格MSVBVM60.DLLを探します

 

 

 

    JMPは、ESPの読み取り属性の実行可能ならば、モジュール内のアドレスを見つけるだけで0x729a0535を持っています

 

 

 

機能は最終的に、単に彼らがやりたいだけの書き込み、読み取りサイズ、行にシェルコードを追加し、その空のオクテットを8 RETたため、41414141は、ESPのアドレスをJMPに交換しました。

 

POCファイル

 

 

 

 

おすすめ

転載: www.cnblogs.com/jf-blog/p/12368618.html