Xcnte

十个最常见的 Web 网页安全漏洞之首篇
说明 OWASP 或 Open Web Security Project 是一家非营利性慈善组织,致力于提高软件和...
扫描右侧二维码阅读全文
02
2019/07

十个最常见的 Web 网页安全漏洞之首篇

说明

OWASPOpen Web Security Project 是一家非营利性慈善组织,致力于提高软件和 Web 应用程序的安全性。该组织根据来自各种安全组织的数据发布顶级 Web 安全漏洞列表。

Web 安全漏洞的优先级取决于可利用性,可检测性和对软件的影响。

  • 可开发性 -
    利用安全漏洞需要什么?当攻击只需要 Web 浏览器而且最低级别是高级编程和工具时,可攻击性最高。

  • 可检测性 -
    检测威胁有多容易?最高的是显示在 URL,表单或错误消息上的信息,最低的是源代码。

  • 影响或损坏 -
    如果安全漏洞暴露或受到攻击,将会造成多大的破坏?最高的是完整的系统崩溃,最低的是什么都没有。

OWASP Top 10 的主要目标是向开发人员,设计人员,经理,架构师和组织介绍最重要的安全漏洞。

十大安全漏洞

  • SQL 注入
  • 跨站脚本
  • 身份验证和会话管理中断
  • 不安全的直接对象引用
  • 跨站点请求伪造
  • 安全配置错误
  • 不安全的加密存储
  • 无法限制 URL 访问
  • 传输层保护不足
  • 未经验证的重定向和转发

注:由于篇幅有限,本文仅介绍前五个 Web 安全漏洞。剩余的五个漏洞将在下篇文章给出。

SQL 注入

描述

注入是一个安全漏洞,允许攻击者通过操纵用户提供的数据来更改后端 SQL 语句。

当用户输入作为命令或查询的一部分被发送到解释器并且欺骗解释器执行非预期的命令并且访问未授权的数据时,发生注入。

Web 应用程序执行时的 SQL 命令也可以公开后端数据库。

意义

  • 攻击者可以将恶意内容注入易受攻击的领域。
  • 可以从数据库中读取用户名,密码等敏感数据。
  • 可以修改数据库数据(插入 / 更新 / 删除)。
  • 管理操作可以在数据库上执行

易受攻击的对象

  • 输入字段
  • 与数据库交互的 URL

例子

  • 登录页面上的 SQL 注入

在没有有效凭据的情况下登录应用程序。

有效的 userName 可用,密码不可用。

测试网址:http://demo.testfire.net/default.aspx

用户名:sjones

密码:1=1' or pass123

创建 SQL 查询并将其发送到 Interpreter,如下所示

SELECT * FROM Users WHERE User_Name = sjones AND Password = 1=1' or pass123;

建议

  1. 白名单列出输入字段
  2. 避免显示对攻击者有用的详细错误消息。

跨站脚本

描述

Cross Site Scripting 也简称为 XSS

XSS 漏洞针对嵌入在客户端(即用户浏览器而不是服务器端)的页面中嵌入的脚本。当应用程序获取不受信任的数据并将其发送到 Web 浏览器而未经适当验证时,可能会出现这些缺陷。

在这种情况下受害者浏览器,攻击者可以使用 XSS 对用户执行恶意脚本。由于浏览器无法知道脚本是否可信,因此脚本将被执行,攻击者可以劫持会话 cookie,破坏网站或将用户重定向到不需要的恶意网站。

XSS 是一种攻击,允许攻击者在受害者的浏览器上执行脚本。

意义

  • 利用此安全漏洞,攻击者可以将脚本注入应用程序,可以窃取会话 cookie,破坏网站,并可以在受害者的计算机上运行恶意软件。

易受攻击的对象

  • 输入字段
  • 网址

例子

  1. http://www.vulnerablesite.com/home?"<script>alert("xss")</script>

上述脚本在浏览器上运行时,如果站点易受 XSS 攻击,将显示一个消息框。

如果攻击者想要显示或存储会话 cookie,则可以进行更严重的攻击。

  1. http://demo.testfire.net/search.aspx?txtSearch <iframe> <src = http://google.com width = 500 height 500></iframe>

上面的脚本运行时,浏览器会加载一个指向 http://google.com 的不可见框。

通过在浏览器上运行恶意脚本可以使攻击变得严重。

建议

  1. 白名单输入字段
  2. 输入输出编码

身份验证和会话管理中断

描述

网站通常为每个有效会话创建会话 cookie 和会话 ID,这些 cookie 包含敏感数据,如用户名,密码等。当会话通过注销或浏览器突然关闭结束时,这些 cookie 应该无效,即每个会话应该有一个新的 cookie

如果 cookie 未失效,则敏感数据将存在于系统中。例如,使用公共计算机(Cyber​​ Cafe)的用户,易受攻击的站点的 cookie 位于系统上并暴露给攻击者。攻击者在一段时间后使用相同的公共计算机,敏感数据会受到损害。

以同样的方式,用户使用公共计算机而不是注销,他突然关闭浏览器。攻击者使用相同的系统,当浏览同一个易受攻击的站点时,受害者的上一个会话将被打开。攻击者可以通过窃取个人资料信息,信用卡信息等做任何他想做的事情。

应该进行检查以找到身份验证和会话管理的强度。密钥,会话令牌,cookie 应该在不影响密码的情况下正确实施。

易受攻击的对象

  • 在 URL 上公开的会话 ID 可能导致会话固定攻击。
  • 注销和登录前后的会话 ID 相同。
  • 会话超时未正确实现。
  • 应用程序为每个新会话分配相同的会话 ID。
  • 应用程序的经过身份验证的部分使用 SSL 进行保护,密码以散列或加密格式存储。
  • 会话可由低权限用户重用。

意义

  • 利用此漏洞,攻击者可以劫持会话,对系统进行未经授权的访问,从而允许泄露和修改未经授权的信息。
  • 使用偷来的 cookie 或使用 XSS 的会话可以高举会话。

例子

  1. 航空公司预订应用程序支持 URL 重写,将会话 ID 放在 URL 中:
    http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives(出售马尔代夫门票)该网站的经过身份验证的用户希望让他的朋友了解该销售并发送电子邮件。朋友收到会话
    ID,可用于进行未经授权的修改或滥用保存的信用卡详细信息。
  2. 应用程序容易受到 XSS 攻击,攻击者可以通过 XSS 访问会话 ID 并可用于劫持会话。
  3. 应用程序超时未正确设置。用户使用公共计算机并关闭浏览器,而不是注销并离开。攻击者稍后使用相同的浏览器,并对会话进行身份验证。

建议

  • 应根据 OWASP 应用程序安全验证标准定义所有身份验证和会话管理要求。
  • 永远不要在 URL 或日志中公开任何凭据。
  • 还应该做出很大的努力来避免可用于窃取会话 IDXSS 漏洞。

不安全的直接对象引用

描述

当开发人员公开对内部实现对象的引用(例如 URLFORM 参数中的文件,目录或数据库键)时,就会发生这种情况。攻击者可以使用此信息访问其他对象,并可以创建将来的攻击来访问未经授权的数据。

意义

使用此漏洞,攻击者可以访问未经授权的内部对象,可以修改数据或破坏应用程序。

易受攻击的对象

URL

例子

更改以下 URL 中的 userid 可以使攻击者查看其他用户的信息。

http://www.vulnerablesite.com/userid=123 修改为 http://www.vulnerablesite.com/userid=124

攻击者可以通过更改用户标识值来查看其他信息。

建议

  1. 实施访问控制检查。
  2. 避免在 URL 中公开对象引用。
  3. 验证对所有引用对象的授权。

跨站点请求伪造

描述

Cross Site Request Forgery 是来自跨站点的伪造请求。

CSRF 攻击是指恶意网站,电子邮件或程序导致用户的浏览器在当前对用户进行身份验证的受信任站点上执行不需要的操作时发生的攻击。

CSRF 攻击强制登录受害者的浏览器向易受攻击的 Web 应用程序发送伪造的 HTTP 请求,包括受害者的会话 cookie 和任何其他自动包含的身份验证信息。

当用户在登录原始网站时点击 URL 时,攻击者将向受害者发送链接,该数据将从网站上被窃取。

意义

将此漏洞用作攻击者可以更改用户配置文件信息,更改状态,代表管理员创建新用户等。

易受攻击的对象

  • 用户档案页面
  • 用户帐户表单
  • 商业交易页面

例子

受害者使用有效凭据登录银行网站。他收到攻击者的邮件说 “请点击这里捐赠 1 美元。”

当受害者点击它时,将创建一个有效请求以向特定帐户捐赠 1 美元。

http://www.vulnerablebank.com/transfer.do?account=cause&amount=1

攻击者捕获此请求并创建以下请求并嵌入一个按钮,说 “我支持原因”。

http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000

由于会话已通过身份验证并且请求通过银行网站发送,因此服务器会向攻击者转移 1000 美元。

建议

  1. 在执行敏感操作时强制用户在场。
  2. 实现 CAPTCHA,重新认证和唯一请求令牌等机制。

支付宝扫码领红包

支付宝红包二维码
Last modification:July 9th, 2019 at 09:45 pm
如果觉得我的文章对你有所帮助,请随意赞赏

Leave a Comment

2 comments

  1. 演员

    66

  2. 枂下

    前排围观