【IT专家网独家】随着网络应用的普及,跨站脚本攻击漏洞经常在一些安全站点发布,这里笔者将整理一些对XSS跨站挂马的一些看法,错误之处请多指点。
什么是跨站脚本(XSS)?
所谓跨站脚本攻击是指在远程WEB页面的html代码中插入具有恶意目的代码,用户误认为该页面是可信赖的,当用户打开该页面,浏览器会自动下载恶意代码,运行其中的脚本。通常跨站脚本被称为"XSS",这是为了与样式表"CSS"进行区分所形成的习惯,所以当你听某人提到CSS或者XSS安全漏洞时,通常指得是跨站脚本攻击。
XSS与脚本注射的区别?
在开始XSS之前,我们需要明白并非所有在网页中插入利用脚本的攻击都被称为XSS。脚本注入是我们常见的另外一种情形,他们的区别在以下两点:
1、脚本注入攻击会将攻击者插入的脚本保存在远程WEB页面里,如SQL注入、XPath注入。
2、跨站脚本攻击相对注入脚本攻击是临时的行为,执行后便从页面中消失。
常见的可被插入脚本的网页有以下几种:
| HTML JavaScript (本文讨论) VBScript ActiveX Flash |
浅析XSS漏洞
许多cgi/php脚本执行时,如果它发现客户提交的请求页面并不存在或有其他类型的错误时,出错信息会通过一个显示错误内容的html页面发送到给访问者。例如: 404错误,提示页面不存在。
我们一般对这样的信息不会注意,但是现在要研究CSS漏洞的成因,我们还是仔细看一下。
例:www.somesite.tld/cgi-bin/program.cgi?page=downloads.html
该URL指向的连接是有效的,但是如果我们把后面的downloads.html替换成brainrawt_owns_ me.html,一个包含404错误信息的页面将反馈给访问者的浏览器。这里我们需要思考,错误信息是如何写入到html文件里呢?
注意:下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一些Javascript代码到页面里。
当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"XSS_Vuln_Testing"。
这个例子只是一个XSS漏洞的简单演示,并无实际意义,只用以说明问题所在。
下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理,就直接写入404错误页面中,结果创建了一个页面,如下:
|
<html> |
其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。

