"唇亡齿寒"是二战期间在美国开始流行的一句话。在英国,你听到的是 "漫不经心的谈话要付出生命的代价"。这句话的主要意思是,不小心说出敏感信息可能被间谍听到,导致严重后果。
在构建网络应用程序时,同样的原则也是如此。当你的网络应用程序透露了太多的信息,就会使攻击者更容易侵入。
在这篇文章中,我们将介绍什么是信息暴露,为什么它是危险的,以及如何防止它。
了解信息暴露情况
信息暴露是指网络应用将内部信息暴露给不应该看到的人。它也可以指通过日志文件或用户界面暴露敏感的客户信息。无论哪种方式,攻击者都可以利用他们发现的信息来攻击你的系统或你的用户。
通常情况下,攻击者的第一步是试图在你的应用程序中创建一个错误。糟糕的错误处理和网络应用程序配置导致了错误信息的暴露。如果攻击者在你的应用程序中创建一个错误会发生什么?如果出现一个技术错误信息,包括技术细节,如堆栈跟踪,你已经暴露了太多的信息。这些细节可能包括你使用的数据库或你运行的应用服务器的哪个版本。
敏感信息的披露可以通过其他方式发生。表单上是否有保存敏感信息的隐藏字段?攻击者可以简单地查看页面的源头并看到这些值。
简而言之,当你的用户需要知道的信息太容易被获取时,信息就会暴露。
理解为什么信息暴露是危险的
攻击者可以利用应用程序所暴露的信息做什么?如果信息是敏感的,攻击者可以窃取身份或用户凭证。这可能导致经济损失、侵犯隐私和监管罚款。
如果攻击者使用错误信息来获得有关应用程序的信息,这些信息可能被用于未来的攻击。事实上,OWASP测试指南中有一整节是关于信息收集的。
OWASP测试指南》鼓励使用搜索引擎来发现你的网站的信息,你可能不打算这样做。例如,你的管理页面是否暴露给搜索引擎?使用 robots.txt 文件来告诉搜索引擎不要索引某些页面。同时,robots.txt文件也会泄露信息。敏感的URL有时会驻留在robots.txt文件上。攻击者把文件拉下来,开始了解网站的一些目录结构。
Google has advanced search engine options which allow deep inspection of websites. For example, you can search on a specific site using the "site: <domain>" syntax. You can view cached pages which may have been deleted but still reside in a cache from a previous indexing job. Using different search engines, such as Bing and DuckDuckGo may yield different results, so test on each search engine what is revealed about your web application.</domain>
HTTP头、网站横幅、甚至HTML和JavaScript代码中的注释都可能有攻击者不应该看到的信息。HTTP头信息可以揭示应用服务器和版本号。攻击者可以利用这些信息来寻找针对这些特定版本的漏洞。请确保你了解攻击者可能找到你的信息的所有不同地方,以及如何适当地隐藏它。
打败信息暴露
信息泄露往往是网络应用程序配置的一个问题。许多应用服务器默认在错误信息中返回堆栈痕迹。请确保为生产应用改变这一设置,在记录错误的同时重定向到一个通用的错误页面,以便进行故障排除。详细的错误信息不应该返回给用户的浏览器。
如果你有任何包含敏感信息的应用程序所需的文件,请确保适当的访问控制,确保只有应用程序本身可以读取它。禁用服务器上的目录列表,并将这些文件移到网络根目录之外。这可以防止攻击者使用目录遍历攻击的方式使用浏览器导航到该文件。
当没有正确配置时,日志可以被用来收集信息。当错误发生时,不要记录敏感信息,如密码、会话令牌或个人身份信息(PII)。如果攻击者能够获得对日志文件的访问权,他们会发现一个可以窃取敏感信息的宝库。不要记录超过必要的信息,这通常是一个账户标识符,一个详细的错误信息,也许还有错误发生的方法或正在执行的操作。假设日志文件不是秘密,你就不会被诱惑在其中放置敏感信息。
不要让你的网络应用程序沉没
你真的会在与朋友交谈时泄露信息,直接导致一艘战舰在第二次世界大战中损失吗?也许不会。但为什么要冒这个险呢?这就是 "唇亡齿寒 "这句话的教训。
同样,没有理由将你的网络应用程序的内部运作暴露给外部世界。没有理由查看整个信用卡号码或密码。没有理由把PII数据放在日志文件中。所以不要这样做。请查看我们的学习资源,了解更多关于信息暴露的信息。
把你的应用程序的内部工作放在属于它们的地方。不要让你的网络应用下沉。
你认为你现在就能阻止信息暴露吗?站出来迎接挑战吧,勇士。[从这里开始]