测试跨站点脚本

当应用程序获取不受信任的数据并将其发送到客户端(浏览器)而未经验证时,就会发生跨站点脚本(XSS).这允许攻击者在受害者的浏览器中执行恶意脚本,这可能导致用户会话劫持,破坏网站或将用户重定向到恶意网站.

让我们了解威胁代理,攻击向量,这个缺陷的安全弱点,技术影响和业务影响借助简单的图表.

3.跨站点脚本

XSS类型

  • 存储XSS 去;当用户输入存储在目标服务器上时,存储的XSS也称为持久性XSS,例如数据库/消息论坛/注释字段等.然后受害者能够从Web应用程序检索存储的数据.

  • 反映XSS 当Web应用程序在错误消息/搜索结果中立即返回用户输入或用户作为请求的一部分提供的输入并且不永久存储用户提供的数据时,会发生反射的XSS,也称为非持久性XSS.

  • 基于DOM的XSS 基于DOM的XSS是一种XSS形式,当数据源在DOM中时,接收器也在DOM中,数据流永远不会离开浏览器.

示例

应用程序在构造中使用不受信任的数据而不进行验证.特殊字符应该被转义.

http://www.webpage.org/task/Rule1?query=try

攻击者将浏览器中的查询参数修改为

http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>

Hands ON

第1步登录Webgoat并导航到跨站点脚本(XSS)部分.让我们执行存储的跨站点脚本(XSS)攻击.下面是场景的快照.

3. xss

第2步按照方案,让我们以密码"tom"登录Tom,如方案本身所述.点击"查看个人资料"和进入编辑模式.由于tom是攻击者,让我们将Java脚本注入这些编辑框.

<script> 
   alert("HACKED")
</script>

 3. xss

第3步更新结束后,tom会收到一个警告框,其中包含"被黑"的消息,这意味着应用程序容易受到攻击.

3. xss

第4步现在按照方案,我们需要以jerry(HR)身份登录,并检查jerry是否受注入脚本的影响.

3. xss

第5步以Jerry身份登录后,选择"Tom"并点击"查看个人资料",如下所示.

3. xss

从Jerry的帐户查看tom的个人资料时,他可以获得相同的消息框.

3. xss

步骤6 此消息框只是一个示例,但实际的攻击者可以执行的不仅仅是显示消息框.

预防机制

  • 开发人员必须确保它们根据HTML上下文转义所有不受信任的数据作为放置数据的正文,属性,JavaScript,CSS或URL.

  • 对于那些需要特殊字符作为输入的应用程序,应该是健壮的在接受它们作为有效输入之前的验证机制.