Flash XSS 漏洞详解 根治的好办法
package
{
import flash.display.Sprite;
import flash.external.ExternalInterface; public class XSSTest extends Sprite
{
public function XSSTest()
{
var jsFunction:String = loaderInfo.parameters.jsFunction;
var param:String = "abc";
ExternalInterface.call(jsFunction, param);
}
}
}

public function XSSTest()
{
var param:String = loaderInfo.parameters.param;
ExternalInterface.call("console.log", param);
}

try { __flash__toXML(console.log("good" )) ; } catch (e) { "<undefined/>"; }

try { __flash__toXML(console.log("\\" ));alert(/XSS/);}catch(e){} //")) ; } catch (e) { "<undefined/>"; }
try { document.getElementById("XSSTest" ).SetReturnValue(__flash__toXML(alert( null)) ); } catch (e) { document.getElementById("XSSTest" ).SetReturnValue("<undefined/>"); }
public static function checkJsFunctionValid(functionName:String):Boolean
{
var reg:RegExp = /^[a-zA-Z0-9_\.]+$/;
return reg.test(functionName);
} public static function checkObjectIdValid():Boolean
{
if (ExternalInterface.available)
{
var objectId:String = ExternalInterface.objectID;
if (!objectId || (objectId == objectId.replace(/[^0-9a-zA-Z_]/g , "")))
return true;
else
return false;
}
return true;
}
str.replace( /[\"\\]/g , function(d:String, b:*, c:*){ return '\\' + d.charCodeAt(0).toString(8); });
function __flash__arrayToXML(obj) {
var s = "<array>" ;
for (var i=0; i<obj.length; i++) {
s += "<property id=\"" + i + "\">" + __flash__toXML(obj[i]) + "</property>";
}
return s+"</array>" ;
}
function __flash__argumentsToXML(obj,index) {
var s = "<arguments>" ;
for (var i=index; i<obj.length; i++) {
s += __flash__toXML(obj[i]);
}
return s+"</arguments>" ;
}
function __flash__objectToXML(obj) {
var s = "<object>" ;
for (var prop in obj) {
s += "<property id=\"" + prop + "\">" + __flash__toXML(obj[prop]) + "</property>" ;
}
return s+"</object>" ;
}
function __flash__escapeXML(s) {
return s.replace(/&/g, "&" ).replace(/</g, "<").replace(/>/g, ">" ).replace(/"/g, "" ").replace(/'/g, "'");
}
function __flash__toXML(value) {
var type = typeof(value);
if (type == "string" ) {
return "<string>" + __flash__escapeXML(value) + "</string>";
} else if (type == "undefined") {
return "<undefined/>" ;
} else if (type == "number") {
return "<number>" + value + "</number>";
} else if (value == null) {
return "<null/>" ;
} else if (type == "boolean") {
return value ? "<true/>" : "<false/>";
} else if (value instanceof Date) {
return "<date>" + value.getTime() + "</date>";
} else if (value instanceof Array) {
return __flash__arrayToXML(value);
} else if (type == "object") {
return __flash__objectToXML(value);
} else {
return "<null/>" ; //???
}
}
function __flash__addCallback(instance, name) {
instance[name] = function () {
return eval(instance.CallFunction("<invoke name=\"" +name+"\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments,0) + "</invoke>" ));
}
}
function __flash__removeCallback(instance, name) {
instance[name] = null;
}
Flash XSS 漏洞详解 根治的好办法的更多相关文章
- Uboot mmc命令解析&NAND flash uboot命令详解
转载:http://blog.csdn.net/simonjay2007/article/details/43198353 一:mmc的命令如下: 1:对mmc读操作 mmc read addr bl ...
- FLASH动作脚本详解
FLASH动作脚本详解 一.FLASH脚本基础入门讲解 二.按钮AS的编写 三.影片剪辑的AS编写 四.动态文本框 五.影片剪辑的拖拽 六.流程控制与循环语句 七.绘图及颜色的AS的编写 八.声音 A ...
- 渗透测试学习 十七、 XSS跨站脚本漏洞详解
一般用途:拿cookie进后台,将后台地址一起发送过来 特点:挖掘困难,绕过困难 大纲: XSS漏洞基础讲解 XSS漏洞发掘与绕过 XSS漏洞的综合利用 XSS漏洞基础讲解 XSS介绍: 跨站脚 ...
- android WebView详解,常见漏洞详解和安全源码
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 转载请注明出处:http://blog.csdn.net/se ...
- Java反序列化漏洞详解
Java反序列化漏洞从爆出到现在快2个月了,已有白帽子实现了jenkins,weblogic,jboss等的代码执行利用工具.本文对于Java反序列化的漏洞简述后,并对于Java反序列化的Poc进 ...
- Flash XSS漏洞快速上手
0x01 Flash XSS xss一是指执行恶意js,那么为什么说flash xss呢?是因为flash有可以调用js的函数,也就是可以和js通信,因此这些函数如果使用不当就会造成xss.常见的 ...
- 【转】SPI FLASH与NOR FLASH的区别 详解SPI FLASH与NOR FLASH的不一样
转自:http://m.elecfans.com/article/778203.html 本文主要是关于SPI FLASH与NOR FLASH的相关介绍,并着重对SPI FLASH与NOR FLASH ...
- web漏洞详解及修复建议
1.漏洞描述 跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私.钓鱼欺骗.偷取密码.传播恶意代码等攻击行为. 恶意的攻击者将对客户端有危害的 ...
- xss靶场详解
一个XSS靶场练习记录 https://blog.csdn.net/qq_41500251/article/details/101116697 001.level 1 反射型 1.观察源码 <s ...
随机推荐
- Fragment中生命周期函数的介绍
1)第一次启动:onCreate->onAttach->onCreate->onCreateView->onActivityCreated->onStart->on ...
- Asp.Net Mvc表单提交之List集合
一.说明 1.Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值, 2.对于name=value类型,只要Action参数的变量名和input的name相同就行,不区分大 ...
- java HttpServletRequest和HttpServletResponse詳解
這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 java HttpServletRequest和HttpS ...
- perf使用示例1
perf使用示例1 perf - Performance analysis tools for Linux Performance counters for Linux are a new kerne ...
- secureCRT在Windows上面的安装过程
参考这篇文章: https://www.cnblogs.com/yjd_hycf_space/p/7729796.html
- dbcp、c3p0、jdbc常用连接配置
dbcp连接数据库配置 比较常见 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSo ...
- SharePoint _layouts下自定义程序页面权限管理
在sharepoint中,_layouts下的自定义页面没有特别的权限,只要用户能访问sharepoint站点就可以访问_layouts下的自定义程序页面,现在我们需要给自定义页面做一下权限认证.要求 ...
- LeetCode 总结
LeetCode 方法详解
- cmd怎么删除Oracle数据库中的用户实例
Oracle数据库使用过程中,针对系统都会建立独立的数据库用户,但有些时候处于测试或别的原因需要删除,原来的DB用户,这时我们可以使用下面的办法. 下属操作的前提是——确保数据库服务及监听均处于启动状 ...
- centos7 tomcat9
1.下载 下载 apache-tomcat-9.0.0.M4.tar.gz 文件: wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0 ...