XSS通过组件属性的漏洞
问题
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 97.0.4692.71 可复制演示链接 https://jsfiddle.net/ovrz5ug2/4/ 描述一下那个虫子 你好——我们在多人游戏场景中使用 GrapesJS 时遇到了这个 XSS 漏洞,几个特权用户可以通过编辑器(即非开发者)对模板和组件进行修改。实际上,这使他们容易受到组织内部攻击,一个用户添加了恶意代码,另一个用户可能发现并运行。 如何复现这个漏洞?在组件的“id”属性中添加恶意代码,可以直接在HTML中或通过特征管理器(并保存)——在这种情况下,'id=“<details/open/ontoggle=alert(document.location)>'在实时预览中点击组件,观察警报,或者通过样式管理器,使用组件状态下拉菜单并将其更改为其他状态,例如悬停。 预期的行为是什么? 不通过组件属性(包括但不限于“id”)实现XSS。 目前的行为是什么? GrapesJS 运行了恶意代码。 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js 见上文,将此代码添加到组件属性中,例如 ID <details/open/ontoggle=alert(document.location)> ``` 如果你有任何建议或指导,我可以帮你申请永久居民。 行为准则 [X]...
回答(4)
谢谢@diemkay如果你有任何建议,请参考这个问题:https://github.com/artf/grapesjs/issues/3082
@artf 谢谢,但我已经看过那个工单了,它并没有涵盖我这里描述的问题。
注入不在实时预览中,而是在样式管理器中,它尝试通过设置“.innerHtml”来显示组件的“id”。
是的,抱歉,关得太早😁了。我会试着在下一个版本修复。
谢谢你举报,@diemkay。 安全和依赖性问题很重要。GrapesJS 团队积极致力于保持依赖系统的更新。 为你现在: 运行“npm审计修复”以查看可用的补丁 查看是否有更新的GrapesJS版本,可能已经解决了这个问题 如有稳定版,升级前先测试最新稳定版 如果漏洞非常严重,可以使用“npm audit fix --force”,但请务必彻底测试 理解风险: 在GitHub安全公告中查看具体漏洞详情 并非所有高严重性问题都会影响你的代码路径 某些漏洞仅在特定条件下触发 保持最新: 关注GrapesJS的新发布 订阅仓库的安全通知 团队在发布周期中优先考虑安全更新
相关问答
通过相似的问题讨论继续研究。
问题 #4411
XSS在选择器管理器中添加类名时
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v102 可复制演示链接 https://jsfiddle.net/szLp8h4n 描述一下那个虫子 如何复现这个漏洞?选择任意组件在选择器管理器中添加类名,比如“<a href=...
问题 #5460
从“pageManager”加载“组件”和“样式”
葡萄JS版本[X] 我确认使用最新版本的GrapesJS你用的是什么浏览器? Chrome v117.0.5938.149可复制演示链接 https://jsfiddle.net/9oLrsvya/描述一下那个虫子 如何复现这个漏洞?请参见 jsfiddle 中的“pageMa...
问题 #4754
关闭脚本</script>属性的“''标签无法逃脱
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome 版本 107.0.5304.122(64 位) 可复制演示链接 https://jsfiddle.net/j5khz1gm/ 描述一下那个虫子 如何复现这个漏洞?创建具有以下默认属性...
问题 #4341
在为 HTML 组件添加边界样式时,css json 只抓取边界选择器,却不抓取 border-width、border-style、border-colorBUG 的选择器:
葡萄JS版本 [X] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v101.0.4951.54 可复制演示链接 https://jsfiddle.net/7sn5h91r/7/ 描述一下那个虫子 我的问题是样式、边界、属性、宽度、样式和颜色在 JS...
与此问题匹配的付费插件
根据问题关键词和标签相关性精选,助你更快交付。
正在加载付费插件推荐……
相关教程
关于同一主题的深入指南。
教程
GrapesJS DevTools: A Developer Panel Inside Your Editor
If you've ever debugged GrapesJS with console.log(editor.getSelected()) and a dozen throwaway event listeners — this post is for you.
教程
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
教程
Big Updates: TinyMCE 8 and Placeholder 2.0 for GrapesJS
In May we shipped major updates to two of our most popular GrapesJS plugins — TinyMCE Inline Text Editor and Placeholder.
浏览插件分类
直接跳转到市场上的插件分类页面。