【代码审计】711cms_V1.0.5前台XSS跨站脚本漏洞分析
0x00 环境准备
711CMS官网: https://www.711cms.com/
网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20)
程序源码下载:https://www.711cms.com/versions/711cms_V1.0.5.zip
测试网站首页:

0x01 代码分析
1、首先我们来看一下全局防护代码: /system/core/Security.php,代码太长,摘录部分函数,第352-387行中:
- public function xss_clean($str, $is_image = FALSE)
- {
- // Is the string an array?
- if (is_array($str))
- {
- foreach ($str as $key => &$value)
- {
- $str[$key] = $this->xss_clean($value);
- }
- 10.
- 11. return $str;
- 12. }
- 13.
- 14. // Remove Invisible Characters
- 15. $str = remove_invisible_characters($str);
- 16.
- 17. /*
- 18. * URL Decode
- 19. *
- 20. * Just in case stuff like this is submitted:
- 21. *
- 22. * <a href="http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D">Google</a>
- 23. *
- 24. * Note: Use rawurldecode() so it does not remove plus signs
- 25. */
- 26. if (stripos($str, '%') !== false)
- 27. {
- 28. do
- 29. {
- 30. $oldstr = $str;
- 31. $str = rawurldecode($str);
- 32. $str = preg_replace_callback('#%(?:\s*[0-9a-f]){2,}#i', array($this, '_urldecodespaces'), $str);
- 33. }
- 34. while ($oldstr !== $str);
- 35. unset($oldstr);
- 36. }
这段函数对XSS攻击进行过滤,比如<script>将被转换为[removed],接着看:
2、漏洞文件位置:/cms/controllers/Index.php 第77-88行:
- public function search($keywords='')
- {
- $keywords = urldecode($keywords);
- if(!$keywords)
- $keywords = $this->input->get('keywords', true);
- if (!$keywords) {
- redirect('/');
- }
- $this->template->assign('keywords', $keywords);
- 10. $this->template->assign('show_sort_id', 1);
- 11. $this->template->display('search.php');
12. }
这段search函数中,对接收到的参数进行url解码,然后带入数据库中执行,keyword在输入输出过程中只有全局防护代码在防护,全局防护代码过滤不严谨,存在被绕过的情况,导致程序在实现上存在反射型XSS跨站脚本漏洞,允许攻击者可在页面中插入恶意js代码,获得用户cookie等信息,导致用户被劫持。
0x02 漏洞利用
1、网站首页搜索框---XSS Payload:
111"onclick="\u0061\u006C\u0065\u0072\u0074(/xss/)

0x03 修复建议
1、全局防护是有必要的,但是并不是万能的,过滤能更严谨些;
2、建议对参数做html转义过滤(要过滤的字符包括:单引号、双引号、大于号、小于号,&符号),防止脚本执行。在变量输出时进行HTML ENCODE处理。 PHP应用:可以使用htmlspecialchars对用户参数进行编码 。
安全代码示例:
- <?php
- $aa=$_GET['dd'];
- echo htmlspecialchars($aa)."123";
- ?>
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】711cms_V1.0.5前台XSS跨站脚本漏洞分析的更多相关文章
- 【代码审计】EasySNS_V1.6 前台XSS跨站脚本漏洞分析
0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/ind ...
- 【代码审计】YUNUCMS_v1.0.6 前台反射型XSS跨站脚本漏洞分析
0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...
- 【代码审计】LaySNS_v2.2.0 前台XSS跨站脚本漏洞
0x00 环境准备 LaySNS官网:http://www.laysns.com/ 网站源码版本:LaySNS_v2.2.0 程序源码下载:https://pan.lanzou.com/i0l38 ...
- 【代码审计】QYKCMS_v4.3.2 前台存储型XSS跨站脚本漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】EasySNS_V1.6 前台任意文件下载漏洞分析
0x00 环境准备 EasySNS官网:http://www.imzaker.com/ 网站源码版本:EasySNS极简社区V1.60 程序源码下载:http://es.imzaker.com/i ...
- thinkphp5.0.22远程代码执行漏洞分析及复现
虽然网上已经有几篇公开的漏洞分析文章,但都是针对5.1版本的,而且看起来都比较抽象:我没有深入分析5.1版本,但看了下网上分析5.1版本漏洞的文章,发现虽然POC都是一样的,但它们的漏洞触发原因是不同 ...
- CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析
漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc ...
- 渗透测试学习 十七、 XSS跨站脚本漏洞详解
一般用途:拿cookie进后台,将后台地址一起发送过来 特点:挖掘困难,绕过困难 大纲: XSS漏洞基础讲解 XSS漏洞发掘与绕过 XSS漏洞的综合利用 XSS漏洞基础讲解 XSS介绍: 跨站脚 ...
- 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...
随机推荐
- AutoCAD 导入 Altium Designer 10 教程
http://www.geek-workshop.com/thread-5478-1-1.html
- android 代码混淆模板
#指定代码的压缩级别 -optimizationpasses #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpublicl ...
- 解决java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s content
A界面中有viewpager的动态加载,从界面A跳到界面B,再finish掉B返回A时报出此异常. java.lang.IllegalStateException: The application's ...
- [kafka] 004_kafka_安装运行
1.下载和安装 目前kafka的稳定版本为0.10.0.0 下载地址:http://kafka.apache.org/downloads.html 下载后解压缩安装包到系统即可完成安装 > ta ...
- QVariant类及QVariant与自定义数据类型转换的方法
这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是int,也可以是一个颜色值 ...
- Comparable与Comparator区别
两者都是比较接口 void sort(List<Comparable>); Sorts the specified list in ascending natural order. The ...
- qcom wlan kernel 解读 WCNSS_qcom_cfg.ini 文件
CORE/HDD/src/wlan_hdd_main.c 模块初始化: static int __init hdd_module_init ( void) { return hdd_driver_in ...
- Mac eclipse 快捷键 f6、f8 失效
解决方法:
- e617. Determining the Opposite Component of a Focus Event
The opposite component is the other component affected in a focus event. Specifically, in a focus-lo ...
- (弃) Keystone CLI_选项与子命令概况
本文档介绍icehouse发行版keystone命令 keystone Command-Line Interface (CLI)提供用于和keystone服务器交互的方便工具,但是该命令行工具逐渐受到 ...