XSS的漏洞查找与检测

摘要

1. 黑盒测试 所谓

1. 黑盒测试

所谓黑盒测试, 就是在不知道系统的代码和运行状态的条件下,对系统进行的测试。在对XSS漏洞的检测中,我们可以模拟黑客的攻击手段,在所有可能的数据输入接口处,尝试 进行一些XSS注入。通过观察注入后的引用这些数据的页面,看其是否出现被注入的现象,即可确实是否存在XSS漏洞。比如我们可以用下面所列的一些脚本来 尝试XSS注入:

><script>alert(document.cookie)</script>

=’><script>alert(document.cookie)</script>

<script>alert(document.cookie)</script>

<script>alert(vulnerable)</script>

<script>alert(’XSS’)</script>

<imgsrc=”javascript.:alert(’XSS’)”>

<imgsrc=”http://xxx.com/yyy.png” nerror=”alert(’XSS’)”>

<divstyle=”height:expression_r(alert(’XSS’),1)” />(这个仅限 IE 有效)

如果在打开那些引用了该输入数据的页面时,弹出对话框显示信息,则可以确定该数据输入时有可能导致XSS注入,从而确定了XSS******的位置。



2. 静态分析

XSS******静态分析方法属于白盒测试方法的一种,它通过对Web应用的代码进行分析,从而发现其中可能存在的问题。通常来说,静态分析技术只是对代码进行一些简单的******,找到其中有可能导致XSS注入的地方,将其报告给我们。

比 如在Web应用的代码中可能存在一些读入数据的API,如Request.QueryString(),$_GET等,如果存在这些API,则表示可能引 入XSS的注入。通过静态分析工具,我们可以很容易发现所有这些读入数据的API,从而详细检查每一个数据输入点是否进行了XSS注入的过滤。可以看到, 静态分析的方法,只是帮助我们定位XSS

的可能位置,由于静态分析工具难以判定是否对输入数据进行过XSS过滤,因此还是需要我们手动地进行 检查,从 而确保不存在XSS******。


3. 数据流分析

XSS ******之所以产生,根本原因在于不安全的数据流, 使得用户的输入数据被直接嵌入到某些页面中。比如PHP中的echo语句,就能够将一些数据直接添加为 HTML页面的一部分,如果这个数据是用户注入了XSS脚本的数据,则会导致产生XSS攻击。因此,数据流分析的主要思想就是使用一些模型或者工具,分析 Web应用程序代码中的数据传输情况,从而发现其中存在的问题。比如,我们可以将用户的输入数据所存储的变量打上污点标记,通过对数据流和变量类型的分 析,逐步标记所有引用了污点变量的中间变量,最后通过观察输出到页面中的变量数据是否存在污点,来判断是否可能产生XSS漏洞。

目前评论:0 条

发表评论