タグ

ブックマーク / hasegawa.hatenablog.com (23)

  • ファイアウォール内のサーバに対するShellshockを利用した攻撃 - 葉っぱ日記

    2014-09-27: 該当サイト上にXSSがなくても攻撃可能であることが id:mayuki さんのコメントで判明しましたので全面的に書き直しました。ファイアウォール内であっても攻撃者はファイアウォール内のShellshock攻撃が通用するCGIのURLがわかっているだけで攻撃可能ですので早急に対応が必要です!会社のブログにも書いてますが、ファイアウォール内に置いてあるサーバで攻撃者が直接アクセスできないからといってbashの更新を怠っていると、条件によっては攻撃が可能となります。 条件としては、 そのサーバにはシェルを経由して外部コマンドを起動するCGI等が動いている(通常のShellshockの攻撃と同条件) 攻撃者がそのURLを事前に知っている(あるいは推測可能) となります。 攻撃者は、ユーザーを罠URLへ誘導し、以下のようなJavaScriptを罠ページ上で動かし、攻撃対象のW

    ファイアウォール内のサーバに対するShellshockを利用した攻撃 - 葉っぱ日記
  • ブラウザ内で安全に文字列からDOMを組み立てるためのRickDOMというライブラリを書いた - 葉っぱ日記

    RickDOM - ricking DOM elements safety from string https://github.com/hasegawayosuke/rickdom ブラウザ内のDOMParserあるいはcreatHTMLDocument APIを使って不活性なDOMを組み立てたのちに、必要な要素と属性、スタイルだけを切り出して複製しているので、原理的にDOM based XSSの発生を抑えることができます。 使いかたも簡単。 var rickdom = new RickDOM(); var container = document.getElementById( "container" ); var elements; var i; // read allowings property to show default rule // div.textContent =

    ブラウザ内で安全に文字列からDOMを組み立てるためのRickDOMというライブラリを書いた - 葉っぱ日記
  • HTML5関連のセキュリティ情報 - 葉っぱ日記

    HTML5に関連したセキュリティの話題で、とりあえずこれまでに話した資料の一覧や、考察した記事。今後もっと増える予定です。「このAPI使う上で気を付けることないの?」みたいなリクエストもあればぜひ言って下さいませ。 JavaScript Security beyond HTML5 (2013-09-20 Developers Summit Kansai 2013) HTML5セキュリティ その1:基礎編、XSS編 (2013-06-13 OWASP Night 6th) Web::Security beyond HTML5 (2012-09-28 YAPC::Asia 2012) HTML5時代のWebセキュリティ (2012-09-15 第5回愛媛情報セキュリティ勉強会) Same-Origin Policy とは何なのか。 - 葉っぱ日記 XMLHttpRequestを使ったCSRF対

    HTML5関連のセキュリティ情報 - 葉っぱ日記
  • istrings 0.2 を近いうちに出します - 葉っぱ日記

    近いうちにバージョンアップします。変更点は Linux / gcc でのコンパイル対応(wakatonoさん、umqさん、ありがとうございます) UTF-16における、より正確な文字列の検出(バグfixを含む) ソースの整理 の予定です。ISO-2022対応については、もう少しお待ちください。 2点目のUTF-16における云々は、昨日話題にしていた内容ですが、再度整理して解説。例えば、次のようなファイルがあったとします。 52 00 52 00 52 00 52 00 52 00 このファイルをUTF-16LE(Windows上でのUnicode)に対応したバイナリエディタで見てみると、 R R R R R という感じに見えると思います。これは、52 00 というバイト列が、U+0052 の R と解釈されているからです。 52 00 52 00 52 00 52 00 52 00 ここで

    istrings 0.2 を近いうちに出します - 葉っぱ日記
  • Same-Origin Policy とは何なのか。 - 葉っぱ日記

    ちょっと凝ったWebアプリケーションを作成していたり、あるいはWebのセキュリティに関わっている人ならば「Same-Origin Policy」(SOP)という言葉を一度は聞いたことがあると思います。日語では「同一生成元ポリシー」あるいは「同一生成源ポリシー」などと訳されることもありますが、個人的には「オリジン」は固有の概念を表す語なので下手に訳さず「同一オリジンポリシー」と書いておくのが好きです。 さて、この「オリジン」とは何なのかという話ですが、これは「RFC 6454 - The Web Origin Concept」で定められており、端的に言うと「スキーム、ホスト、ポート」の組み合わせをオリジンと定め、それらが同じものは同一のオリジンとして同じ保護範囲のリソースとして取り扱うということです。 例えば、http://example.jp/fooとhttp://example.jp:

    Same-Origin Policy とは何なのか。 - 葉っぱ日記
  • Web StorageやindexedDBを扱う上でのセキュリティ上の注意点 - 葉っぱ日記

    localStorageやsessionStorage、あるいはindexedDBのようなブラウザ上でのデータの保存が可能になったことで、これらを取り扱ううえでもセキュリティ上の注意点が必要である。 これらのストレージは、localStorageやindexedDBは永続的に、sessionStorageはブラウザやタブを閉じるまでの間データが保持され続けるので、例えばWebアプリケーションがログイン機構を持っている場合にログイン中にこれらのストレージに書き込まれたデータは、ログアウト後も当然参照および書き換えが可能である。Webアプリケーション上のアカウントに紐づいたデータをこれらのストレージに書き込んでいる場合、ログアウト後もアクセス可能なことが問題を引き起こす可能性がある。 例えばTwitterのようなサービスがあったとして、(navigator.onLineプロパティなどを利用して

    Web StorageやindexedDBを扱う上でのセキュリティ上の注意点 - 葉っぱ日記
  • XMLHttpRequestを使ったCSRF(補足編) - 葉っぱ日記

    XMLHttpRequestを使ったCSRF対策 - 葉っぱ日記を書いていて思ったけど、いまいちXHRを使ったCSRF(というかクロスオリジン通信)について理解されていないような感じだったので、ちょっと書いておきます。とりあえず日語のリソース的には、HTTP access control | MDN が詳しくて、それを読めばだいたい事足りるんで、あとはCSRFに関連しそうな話題だけ。 Q. そもそも「クロスオリジン」って何? スキーム、ホスト、ポートの3つの組み合わせが一致している場合を同一オリジン(same-origin)、いずれか一つでもことなる場合をクロスオリジン(cross-origin)と言います。つまり、XHRでドメインを超えて通信している場合は典型的なクロスオリジン通信となります。 Q. え? XMLHttpReuest って他のドメインにリクエストを発行できないんじゃ い

    XMLHttpRequestを使ったCSRF(補足編) - 葉っぱ日記
  • Shibuya.XSS テクニカルトーク#1 開催しました。 - 葉っぱ日記

    Shibuya.XSS テクニカルトーク#1を開催しました。 参加して頂いたみなさん、発表してくださったみなさん、そして会場を快くお貸しくださったうえにビールとピザまでご用意くださったmixiさん、ありがとうございました。 私の発表した資料を置いておきます。 MBCS文字コードを使ったJS配列の乗っ取り 次回予定はまったく未定ですが、もし開催することがありましたらまたみなさんのご参加をお願い致します。

    Shibuya.XSS テクニカルトーク#1 開催しました。 - 葉っぱ日記
  • MS11-099 Internet Explorer 用の累積的なセキュリティ更新プログラム で修正されたXSSの話 - 葉っぱ日記

    マイクロソフト セキュリティ情報 MS11-099 - 重要 : Internet Explorer 用の累積的なセキュリティ更新プログラム (2618444) で修正された「Content-Disposition の情報漏えいの脆弱性 - CVE-2011-3404」について書いておきます。 Content-Disposition: attachment をHTTPレスポンスヘッダに指定すると、一般的なブラウザではコンテンツをブラウザ内でいきなり開くのではなく、ローカルディスクへダウンロードすることになります。ところが、MS11-099にて修正された脆弱性を使用すると、罠ページを経由することで Content-Disposition: attachment のついたhtmlを強制的にInternet Explorer内で開くことができたため、例えば Wiki や Web メールの添付ファ

  • IE9 RC マイナーな変更点リスト - 葉っぱ日記

    Eric Lawrence さんから、IE9 RC Minor Changes List - EricLaw's IEInternals - Site Home - MSDN Blogs の翻訳の許可をもらったので訳してみました。間違い等あれば教えてください。 遡ること9月に、私はIE9のマイナーな変更点のリスト*1を公開しました。今日は、IE9リリース候補版で変更された点について紹介します。注意:このリストは当時言及しなかったBetaでの変更点もいくつか含んでいます。 もちろん、ここには含まれていない多数の変更点があるので、この記事を完全なリストとは思わないでください。また、IEBlog上で論じられているような大きな機能変更については意図的に飛ばしている点にも注意してください。 過去にこのブログで論じた、IE9の新機能や改善点については BetterInIE9タグを検索することで参照でき

    IE9 RC マイナーな変更点リスト - 葉っぱ日記
  • IE9 Beta のマイナーな変更点リスト - 葉っぱ日記

    Eric Lawrence さんから、IE9 Beta Minor Changes List - EricLaw's IEInternals - Site Home - MSDN Blogs の翻訳の許可をもらったので訳してみました。間違い等あれば教えてください。 ブラウザの各リリースにおいて我々が行う様々な機能の追加変更のほとんどは、IEBlog の投稿において読むことができます。しかしながら、我々は同時に、見落とされがちな、あるいはあまり広くは知られていないような多数の小さな改善も行っています。この記事では、それらの小さな改善のうち私が興味深いと考えるものについてピックアップしてみます。影響を与える改善点やこれまでにこのブログ上で議論された機能などは、BetterInIE9 を検索することにより見つかります。 もちろん、私が把握していない何千もの変更があるので、これを包括的なリストと誤

  • [Neta]真・新ジャンル:回文プログラミング - 葉っぱ日記

    参考文献: 新ジャンル:回文プログラミング - TAKESAKOのはてな出張所 回文つくるのに真ん中に「//」いれるのは卑怯な気がするので回文javascriptを書いてみた。記号だけじゃないけど。 "'\"+'+", alert(1),',)1(trela ,"+'+"\'" おなじ構造でPerlもいけますね。Perlindrome. "'\"+'+". print(1).'.)1(tnirp ."+'+"\'" 追記: id:TAKESAKOさんに「卑怯な気がする」と言ったら「厳密には文字列の reverse になっていない鏡像」な回文スクリプトしかできあがらなかったので書いてみた。ブラウザのアドレスバーに「javascript:」を打ったあとに貼り付けてお楽しみください。 "'\"+'+",$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:

    [Neta]真・新ジャンル:回文プログラミング - 葉っぱ日記
  • 顔文字でJavaScript - 葉っぱ日記

    顔文字のJavaScriptを生成する aaencode を書いた。こういう↓JavaScriptが簡単に生成できる。 ゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o]; (゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];(゚o゚)= (゚Д

    顔文字でJavaScript - 葉っぱ日記
  • IEの <pre>.innerHTML で複数のスペースを入れる方法 - 葉っぱ日記

    IEでは <pre>.innerHTML に連続したスペースや改行を入れると、単一のスペースに置き換わってしまいます。 例えば次のようなJavaScriptをIEとFirefoxで実行してみると: var s = "0123456789ABCDEF\n a b c d"; var pre = document.createElement( "pre" ); pre.innerHTML = s; document.body.appendChild( pre ); IEの表示: Firefoxの表示: IEでは、複数の連続したスペースや改行文字が全て単一のスペースになってしまっています。改行文字を "<br>"に置き換えて、createTextNode() すれば解決しそうな気もしますが、 var s = "<span style=\"color:red\">0123456789ABCDEF<

    IEの <pre>.innerHTML で複数のスペースを入れる方法 - 葉っぱ日記
  • 如何にしてヒューマンフレンドリーなJavaScriptを書くか。または1行AAでプログラミング - 葉っぱ日記

    javascript:(゚Θ゚)=゚ω゚ノ=3, (/`m´)ノ ~┻━┻ //*´∇`*/)javascript:(゚Д゚) =_=3; /^_^/ [-_-1] - /;*_*/ とりあえずエラーなく動くというだけで、実行結果にも絵にもまったく意味はないです。任意のコードをAAだけで実行させるのは、まだまだ遠い道のりです。

    如何にしてヒューマンフレンドリーなJavaScriptを書くか。または1行AAでプログラミング - 葉っぱ日記
  • 興味のあるECMA実装にJScriptと書いていたら面接で爆笑された - 葉っぱ日記

    Inspired by Big Sky :: 興味のあるテキストエディタにVimと書いておいたら面接で爆笑された JavaScriptエンジニアを募集してる会社の採用面接を受けた時の話。 転職エージェントに作れと言われて作ったシートに、「興味のあるECMAScript実装」という欄があったんです。 ActionScriptとか色々書いたけど、ECMAScript実装一族の中で興味があるのはJScriptだったので、 JScriptと書いておいたのですが、それを見たイケメンで渋谷から朝帰りしてそうな現在社出向中の面接官のリアクションが酷かった。 面接官「JScript・・・ふははっ!JScript!」 面接官「JScriptやってるんですか?wwwww」 俺「(唖然)は、はい・・まだサーバサイドJSをCGIで動かしたぐらいですが。。」 面接官「サーバサイドJS・・・ニヤニヤ」 その人はエン

    興味のあるECMA実装にJScriptと書いていたら面接で爆笑された - 葉っぱ日記
  • JavaScript変態文法最速マスター - 葉っぱ日記

    Java変態文法最速マスター - プログラマーの脳みそをリスペクト。 JavaScriptの変態文法・技法一覧です。あんまり使わないけど、知ってるとXSSとか攻撃したいのにWAFに妨害されるなど、いろいろ制約があるという場合に便利。 文字列の生成 引用符を使わずにさくっと文字列を作る。fromCharCode とか使ってもいいけどめんどくさいので、正規表現やE4Xを利用。 alert( /string/.source ); alert( <>string</> ) 空白文字を使わず記述 文脈上、スペースを書きたいけれどいろいろ制約があって書けない場合にはコメントで代替。実行するコードを作り上げてevalしてもいいけど大袈裟なので。 var/**/x=1; */ を含むコードブロックをコメントアウト コードの塊りをコメントアウトしようと思って /* */ で囲むと、コード内に string.

    JavaScript変態文法最速マスター - 葉っぱ日記
  • コマンドラインから起動されたときはコマンドラインアプリケーションとして動作させたい - 葉っぱ日記

    CMD.EXEから起動したときにはそのアプリケーションをコマンドラインアプリケーションとして、それ以外の例えばExplorerなどから起動した場合にはGUIアプリケーションとして動作するようなものを組みたいと思っていろいろ調べたのですが、あまりうまい方法がなく、その場しのぎ的な方法であきらめよう…というメモです。 まず、起動元が CMD.EXE なのかそれ以外なのかの判断には、TH32CS_SNAPPROCESS を指定して CreateToolhelp32Snapshot を呼び出し、PROCESSENTRY32.szExeFile を見て自分の親プロセスが "cmd.exe" かどうかを確認することで判断できます。 つぎに、エントリポイントですが、Visual C++ などのコンパイラを使ってWin32アプリケーションを生成した場合、エントリポイントが _tmain のときはコンソール

    コマンドラインから起動されたときはコマンドラインアプリケーションとして動作させたい - 葉っぱ日記
  • jQuery.ajax でリクエストをキャッシュさせない方法 - 葉っぱ日記

    jQuery.ajax を使ってGETでリソースにアクセスした場合、IEでは2回目以降のリクエストが実際には発行されずにキャッシュされた結果が使われてしまいます。これを防ぐには $.ajax( { url : "http://example.com/", cache : false, data : { a : "abcd" }, ... } ); のように、cache オプションに false を指定すればいいようにドキュメント(http://docs.jquery.com/Ajax/jQuery.ajax#toptions)に書かれています。実際に cache : false を設定してみると、リクエストの発行される URL は、 http://example.com/?a=abcd&_=1253861397368 のようにクエリの末尾に現在時刻のミリ秒が付加されたものになります。 たい

    jQuery.ajax でリクエストをキャッシュさせない方法 - 葉っぱ日記
  • 2009-09-28 - 葉っぱ日記

    jQueryを使うと、ajax 経由で取得した XML ドキュメントのような、ブラウザ(window,document)と切り離された対象でも簡単に操作することができます。例えば、リモートから取得したRSSであれば、以下のようなコードで各項目(item)のタイトル(title)やリンク先(link)、日時(dc:date)を取得することができます*1。 $.ajax( { url : "http://www.example.com/rss.xml", dataType : "xml", type : "get", success : function( xml ){ var s = ""; $( xml ).find( "item" ).each( function(){ s += $(this).find( "title" ).text() + " <" + $(this).find(

    2009-09-28 - 葉っぱ日記