大规模的数据泄露和严重的安全漏洞让企业比以往任何时候都更重视安全问题。许多开发人员都熟悉OWASP前10名(https://owasp.org/www-project-top-ten/),并且已经有许多关于这些漏洞的通用缓解的资源。相反,在本系列中,我将介绍特定于AEM的安全问题和缓解方法。今天的主题是Sling Resolution。
之前的系列文章:
吊索解决漏洞
由于默认的Sling Resolution行为,Dispatcher Allow规则集是AEM中最大的风险向量之一。在这里花费大量的安全测试时间,因为这是恶意行为者发现其他漏洞、破坏系统内数据并实现远程代码执行的最常见方法。
远程代码执行(RCE)是影响最大的问题,因为攻击者可能会获得广泛的进一步利用选项。这可能包括破坏系统、泄露数据、窃取用户凭据,以及在合法域名上创建钓鱼页面。
在创建防御措施时,首先了解RCE是如何发生的是很有用的。如果黑客能够访问OSGI控制台,写入/apps或(在不安全的系统中)/content, Querybuilder, Groovy控制台,ACS AEM Tools或WebDAV,则RCE是可能的。最好完全禁止任何用户访问产品发布器上的这些特性。从那里,利用Adobe的最佳实践,拒绝所有路径,然后允许必要的路径。中的最新版本的调度程序规则应该可以缓解这些潜在的漏洞Adobe的AEM项目原型,但也值得在您自己的调度程序中确认。
以下不是一个全面的漏洞列表,但它会给你一个开始寻找的想法。
- 有时开发人员编写的规则过于严格,或者允许的规则不够严格。例如,请求/bin/querybuilder.json / test.css仍然可以返回AEM查询生成器页面。而不是使用:
{/type " deny " /path " /bin/querybuilder "}
对子路径和扩展路径使用通配符(*)匹配。如。
{/type " deny " /path " /bin/querybuilder* "}
- 向URL添加选择器、URL参数、多个斜杠可能会改变Sling和Dispatcher解释请求的方式。许多漏洞依赖于通过.json呈现请求公开JCR内容结构。
- 如果恶意用户获得了内容结构的访问权,他们通常可以挖掘用户名、存储在纯文本中的凭据、PII、暴露的管理页面或关于系统中其他漏洞的线索。攻击者可能只需要找到一个用户名,在那里他们可以暴力破解密码,就会有更大的数据泄露。
- 默认情况下,请求中编号为(-1,1,2,3…)、“children”和“infinity”的选择器会被Sling解释为JSON响应,以显示当前的内容路径和它下面的Sling资源。这个功能不应该在调度程序上可用。
- 如果您已启用吊带模型出口商对于您的Sling Model对象,确保没有敏感数据或属性在响应中意外暴露。
付诸实践
随着AEM市场份额的增加,黑客发现漏洞的动机也在增加,因此测试并了解最新的推荐允许规则非常重要。非常彻底地测试任何偏离标准规则集的规则。
需要一些实际的例子吗?下面我提供了一些基本的url,用于在调度程序上进行测试。在公共互联网上,这些应该返回404或适当地重定向。如果不是,则表示应用程序中存在漏洞。
- / content.infinity.json
- / .1.json
- / content.5.json
- / content.ext.json
- / content.children.json test.css
- /等- 1. - json
- / content.html test.png / test.1.json
- /bin/querybuilder.json / test.css
- /bin/querybuilder.json ? a.html
- /bin/querybuilder.json.css
- /bin/querybuilder.json.servlet.css
- / / bin / / querybuilder.json
- /系统/控制台/包? . css
欲了解更多关于Perficient如何帮助您实现AEM安全目标并实现您梦想的数字体验的信息,我们很乐意听取您的意见。
接触Perficient开始你的旅程.