跨站脚本攻击测试



跨站脚本攻击(XSS)发生在应用程序获取不受信任的数据并将其发送到客户端(浏览器)而无需验证的情况下。这允许攻击者在受害者的浏览器中执行恶意脚本,这可能导致用户会话被劫持、网站被篡改或用户被重定向到恶意网站。

让我们借助简单的图表了解此缺陷的威胁代理、攻击媒介、安全弱点、技术影响和业务影响。

3. cross site scripting

XSS的类型

  • 存储型XSS − 存储型XSS也称为持久型XSS,发生在用户输入存储在目标服务器(例如数据库/消息论坛/评论字段等)时。然后,受害者能够从Web应用程序检索存储的数据。

  • 反射型XSS − 反射型XSS也称为非持久型XSS,发生在用户输入立即被Web应用程序在错误消息/搜索结果中返回,或者用户提供的输入作为请求的一部分,并且没有永久存储用户提供的数据。

  • 基于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>

动手操作

步骤1 − 登录Webgoat并导航到跨站脚本攻击(XSS)部分。让我们执行存储型跨站脚本攻击(XSS)。以下是场景快照。

3. xss

步骤2 − 根据场景,让我们以Tom的身份登录,密码为“tom”(如场景中所述)。点击“查看个人资料”并进入编辑模式。由于Tom是攻击者,让我们将JavaScript注入这些编辑框。

<script> 
   alert("HACKED")
</script> 
3. xss

步骤3 − 更新完成后,Tom会收到一个带有“hacked”消息的警报框,这意味着应用程序存在漏洞。

3. xss

步骤4 − 现在根据场景,我们需要以Jerry(人力资源)的身份登录并检查Jerry是否受到注入脚本的影响。

3. xss

步骤5 − 以Jerry的身份登录后,选择“Tom”并点击“查看个人资料”,如下所示。

3. xss

从Jerry的帐户查看Tom的个人资料时,他能够获得相同的对话框。

3. xss

步骤6 − 此对话框只是一个示例,但实际攻击者可以执行的操作远不止显示对话框。

预防机制

  • 开发人员必须确保根据HTML上下文(例如主体、属性、JavaScript、CSS或URL)转义所有不受信任的数据。

  • 对于需要特殊字符作为输入的应用程序,在接受它们作为有效输入之前,应该有强大的验证机制。

广告