Citrix NetScaler のCookie情報にはバックエンドのWebサーバの情報が含まれている
自社のあるサイトが Citryx NetScaler を利用しているのだけれど、たまに不安定なことがあり、なおかつその機材の管理チームと不安定な状況の改善に向けてやり取りしていてもラチがあかないので、合法的な範囲で調べてみるテスト。
Cytrix NetScaler というのはロードバランサー機能を含む複数の機能を提供するアプライアンス製品なわけですが、少なくともIPアドレスやポート番号の情報が NetScaler の生成する Cookie には含まれているようです。この Cookie 情報を用いて、特定のクライアントとの通信が特定のバックエンドに振り分けられるようにしているようです。
そこで、NetScaler が生成する Cookie の意味を具体的に調べていたら、これに関する情報が下記のコンテンツにありました。
そしてCookieをデコードする方法は無いものかと思って読み進めてみると、先程の記事の最後に下記の GitHub リポジトリが紹介されていて、ここにコードがありました。
Python と JavaScript コードがあるようですが、とりあえず Python を試してみます。
実行方法はカンタンで、実際にやってみると、こんな感じ。手元の Cookie の現物を晒すのはイヤなので、GitHub リポジトリの readme に記載の Cookie で試してみます。
$ ./nsccookiedecrypt.py NSC_Qspe-xxx.bwjwb.dp.vl-IUUQ=ffffffff50effd8445525d5f4f58455e445a4a423660 vServer Name=www.**********-HTTP vServer IP=xxx.xxx.xxx.xxx vServer Port=80
うん、たしかにデコードされた。そして手元の現物も同じようにデコードできた。