1gの勇気

奥手な人の思考と試行

[情報SEC]第12回 Webアプリケーションの入力データを悪用した攻撃(1)

2006-03-07 23:31:30 | 1gの情報セキュリティ
第12回 Webアプリケーションの入力データを悪用した攻撃(1)

クロスサイトスクリプティング
XSSゆうらしい。クロスがバッテンか...
入力チェックがタコな動的なWebページを生成して表示するサイトに対する攻撃だ。

例えば、ユーザ登録時に住所などチェックが甘そうなところに、
<script>alert('hello')</script>などを入力する。
ユーザ登録結果画面でこのコードをそのまま表示すると、JavaScriptが実行される。

上記の場合は、helloというポップアップが表示される。
ということは、JavaScriptで実行できることならなんでもできるということだ。
入力内容(ユーザ登録ならID・パスワードもあるでしょ)盗むなんてことも簡単。

情報(cookieとか)を盗むだけではなく、他への攻撃の踏み台にされることもある。
ajaxなんて仕込まれた日にはサーバパンクさせるのも簡単。
まずいの。

まずいので、通常は入力されたJavaScriptコードは実行できないようにしてる。
入力できないではなく。(エラーにはしない。)
なので、<>"'&あたりをHTMLエンコードしとく。

この本ではサニタイジングゆうてるけど...なんだろね。聞いたことない。
あと、>→& 書いてあるとこあるけど、これは >→>の間違い。でしょ。
JavaScriptだけでなく、入力したデータを処理する場合きちんとエスケープする必要がある。

例えば、単純に"(ダブルクォーテーション)を文字として受け入れて、
出力結果として、<script>alert(""");</script>(真ん中の"がそれ)
なんてすると、JavaScriptエラーとなる。

SQL文作るところでも同じことが起きる。
ので、都合の悪い文字は片っ端からエスケープ(をつける)しとくのがふつーです。
どんなものが都合が悪いかはシステム(言語)によっても違うので、一概には言えませんが。

ちなみにgooブログはエスケープしてるみたいです。
この間¥(の半角文字)を入れたら消えてました。
単純削除されてます。

JavaScriptは...画面に出てますな。コードが。
しかたないので、エスケープして入力しときます。
この項長いので二回に分けます。

次回はSQLインジェクションとOSコマンドインジェクションです。

どたばたな日

2006-03-07 23:01:16 | 1gの思いつき
こんばんは。
水神です。
どたばたでした。

朝っぱらから渋滞につかまり、新幹線に乗り遅れ、缶コーヒーこぼして
上着がコーヒーになり、しかたないので直接会社行かずに家帰って上着変えて、
大学の受験料振り込んで、振り込み結果紙コピーして、会社到着。

ふぅ。
とりあえず、仕事の進捗聞いて、一部指示だし、写真ののり付けして、
郵便局へ。並んで窓口ついたら、簡易書留用の紙書け言われて、書いて出す。

はぁ。
会社戻って、紙書き(ドキュメント修正)仕事。
くたびれました。どたばたでした。

それでもまあ、なんとか片づいたのでよしとするか。
問題は明日だな。
お客さんとこ行かねば。...休みなのに。

でもまあ、わんここねこねできたし、帰ってよかったの。
というか、仕事に割り込まれたのだ。迷惑だ。
本当は今日も明日も明後日も休みなのに。

疲れたけど、風呂入って、[情報SEC]やらねば。
大学は無事は入れるかの。
しかし、金(36万円)どうすべ。どっかから持ってこねばの。