これは、ISAPI フィルタです



プログラミング中に見つけたISAPI Source and Binaries


リンク
sISAPInull


はじめに
HTTP レスポンス・メッセージを改変します。
改変法は、以下です。
使用方法
  1. sISAPILocation.dll を好きなディレクトリへ配置
  2. IIS の管理画面から、ISAPI フィルタのプロパティで、本 DLL を登録
  3. レジストリの設定(後述)
  4. IIS を再起動



レジストリ


アーカイブ内にある「Config.reg」を参考にしてください。


レスポンスメッセージのヘッダとボディの判定について (ver1.1.0.4 での修正点)



IIS6.0 の場合
IIS5.0 までは「SYSTEM」の実行権限があればロードできるはずです。
IIS6.0 では、それではロードできません。
一応、「Everyone」の実行権限を本 DLL に与えればロードできますが...

IIS6.0 が ISAPI フィルタをロードする時の実行ユーザが誰であるかご存知の方は教えてください。



IIS7.0 の場合
MS-Windows Server 2008 SP0 (x86) 上で、ver1.0.2.1 が動作しました。


仕様 (ver1.0.1.3 まで)



仕様 (ver1.0.1.4)



仕様 (ver1.0.2.0)



仕様 (ver1.0.2.2)
 
sISAPILocation のセキュリティ問題について
sISAPILocation における HTTP ヘッダ書き換え回避の脆弱性
2008/03/12
先日、作者自身が確認したところ。「304 Not Modified」なレスポンス・メッセージに対して sISAPILocation が[呼び出されていない|呼び出されているが処理せずスルーしている]によってサーバヘッダなどが書き変わらない、という現象を確認しました。
しかし、本日デバグを始めると「304 Not Modified」でも呼び出されてくれるようで、デバグができない状態になりました ... orz。
本ツールは、ISAPI Filter の OnSendRawData イベントに処理を記述しているだけです。
もう少し、時間がある時に調査(どんな条件が、呼び出される場合/呼び出されない場合となるのか)してみようとは思っていますが(気持ちはあるんですが....)、使用を継続するのか中止するのかは、自己責任でお願いします。
2008/10/18
一昨日、再現方法が確定しました。Keep-Alive で連続でリクエストを送ると、後発のリクエストに対して、書き換えができていないことを確認しました。
現在、修正中です。
暫定的対処として、IIS 側で「Keep-Alive を無効にする」という対策が考えられます。
使用を継続するのか中止するのかは、自己責任でお願いします。
2008/10/18
ver 1.0.2.2 で対応



アンインストール方法
  1. IIS から、ISAPI フィルタの登録を解除
  2. DLL を削除する
  3. レジストリを削除する



開発環境など
MS VC++ ver6.0 SP6 ISAPI Wizard にて作成。

免責など
著作権はとりあえず保持します。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

DownLoad(sISAPILocation.lzh as 56,464byte) (sISAPILocation.lzh.base64)
sISAPILocation.dll is 12,288byte(ver1.1.0.0)


変更履歴



to do list



sForceTrailingSlash
観点が違うけど、似たような HttpModule を作った。
sForceTrailingSlash


sServerRename
Server ヘッダを消すだけの HttpModule を作った。
sServerRename


mail to active@window.goukaku.com