2010-01-01から1年間の記事一覧

属性値のXXE攻撃

以前、属性値でのXXE(Xml eXternal Entity)攻撃を試したのですが、やり方がよく判りませんでした。最近また試してみて、属性値での攻撃方法が判ったので日記に書いてみます。 Servletプログラム 以下のようなJava Servletプログラムをサーバに置きます。 i…

JavaScriptの文字列リテラルでXSS

たまに以下のようにJavaScriptの文字列リテラルに値が入るアプリを見ることがあります。 <script> var foo="●"; ... </script> 値は「●」の箇所にHTMLエスケープされて出力されます(下の方の例も同じ)。こんなケースでどうXSSするか?という話です。 簡単にXSSできるケース …

HTML PurifierのSecurity Fix

HTML Purifierの4.1.1がリリースされました。今回のリリースには1件のSecurity Fixが含まれています。今日はその内容について少し書きます。 IEのCSSのurl()の扱い 以下のようなstyle属性があったとき、ブラウザはどのように解釈するでしょうか? <span style="background: url('http://host/aaa\'\);color:red;')">111</span> Firefo…

CookieのPath

遅ればせながら、高木さんの日記を見ました。高木浩光@自宅の日記 - 共用SSLサーバの危険性が理解されていないCookieのPath指定がセキュリティ上意味を持たない件について書かれています。日記に書かれたIFRAMEを使う方法で既に「詰み」なのですが、もうち…

セッションIDと認証チケット

以前の日記で、ASP.NETのセッション固定対策について書きました。その結論をまとめると、 ASP.NETにはセッションIDを変更するまともな方法が存在しない。 そのため、ASP.NETではフォーム認証機構(FormsAuthentication)を使ってログイン状態管理を行うべき…

ASP.NETのセッション固定対策

本日は、ASP.NETでログイン機能をつくる際のセッション固定対策について書きます。ログイン状態の管理には、ASP.NETが提供するセッション機構(ASP.NET_SessionId Cookie)を使っているとします。 ASP.NETでのセッション再生成 ログイン機能のセッション固定…

skipfishをためす

Googleから新しい検査ツールが出たとのことで、中身を見てみました。Google Code Archive - Long-term storage for Google Code Project Hosting.ツールの作者はRatproxyと同じくMichał Zalewski氏ですが、今回のツールはRatproxyとは違って"Active"な検査ツ…

マッチするはずの正規表現がマッチしない現象

今日は、PHPでよく使用される正規表現エンジンであるPCRE(Perl Compatible Regular Expression)の、余り知られていない(と思う)制約について書きます。 プログラム 題材は下のPHPプログラムです。