忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


R v Gold and Schifreen [1984-5]

英国のコンピュータ犯罪法に大きな影響を及ぼした事件。

GoldとSchifreenはある展示会で端末に貼ってあったメモを見て、
Prestelの開発システムの電話番号を知る。
( Prestel: British Telecomの電子メールサービス)

そこにダイヤルアップでアクセスしてみると、
なんとPrestelの管理用ユーザIDとパスワードを取得できてしまった。
ちなみにユーザIDは"22222222"パスワードは"1234"だったとか。


二人はこのパスワードを用いてPrestelのネットワークに侵入、
システムをいろいろと探し回った挙句、
エディンバラ公のメールアカウントにまでアクセスしたという。

当時、英国にはコンピュータ犯罪法がなく、
二人はfalse instrument(詐欺罪?偽造罪?)で起訴されたが
有罪にはならなかったらしい。


参考文献
日経BP社 情報セキュリティ技術大全 p.38

wikipedia [Computer Misuse Act 1990]
http://en.wikipedia.org/wiki/Computer_Misuse_Act

swarb.co.uk [R v Gold and Schifreen]
http://www.swarb.co.uk/lawb/cpucmaRvGold.shtml
PR

<Basic1>
パスワードを他人が見えるところに置くのはまずい。

<Basic2>

パスワードを設定し忘れちゃ話にならない。
パスワードを設定しないと動作しないシステムが安全かなぁ。

<Basic 3>

Basic1と同じ。

<Basic4-5>
Hiddenにしてるからと言って、Formにメールアドレス等をのせるのは危険。これらのパラメータは、JavaScriptやProxyを用いることで書き換え可能。
メールアドレス等は、サーバー側のみで扱うようにすればいいか?
そもそもユーザに知らせる必要のない情報(この場合メールアドレス)はユーザに送信すべきじゃ無いよなぁ。

<Basic6>
自分でアルゴリズム考えるより、素直にSHA1とか使えば良くね?

<Basic7>
ユーザが入力した値(文字列)を、そのままコマンドとして実行するのは危険。ユーザが入力した値が妥当かどうかを検査する必要がある。

この検査は、クライアント/サーバー両方でするのが良いか。
クライアント側で検査する理由: ユーザの誤入力を検出するため。
サーバー側で検査する理由: 入力値が妥当(安全)なものかを検証するため。

<Basic8>
Basic7とだいたい同じ。
入力値に含まれる特殊な記号とかは、事前にエスケープすりゃいい?
Basic8の場合"<"を"&lt;"、">"を"&gt;"に置き換えるとか。

<Basic9>
意外なところからも攻められるんですね。

<Basic10>
パスワードを管理するだけでは不十分。ユーザ認証もしっかりやんなきゃマズイってことか。
そして、Cookieも書き換え出来ちゃうってことはあまり信用できない情報ってことなのかー。

HackThisSite (http://www.hackthissite.org/)という、
ネットワークセキュリティを色々と学べるサイトがある。
このサイトでは、主にWebアプリケーションに対するハッキングに挑戦することができ、様々な問題(mission)を通してセキュリティ知識・技術を身に付けることが出来る。

そのなかの一番基本的なミッション、Basic missionsに挑戦してみた。
このBasic missionは基本的に、パスワードを探し当てることが目的。
攻略のヒントをメモしておく。

<Basic 1>

ソースを覗く。基本。

<Basic 2>
パスワードファイルをうpしわすれた→パスワードは設定されてない

<Basic 3>
ソースを覗くとパスワードファイルのファイル名が分かる。

<Basic 4>
ソースを覗くと、なにやらFORM周りにメールアドレスが書かれている。
どうやらここに書かれているメールアドレスにパスワードが送られるようだ。
ここをなんとかして自分のメールアドレスに書き換えることができれば……!

JavaScriptでお手軽FORM改ざん。
ブラウザのアドレスバーで
javascript: void(document.forms[n].name.value="nantoka");
n, name, nantoka は場合に応じて。

<Basic 5>
上とだいたい同じ。
Proxyを用いてパラメータを書き換えるなどでもクリアできる。(Basic4も)

<Basic 6>
適当な文字列を入力してみる。"aaaaaa"とか。
そうすると暗号化アルゴリズムが分かるのでそれを元に復号。
参考: アスキーコード表(http://e-words.jp/p/r-ascii.html)

<Basic 7>
まずはyearを適当に入力して実行してみる。

するとこのカレンダー表示サービスは、UNIXのcalコマンド
>cal "入力された年"
の実行結果を表示させるプログラムであると予想できる。(と思う)

ところで、UNIX系のコマンドは、
セミコロン";"でコマンドを区切ると、複数のコマンドを一文で実行できる。

この";"と、コマンド"ls"を使えばパスワードファイルを見つけられるはず。

<Basic 8>
まずは適当な文字列を入力することから始める。

すると、このサービスは"nantoka.shtml"を生成してるいるようだ。
拡張子が".shtml"ということは、SSI(Server Side Includes)が使えると予想。
つまり入力フォームにSSIを書いてやればなんかいろいろできそうだ。

とほほのSSI入門(http://www.tohoho-web.com/wwwssi.htm#Exec)
SSIの"exec"と、UNIXコマンド"ls"をうまく組み合わせれば、
パスワードファイルを見つけられる。

<Basic 9>
Basic 8ができればこれもできるはず。

<Basic 10>
なんかソースを覗いたりしてもパスワードは分からなそう。

とりあえず適当なパスワードを入れて見ると、
"You are not authorized to view this page"

authorize(認証)...cookieが怪しいぞ!

で、Cookieを覗いてみる。
ブラウザのアドレスバーで
javascript:alert(document.cookie) 

"level10_authorized=no"が怪しい。これをなんとかしようではないか。

JavaScriptでお手軽Cookie改ざん。
ブラウザのアドレスバーで、
javascript:void(document.cookie="name=value")
nameとvalueはお好きなように。

これで認証状態を騙してやればクリア。
パスワードを徹底的に管理するだけじゃセキュリティは不十分だってこった。


仮想ドライブの割り当て/解除には subst コマンド。

・マイドキュメントフォルダを、ドライブ k: に割り当てる。
コマンドプロンプトで
>subst k: "%USERPROFILE%\My Documents"

・仮想ドライブ割り当てを解除
>subst k: /d


ネットワークドライブの割り当てには net use。

・VMwareの共有フォルダを  ドライブ z: に割り当てる
>net use z: "\\.host\Shared Folders\(共有名)"

・ネットワークドライブ割り当てを解除
>net use /delete z:

VMware共有フォルダの脆弱性とか何のことか分かんない。
http://www.coresecurity.com/?action=item&id=2129:

[1] [2] [3
  HOME   : Next  »
ブログ内検索
忍者ブログ [PR]