pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


Citrix NetScaler のCookie情報にはバックエンドのWebサーバの情報が含まれている

自社のあるサイトが Citryx NetScaler を利用しているのだけれど、たまに不安定なことがあり、なおかつその機材の管理チームと不安定な状況の改善に向けてやり取りしていてもラチがあかないので、合法的な範囲で調べてみるテスト。

Cytrix NetScaler というのはロードバランサー機能を含む複数の機能を提供するアプライアンス製品なわけですが、少なくともIPアドレスやポート番号の情報が NetScaler の生成する Cookie には含まれているようです。この Cookie 情報を用いて、特定のクライアントとの通信が特定のバックエンドに振り分けられるようにしているようです。

そこで、NetScaler が生成する Cookie の意味を具体的に調べていたら、これに関する情報が下記のコンテンツにありました。

itgeekchronicles.co.uk

そしてCookieをデコードする方法は無いものかと思って読み進めてみると、先程の記事の最後に下記の GitHub リポジトリが紹介されていて、ここにコードがありました。

github.com

PythonJavaScript コードがあるようですが、とりあえず 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

うん、たしかにデコードされた。そして手元の現物も同じようにデコードできた。