专栏首页FreeBufUEditor编辑器存储型XSS漏洞挖掘

UEditor编辑器存储型XSS漏洞挖掘

前言

UEditor是由百度web前端研发部开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点。UEditor存在一个XSS漏洞,编辑器在定义过滤规则的时候不严和读取内容的时候的绕过导致了该漏洞,目前此漏洞已经上报。

漏洞成因分析

漏洞文件产生在前端配置文件ueditor.config.js:

以下为纯文本粘贴为true时的过滤规则,对一些危险的标签没有做过滤,怪不得好多二次开发的。

//纯文本粘贴模式下的过滤规则
    //'filterTxtRules' : function(){
    //    function transP(node){
    //        node.tagName = 'p';
    //        node.setStyle();
    //    }
    //    return {
    //        //直接删除及其字节点内容
    //        '-' : 'script style object iframe embed input select',
    //        'p': {$:{}},
    //        'br':{$:{}},
    //        'div':{'$':{}},
    //        'li':{'$':{}},
    //        'caption':transP,
    //        'th':transP,
    //        'tr':transP,
    //        'h1':transP,'h2':transP,'h3':transP,'h4':transP,'h5':transP,'h6':transP,
    //        'td':function(node){
    //            //没有内容的td直接删掉
    //            var txt = !!node.innerText();
    //            if(txt){
    //                node.parentNode.insertAfter(UE.uNode.createText('    '),node);
    //            }
    //            node.parentNode.removeChild(node,node.innerText())
    //        }
    //    }
    //}()

如下图,在官方文档里也进行了说明,通过getContent和setContent方法用

标签读取编辑器内容

#通getContent和setContent方法可以设置和读取编辑器的内容
var ue = UE.getEditor();//对编辑器的操作最好在编辑器ready之后再做ue.ready(function(){
    //设置编辑器的内容
    ue.setContent('hello');
    //获取html内容,返回: <p>hello</p>
    var html = ue.getContent();
    //获取纯文本内容,返回: hello
    var txt = ue.getContentTxt();});

HTML中的p标签为段落标签,目前所有主流浏览器都支持

标签。

从编辑器里的左上角显示html可以看出,是带有

标签的,所以在标签内写入payload是不被执行的

如下图,在删除掉

标签后写入payload可触发XSS漏洞

如果没有提交或者保存的功能,那么无法与数据库交互形成存储XSS,但是依然可多次点击左上角html按钮触发xss

漏洞利用

首先安装部署环境:https://github.com/fex-team/ueditor/releases/tag/v1.4.3.3

存储型XSS需要写入后端数据库,这里要把编辑器部署到一个可与数据库交互的环境中。

首先我们打开编辑器输入正常的文本:

抓包并将

标签以及原本的文本删除

插入payload:

%3Cp%3E1111111"><ImG sRc=1 OnErRoR=prompt(1)>%3Cbr%2F%3E%3C%2Fp%3E

成功触发存储型XSS漏洞

经笔者调查在互联网上存在着许多ueditor编辑器在线展示的网站,这些大都存在没有与后端交互的反射型XSS,但是如果存在与后端数据库交互的功能譬如一些写作平台即可形成存储型XSS漏洞,结合一些xss平台,或者再和其他漏洞配合形成组合拳,威力也不容小藐。

防御措施

1、修改 xss过滤白名单 配置文件ueditor.config.js,增加白名单过滤,比如对一些非法的参数和标签,像 <>、,”,’,img标签的onerror属性,script标签等进行自动转义,或者是强制的拦截并提示。

2、对输入的数据也进行html转义,使其不会识别为可执行脚本。

文章分享自微信公众号:
FreeBuf

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Shopify后台XSS存储型漏洞

    存储型XSS,也叫持久型XSS,主要是将XSS代码发送到服务器(不管是数据库、内存还是文件系统等),然后在下次请求页面的时候就不用带上XSS代码了。

    小生观察室
  • Discuz v3.4 xss漏洞 排行页面存储型XSS漏洞

    简要分析source/module/misc/misc_ranklist.php:166Discuz v3.4 xss漏洞<?php function ge...

    C4rpeDime
  • 漏洞预警|豆瓣日记页面存在存储型XSS

    原本测试直接插入,但是实测未能接收,测试IMG标签并对链接做过修整代码,接收成功、

    C4rpeDime
  • 漏洞预警|豆瓣日记页面存在存储型XSS

    原本测试直接插入,但是实测未能接收,测试IMG标签并对链接做过修整代码,接收成功、

    C4rpeDime
  • 价值3133.7美金的谷歌(Google)存储型XSS漏洞

    在漏洞挖掘领域,不谈赏金和其它功利的东西,如果能发现谷歌公司的漏洞或进入其名人堂致谢榜,就已经非常不错的了。今天我要分享的这个漏洞,是迄今为止我上报漏洞中最简单...

    FB客服
  • WordPress插件Google Analytics by Yoast存储型XSS漏洞(含POC)

    WordPress著名插件Google Analytics by Yoast插件中曝出存储型XSS漏洞,该漏洞能够让未被授权的攻击者在WordPress管理面板...

    FB客服
  • 苹果 AirTag曝出存储型XSS漏洞,恐被攻击者利用

    10月1日,安全研究员 Bobby Rauch 在苹果 AirTag 产品中发现了一个存储型跨站脚本攻击漏洞 ,攻击者可以利用该漏洞诱使用户访问恶意网站。由于 ...

    FB客服
  • 通过图片触发XssPayload从而绕过WAF

    一个正常的gif图片加上一个XSS的PayLoad,然后通过脚本将XssPayload注入到图片里面!

    渗透攻击红队
  • 某旅游网存储型xss和越权修改任意用户信息漏洞

    这里我们是用户A的账户,测试账号B作为被攻击者,将id值改为1121499然后放包。

    天钧
  • 浅谈

    首先信息收集,是渗透测试中的一项重中之重!如果服务器是一个保险柜,那么你想要打开这个保险柜,首先你得了解它是什么做的,怎么样的架构,才能去考虑怎么动手。

    Gcow安全团队
  • 【公益分享】炼石计划企业级JavaWeb漏洞挖掘实战之第二期基于SpringBoot架构的办公OA系统漏洞挖掘

    简单来说就是带着大家一起针对企业级JavaWeb系统、网站进行黑盒测试和白盒测试,也就是渗透测试和代码审计的漏洞挖掘。

    用户1631416
  • 炼石计划之50套JavaWeb代码审计(二):SpringBoot架构的OA系统代审之路

    oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引...

    用户1631416
  • 手工找出网站中可能存在的XSS漏洞

    笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备...

    汤青松
  • 快速找出网站中可能存在的XSS漏洞实践(一)

    笔者最近在慕课录制了一套XSS跨站漏洞 加强Web安全视频教程,课程当中有讲到XSS的挖掘方式,所以在录制课程之前需要做大量实践案例,最近视频已经录制完成,准备...

    汤青松
  • XSS基础(新手篇)

    XSS全称跨站脚本攻击,用户浏览网页时,嵌入的Script代码被执行,从而达到攻击用户的目的,常见漏洞页面,网站搜索页面,留言板。

    网e渗透安全部
  • 兄dei ! 请接住FineCMS的GetShell姿势

    0x00 背景 上周,发现了finecms的一些后台的洞,斗哥先从配置文件写入开始分析,然后再结合本篇的存储XSS进行GetShell,本篇分析下存储XSS的问...

    漏斗社区
  • 这可能是最适合萌新入门Web安全的路线规划

    最近在后台经常收到粉丝问,Web安全有没有什么路线。确实,Web安全的范围实在太大,哪些先学,哪些后学,如果没有系统的路线会降低大家效率,对于刚入门的同学们来说...

    贝塔安全实验室
  • WEB安全Permeate漏洞靶场挖掘实践

    最近在逛码云时候发现permeat靶场系统,感觉界面和业务场景设计的还不错.所以过来分享一下.

    汤青松

扫码关注云+社区

领取腾讯云代金券