DedeCMS v 5.7 sp2 RemoveXSS bypass

访客5年前黑客资讯1111

DedeCMS 简称织梦CMS,当时最新版为 5.7 sp2,最近又去挖了挖这个CMS,发现过滤XSS的RemoveXSS函数存在缺点导致能够被绕过。
相关环境
源码信息:DedeCMS-V5.7-UTF8-SP2
缝隙类型:反射型XSS
下载地址:http://www.dedecms.com/products/dedecms/downloads/
缝隙文件:/include/helpers/filter.helper.php
缝隙剖析
1.先检查/include/helpers/filter.helper.php文件,其间的RemoveXSS函数,其间代码如下:


2.过滤的大约流程是,前面先把例如十进制和十六进制的(xxxxxxxxx;)这种编码,转换回本来的字符,后边便是依据$ra1和$ra2里的黑名单进行过滤替换,例如javascript:alert(1)会被过滤成 javascript:alert(1);

3.假如这个时分,我输入的内容是
javascrip%26%2338%3B%26%2335%3B%26%2349%3B%26%2349%3B%26%2354%3B%26%2359%3B:alert(1);
4.url解码得到
javascript:alert(1);
5.这个时分进去RemoveXSS,进行之一次处理,也便是把(xxxxxxxxx;)这种编码,转换回本来的字符,得到
javascript:alert(1);
6.后边的过滤过程便是黑名单过滤了,可是javascript并不在黑名单之内,所以不会过滤,终究便是输出内容了;
7.这个时分输出t在标签的特点里面会从头还原成字母t,所以终究会在html输出javascript:alert(1);

8.下面是测验作用图:


总结
1.我画了草图,两次和一次编码的差异如下:

2.别的后边的代码会依据黑名单生成正则表达式,我拿其间一个测验,这段代码会生成正则表达式:


3.依据生成的其间一条正则表达式,能够看出,他应该是匹配javascript之间有没有歹意字符避免绕过,例如j avascript会被匹配到

4.正则匹配的是歹意字符之间的xxxxx;,以分号结束,可是有一点要留意的便是 等于   ,不需要分号结束也是能够的,例如,不加分号正则就匹配不到,可是作用也是相同的,也是能够弹窗。


5.还有一个问题,便是织梦的正则匹配[xX]0{0,8}([9ab]); ,留意{0,8},大约是八位左右,假如我超越八位,就算加上分号过滤器也匹配不到,正好十六进制格局的时分能够有许多0,满足超越八位了,例如:


终究总结
缝隙挖挖总仍是有的,织梦的XSS过滤器有三个问题:
1.两次编码的时分,正则和黑名单就没软用了;
2.黑名单匹配的时分,正则无法匹配到没有分号结束的编码;
3.也是黑名单匹配的时分,匹配编码字符大约在0-8个字符之内,可是十六进制能够超越八个字符,这个时分也无法匹配。
 

相关文章

怎么避免网站要害数据被人歹意收集

 昨天晚上花了几个小时用Jsoup写了一个网站收集器,帮一个高中同学收集了一个工业信息门户上的芯片待售信息。网站上显现的数据多达60w+条, 我写的程序跑了7个小时只收集了一半,算是能够交差了。 这现...

运营商互联网事务暴出面安全

关于一个战士来说,最大的愿望便是能上战场真刀实枪的干上一战,相同关于一名安全人员来说,自己规划、建造的通过层层防护的系统,假如没有经历过一次进犯,难免有点索然寡味。在许多的甲方傍边,运营商互联网事务暴...

Java Web 工程源代码安全审计实战,第 1 部分: 跨站 XSS

 Java Web 运用安全问题日益严峻。源代码审计能够防备于未然。源代码审计人员要经过实战审计练习,才干熟练掌握 Java Web 源代码安全思路和技巧。 前语 Web 运用是互联网运用的重要方式...

深度聊聊PHP下的“切断”问题

0×01 原因 学弟有天在群里说起上传的%00切断的一些问题,就想起之前自己在这个问题踩过坑,想起了自己从前的flag说要写文章,一向没写,现在来填坑了。 0×02 通过 源码了解: //test.p...

HTTP 的内容安全策略(CSP)

 本文介绍的是W3C的Content Security Policy,简称CSP。望文生义,这个规范与内容安全有关,首要是用来界说页面能够加载哪些资源,削减XSS的发作。 Chrome扩展现已引进了...

经过APACHE ACCESS LOG来使用LFI缝隙

本地文件包括(LFI)缝隙,常被入侵者用来提取站点地点服务器上的不同文件内容,如passwd,hosts等。但你有没有想过将它提升到另一个层级?即经过本地文件包括来获取服务器上的浏览器shell(c9...