4.1.5-检查网页内容是否存在信息泄露

检查网页内容是否存在信息泄露

ID
WSTG-INFO-05

总结

程序员在他们的源代码中包含详细的注释和元数据是很常见的,甚至建议这样做。但是,HTML 代码中包含的注释和元数据可能会泄露潜在攻击者不应获得的内部信息。应进行注释和元数据审查,以确定是否有任何信息被泄露。此外,某些应用程序可能会泄漏重定向响应正文中的信息。

对于现代 Web 应用程序,在前端使用客户端 JavaScript 正变得越来越流行。流行的前端构造技术使用客户端JavaScript,如ReactJS,AngularJS或Vue。与HTML代码中的注释和元数据类似,许多程序员也在前端的JavaScript变量中对敏感信息进行硬编码。敏感信息可以包括(但不限于):私有 API 密钥(例如不受限制的 Google 地图 API 密钥)、内部 IP 地址、敏感路由(例如指向隐藏管理页面或功能的路由),甚至凭据。这些敏感信息可以从此类前端 JavaScript 代码中泄露。应进行审查,以确定是否有任何敏感信息泄露,可能被攻击者用于滥用。

对于大型 Web 应用程序,性能问题是程序员非常关心的问题。程序员使用不同的方法来优化前端性能,包括语法上很棒的样式表(Sass),Sassy CSS(SCSS),webpack等。使用这些技术,前端代码有时会变得难以理解和调试,因此,程序员经常部署源映射文件以进行调试。“源映射”是一个特殊文件,它将资产的缩小/丑化版本(CSS或JavaScript)连接到原始创作版本。程序员仍在争论是否将源映射文件引入生产环境。但是,不可否认的是,源映射文件或用于调试的文件如果发布到生产环境,将使其源文件更易于人类阅读。它可以使攻击者更容易从前端查找漏洞或从前端收集敏感信息。应该进行JavaScript代码审查,以确定是否有任何调试文件从前端公开。根据项目的上下文和敏感性,安全专家应决定文件是否应存在于生产环境中。

测试目标

  • 查看网页评论、元数据和重定向正文以查找任何信息泄漏。
  • 收集 JavaScript 文件并查看 JS 代码,以更好地了解应用程序并查找任何信息泄漏。
  • 确定是否存在源映射文件或其他前端调试文件。

如何测试

查看网页注释和元数据

开发人员经常使用 HTML 注释来包含有关应用程序的调试信息。有时,他们会忘记注释并将其留在生产环境中。测试人员应查找以 div> ...

测试人员甚至可能会发现这样的东西:


检查 HTML 版本信息以获取有效的版本号和数据类型定义 (DTD) URL

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  • strict.dtd – default strict DTD(默认)
  • loose.dtd – loose DTD(松散)
  • frameset.dtd – DTD for frameset documents(文档的框架集)

某些META 标签不提供主动攻击媒介,而是允许攻击者分析应用程序:

<META name="Author" content="Andrew Muller">

一个常见的(但不符合 WCAG)标记是刷新。 (但不符合 WCAG compliant) META 标记是刷新 Refresh。

<META http-equiv="Refresh" content="15;URL=https://www.owasp.org/index.html">

META 标记的常见用途是指定搜索引擎可用于提高搜索结果质量的关键字。

<META name="keywords" lang="en-us" content="OWASP, security, sunshine, lollipops">

尽管大多数 Web 服务器通过robots.txt 文件管理搜索引擎索引,但它也可以通过 META 标签进行管理。下面的标签将建议机器人不要索引,也不要跟踪包含标签的HTML页面上的链接。

<META name="robots" content="none">

互联网内容选择平台Platform for Internet Content Selection (PICS) 和 Web 描述资源协议 Protocol for Web Description Resources (POWDER) 为将元数据与互联网内容相关联提供了基础设施。

识别 JavaScript 代码和收集 JavaScript 文件

程序员经常在前端使用 JavaScript 变量对敏感信息进行硬编码。测试人员应该检查HTML源代码,并在 标签之间寻找JavaScript代码。测试人员还应该识别外部JavaScript文件来审查代码(JavaScript文件具有JavaScript文件的文件扩展名 .js 和名称,通常放在

你可能感兴趣的:(4.1,信息收集,web安全)