售前咨询
技术支持
渠道合作

Web应用程序中的信息泄露问题和攻击

信息泄露是指应用程序无法正确保护敏感信息,使其无法在正常情况下访问此类信息。在大多数情况下,这些类型的问题无法被利用,但被视为Web应用程序安全问题,因为它们允许攻击者收集可在攻击生命周期后期使用的信息,以便在未获得的情况下实现更多功能。访问此类信息。

信息泄露问题的范围可以包括泄漏信息的关键性,从披露有关服务器环境的详细信息到泄露管理帐户凭据或API密钥,这可能会对易受攻击的Web应用程序造成破坏性后果。

不同类型的信息披露问题

下面的列表突出显示了Web应用程序中的许多信息泄露问题。该列表还包括有关每个信息泄露安全问题的示例,并说明如何发现每个问题。

横幅抓斗/主动侦察:

横幅抓取或主动侦察是一种攻击,在此期间攻击者向他们试图攻击的系统发送请求,以便收集有关它的更多信息。如果系统配置不当,可能会泄漏有关自身的信息,例如服务器版本,PHP / ASP.NET版本,OpenSSH版本等。

在大多数情况下,横幅抓取不涉及关键信息的泄漏,而是涉及攻击者通过攻击的开发阶段的信息。例如,如果目标泄漏了它在服务器上运行的PHP版本,并且它碰巧容易受到远程命令/代码执行(RCE)的影响,因为它没有更新,攻击者可能利用已知漏洞并完全控制的Web应用程序。

横幅抓取的例子

 

在上面的例子中,我们可以看到Netsparker识别出在目标主机上运行的旧版PHP。您还可以使用Netsparker中的  HTTP请求/响应选项卡以原始格式查看目标服务的HTTP响应,其中还突出显示旧版本的PHP。

 

源代码披露

当Web应用程序的后端环境的代码向公众公开时,会发生源代码泄露问题。源代码公开使攻击者能够通过简单地读取代码并检查逻辑缺陷或硬编码的用户名/密码对或API密钥来了解应用程序的行为方式。此处的严重性取决于公开的代码量,以及泄漏的代码行对Web应用程序的安全性的重要程度。简而言之,源代码公开将黑盒测试过程变成了更多的白盒测试方法,因为攻击者可以访问代码。

源代码泄露问题可以通过多种方式发生,下面是其中一些:

未受保护的公共代码存储库

许多人经常在云中托管他们的源代码,以改进协作开发方法。此类存储库有时未得到很好的保护,可能允许攻击者访问托管的源代码和信息。此外,一些开发开源软件的公司使用公共存储库,以便公众可以为项目做出贡献。在这种情况下,源代码已经公开,但这不是第一次公开可用的源代码包含敏感信息。

不受保护的源代码库的示例

某些源代码存储库仅允许用户根据身份验证过程查看其内容。此类存储库有时配置不当,任何人(例如具有特定电子邮件地址)都无法访问其内容,无法限制对应具有此类访问级别的某些帐户的访问权限。

 

Netsparker扫描程序在目标wesite上识别出一个SVN存储库

另一个例子是当公共代码具有硬编码的敏感信息时,例如用户凭证或API密钥。攻击者可以轻松地使用此类信息来破坏这些服务或导致合法用户的可访问性问题。通常在信息泄露期间公开的另一条信息是内部IP地址,允许攻击者识别和了解内部网络拓扑。然后,此类信息可用于转入网络,并通过服务器端请求伪造(SSRF)攻击攻击多个系统。

MIME类型不正确

Web浏览器知道如何解析从Content-Type HTTP标头接收的信息,该标头由Web服务器在HTTP响应中发送。例如,在下面的屏幕截图中,我们可以看到Content-Type 标头设置为  text / html,因此浏览器会解析HTML并显示输出。

 

虽然如果Web服务器配置错误,例如它在提供HTML页面时发送标题Content-Type:text / plain而不是Content-Type:text / html,代码将在浏览器中呈现为纯文本,允许攻击者可以看到页面的源代码。

对敏感数据的不当处理

另一个常见错误是硬编码重要信息,例如用户名/密码对,脚本中的内部IP地址以及代码和网页中的注释。在大多数情况下,此类信息将在生产Web应用程序中发布。此类信息的披露可能会导致Web应用程序的破坏性结果; 攻击者所要做的就是在这些网页的源代码中查找这些信息(即通过右键单击页面然后选择“查看页面源”,不要与“ 源代码 ” 混淆)。如果在Web应用程序的注释中发现可能的敏感信息, Netsparker将提醒您。

文件名和文件路径信息披露

在某些情况下,Web应用程序可以公开文件名或文件路径,从而揭示有关底层系统结构的信息。这可能是由于用户输入的错误处理,后端的异常或Web服务器的不适当配置造成的。有时,可以在Web应用程序,错误页面,调试信息等的响应中找到或识别此类信息。

文件名和路径信息披露示例

攻击者可以进行的一项简单测试,即检查Web应用程序是否公开了任何文件名或路径,即发送一些他认为目标可能处理不同的请求。例如,当发送以下请求时,Web应用程序返回403(禁止)响应:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd

但是当攻击者发送以下序列时,他会收到404(未找到)响应:

https://www.example.com/%5C../%5C../%5C../%5C../%5C../%5C../etc/doesntexist

因为对于第一个请求,攻击者得到了403 Forbidden错误,而对于第二个请求,他得到了404 Not Found,他知道在第一个案例中有问题的文件存在。因此,攻击者可以利用Web应用程序的行为来利用它,以便了解服务器的结构,并验证系统上是否存在某个文件夹或文件。

目录列表

与文件名和路径公开相关的是Web服务器中的目录列表。Web服务器上默认提供此功能。当没有显示默认网页时,Web服务器向用户显示网站上存在的文件和目录列表。

因此,如果Apache Web服务器上的默认文件名是index.php,并且您没有在网站的根目录中上传名为index.php的文件,则服务器将显示根目录的目录列表,而不是解析php文件,如下面的截图所示。

 

在生产环境中启用此类功能是一种不好的做法,可能会导致更大的安全问题。

目录列表如何用于攻击目标的示例

现在很多人都知道应该禁用这样的功能,所以看到它并不常见。虽然让我们假设在扫描Web服务器的端口后,攻击者发现在端口8081上运行的Web服务器的默认安装。

Web服务器管理员通常会忽略这种“默认值”,这也意味着它们的安全性要低得多。安装还可以启用目录列表,允许攻击者浏览目录并访问Web应用程序的源代码,备份和可能的数据库文件。

减少信息披露

信息披露安全问题可能看起来像是微不足道的问题,但事实并非如此。它们允许攻击者获取有关他们愿意攻击的目标的深刻信息,只需执行基本测试,有时只需在公共页面中查找信息即可。事实上,Netsparker报告了信息泄露问题,并且在知识库节点中,它还报告  了在目标网站的代码中找到的任何可能的敏感评论。

因此,您应始终解决这些问题,尤其是当您认为它们真的很容易被缓解时。以下是一些要遵循的准则,以便您可以确保您的Web应用程序得到很好的保护,以防止出现最明显的信息泄露问题:

· 确保您的Web服务器不发送显示有关后端技术类型或版本信息的响应标头。

· 确保服务器的开放端口上运行的所有服务都不会显示有关其构建和版本的信息。

· 始终确保适当的访问控制和授权,以禁止所有Web服务器,服务和Web应用程序上的攻击者访问。

· 不要在代码中硬编码凭据,API密钥,IP地址或任何其他敏感信息,甚至不以注释的形式。

· 在Web服务器上为Web应用程序中使用的所有不同文件配置正确的MIME类型。

· 不应将不需要在Web服务器上的敏感数据或文件永远不应上载到Web服务器上。

· 始终检查创建/编辑/查看/删除资源的每个请求是否具有适当的访问控制,防止权限升级问题并确保所有机密信息保密。

· 确保您的Web应用程序正确处理用户输入,并且始终为所有不存在/不允许的资源返回一般响应,以便混淆攻击者。

· 后端代码应该采用足够的验证来捕获所有异常并防止有价值信息的泄漏。

· 配置Web服务器以禁止可能出现的任何异常并返回一般错误页面。

· 配置Web服务器以禁止目录列表,并确保Web应用程序始终显示默认网页。

以上,是为大家分享”Web应用程序中的信息泄露问题和攻击”的全部内容,如果用户遇到的问题不能解决,可到数安时代GDCA官网,咨询客服,数安时代GDCA可提供免费一对一的SSL证书技术部署支持,免除后顾之忧.

素材收集于网络。

上一篇:

下一篇:

相关文章