安全配置错误
安全配置错误在某种程度上是一个总括术语,它涵盖了因应用程序配置设置而非代码错误而产生的常见漏洞。 这是一个涉及面很广的话题,在很大程度上取决于技术堆栈等因素。
很多时候,解决这些问题看似简单,比如更改一个配置文件甚至一行代码,但这些漏洞的影响和后果可能非常严重。
让我们来看看下面的几个类别。
类别
网络服务器
网络服务器上的一个典型错误配置是启用目录列表。
启用目录列表通常不会产生什么直接影响,但攻击者却很容易发现其他可能存在的错误。这些错误可能是故意隐藏的页面、备份文件和其他类似项目。
值得注意的是,所有这些事情本身也都是糟糕的做法,属于隐蔽安全。
目录列表的禁用非常简单,它可以增加深度防御,使攻击者在枚举主机以寻找潜在攻击向量时付出更高的代价。
框架
调试模式
大多数框架都为开发人员提供了 "调试 "模式。除其他功能外,该模式通常会在出现未处理异常时显示堆栈跟踪详情。有些框架甚至会在堆栈跟踪的同时显示代码片段。这对你的开发工作大有帮助,但同时也会为攻击者提供很多他们不应该获取的信息。
监测终点
许多框架还可以启用一系列端点,以便监控应用程序,无论是在生产环境还是测试/开发环境中。
其中包括
- 度量衡(普罗米修斯)
- 日志
- 环境信息
- 路径/网址映射
虽然这些信息通常并不敏感,但仍能提供一些细节,帮助潜在攻击者更好地了解您的应用程序。当然,您的环境或日志实际上可能包含敏感信息,因此,如果被窥探到,一定要注意哪些信息是可见的,哪些信息是可以利用的。
生产环境与非生产环境的区别
人们经常会犯这样的错误,即在开发/测试环境中不遵守禁用目录列表、调试模式和调试端点等准则,而只在生产环境中这样做。 理由是这些非生产系统是用于测试的,而获取这些功能提供的信息非常重要。
然而,这种想法是错误的。攻击者仍然能够探查和披露非生产系统的信息,然后利用从测试系统收集到的信息攻击你的生产系统。在测试系统中使用生产数据库副本的公司也并不少见,这就进一步增加了风险。
XXE
一种非常严重的安全配置错误是 XML 外部实体 (XXE)。
在启用实体解析的情况下从不具信任度的来源进行解析时,就会出现这种情况。XXE 可导致任意文件读取和服务器端请求伪造等。
请查看下面的示例,了解更多细节,尤其是这个简单的示例。