これは、C# & .Net Framework 2.0 で作成しました


はじめに
TCP サーバとして待機し、通信メッセージの先頭行に「/」があると、それを特定の文字列に置き換えつつ、指定されたホスト:ポートへリダイレクトするプログラムです。

例えば、リバースプロキシー環境などでは、URL に「/WebApp/../cgi-bin/test-cgi」などの URL で非公開のWeb サーバに繋げる場合があります(※)。
Web セキュリティ検査時に、それらのある意味で特殊な URL にも各種検査ツール(nikto 等)が対応できるようにする Web Proxy かも知れません。

(※)
リバースプロキシは、「/WebApp/」で始まる URL を内部の Web サーバ(ホストA)の「/WebApp/」にリダイレクトする
リバースプロキシは、「/WebApp/」以外で始まる URL は内部の Web サーバ(ホストB)へ転送している。
こういう状況で、「/WebApp/../cgi-bin/test-cgi」をリバースプロキシに渡すと、Web サーバ(ホストA)に対して「/WebApp/../cgi-bin/test-cgi」が URL として渡り、結果的に想定外の「/cgi-bin/test-cgi」にアクセスできる場合がある


ただし、実際に行っているのは、受信処理した際のバッファの先頭行(先頭から Lf までの領域)に「/」があるかどうか調べているだけです。
受信処理(および受信バッファ)の状況によっては、変なところで、置き換えられるかも知れません。
(きちんと、Kepp-Alive 処理を実装しているわけではないので、確実性を期待したい場合は、Keep-Alive を無効{Connection: close ヘッダ}にした方がいいかもしれません)


ついでに、3way HandShake 後に数秒間待機するオプションもあります。
(FireWall の通信ログは 3way HandShake の時で、Web サーバの通信ログは HTTP リクエストを受信した時なので、フォレンジック解析者が少しでも悩んでしまうかもしれない)


ついでに、TCP のデータを分割して送る(フラグメント)オプションもあります。
単純なフラグメントなので "上書き" とか "送信順" などをいじってはいません
Socket の Send メソッドを細かく実行しているだけです。

ただし、Socket の Send メソッドを細かく実行していても、状況によっては、データを一つのパケットにまとめて送る場合があるので、そのためのインターバルの時間をオプションで設定する必要があります。
VB6 の WinSock.ocx には、SendComplete() イベントがありましたが、.NET Framework にはないようです...orz



動作環境
Microsoft .NET Framework2.0


インストール方法

まず、ランタイム(.NET Framework2.0)をセットアップします。

URLRewriteProxy.lzh をダウンロードします。

ダウンロードしたファイルを解凍しします。
(LHAは、吉崎栄泰氏が、著作権を所有)

URLRewriteProxy.exe を、実行します。

あとは、画面の指示に従ってください。

当然ですが、悪用厳禁です。


使用方法
起動して使ってみれば分かると思います。

当然ですが、悪用厳禁です。

C:\>URLRewriteProxy.exe
UrlRewriteProxy ver1.0
UrlRewriteProxy.exe LocalPort RedirectIPAddress RedirectPort [options]

-d : DebugMode
-r "ReplaceURL" : Add URL String
-b "Num" : Recv buffer size (byte)
-DelayMin "Num" :
       delay time of between 3Way-Handshake and 1st data packet (min)(sec)
-DelayMax "Num" :
       delay time of between 3Way-Handshake and 1st data packet (max)(sec)
-FragmentMin "Num" : FragmentSize (min)(byte)
-FragmentMax "Num" : FragmentSize (max)(byte)
-FragmentInterval "Num" : interval time of fragment packet sending (msec)



削除方法
UrlRewriteProxy.exe を削除して、.NET Framework2.0 ランタイムを削除すればよいです。


免責など
著作権は放棄します。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。

このソフトを使用したいかなる不正使用に関する責任は、
すべて、本プログラムの利用者に属します。

ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

当然ですが、悪用厳禁です。


Version1.0DownLoad(UrlRewriteProxy.lzh as 9,632byte)

履歴



mail to active@window.goukaku.com