5月 272015
 

さて巷ではJVNVU#98282440: 「提督業も忙しい!」(KanColleViewer) がオープンプロキシとして動作する問題が話題ですが、FiddlerCore は何も考えないで実装すると恐らくこうしてしまうような仕様です。クソですね。。

そもそも何が問題なのか

とりあえず適当に FiddlerCore を使ったアプリケーションを立ち上げてみましょう。

FiddlerApplication.Startup(55555, FiddlerCoreStartupFlags.Default);

するとあら不思議、0.0.0.0:55555でListningされてしまいます。

C:\Windows\system32>netstat -a -b -n -o -p TCP

アクティブな接続

プロトコル  ローカル アドレス          外部アドレス        状態           PID
...(中略)...
  TCP    0.0.0.0:55555          0.0.0.0:0              LISTENING       6688
 [FiddlerTest.vshost.exe]

これではアプリが立ち上がってる間は外部からHTTPプロキシとして利用できてしまいます。
知らず知らずのうちに他所様への攻撃の踏み台にされて、ある日突然警察がやってくるなんてこともあるかもしれません。怖いですね。

で、どうすればいいかというと、127.0.0.1:55555でLisningするようにできればローカルプロセスしかアクセスできなくなるので、そう変更したいですね?
これはごく簡単で、AllowRemoteClientsfalseにしてやればOKです。

FiddlerApplication.Startup(55555
    , FiddlerCoreStartupFlags.RegisterAsSystemProxy
    | FiddlerCoreStartupFlags.ChainToUpstreamGateway
    | FiddlerCoreStartupFlags.MonitorAllConnections
    | FiddlerCoreStartupFlags.CaptureLocalhostTraffic);

Flagなので指定しなければOK。

C:\Windows\system32>netstat -a -b -n -o -p TCP

アクティブな接続

プロトコル  ローカル アドレス          外部アドレス        状態           PID
...(中略)...
  TCP    127.0.0.1:55555        0.0.0.0:0              LISTENING       7128
 [FiddlerTest.vshost.exe]

つまりFiddlerCoreStartupFlags.Defaultがイカンわけです。
でも FiddlerCore は Fiddler.exe のUI以外の部分を抜き出したものなわけですから、Fiddler.exe 自体がそういうもんだという可能性もあります。


参照: FiddlerCore – Fiddler Proxy Engine for your .NET Applications

ここで Fiddler.exe および FiddlerCore のデフォルト値を見てみましょう。

Continue reading »