blog

電子商取引システムShopNCは、複数の脆弱性をブルートフォースgetshellと組み合わせている。

ShopNCは、エンタープライズ顧客向けのNetcityクリエイティブカンパニーの電子商取引システムであり、開発のMVCモデルを使用してPHP5の技術に基づいて、この記事では、複数の脆弱性の組み合わせ...

Aug 26, 2015 · 3 min. read
シェア

序文

ShopNCは、開発のMVCモデルを使用してPHP5の技術に基づいて、法人顧客にサービスを提供するために創造的な会社の電子商取引システムの都市のネットワークであり、この記事では、getshellと組み合わせてshopncの複数の脆弱性を紹介少し暴力的-_-。

任意文書の削除

ファイル controlstore.php 1438行

........
$model_upload = Model('upload');
        $file_info = $model_upload->getOneUpload(intval($_GET['file_id']));
        if(!$file_info){
            @unlink(ATTACH_SLIDE.DS.$_GET['img_src']);
        }else{
 
........

ローカルファイルには

ファイル /framework/core/base.php 上の行 71

$act_file = realpath( BasePath.DS."control".DS.$_GET['act'].".php" );
    }
    if ( is_file( $act_file ) )
    {
        require( $act_file );
        $class_name = $_GET['act']."Control";
        if ( class_exists( $class_name ) )

バックエンドの更新キャッシュ書き込みシェル

/**
     * 広告キャッシュを更新する
     *
     * @param unknown_type $adv
     * @return unknown
     */
    public function makeAdvCache($adv){
        $lang   = Language::getLangContent();
        $tmp .= "<?php 
";
        $tmp .= "defined('InShopNC') or exit('Access Invalid!'); 
";
        if (is_numeric($adv) && $adv > 0){
 
            $condition['adv_id'] = $adv;
            $adv_info = $this->getList($condition);
            $adv = $adv_info['0'];
        }
    ..................................
                       $content = addslashes($v);
            $content = str_replace('$','\$',$content);
            // $シンボルは変数にパースされる
            $tmp .= '$'.$k." = "".$content.""; 
";
        }
        //キャッシュファイルの場所と名前
        $cache_file = BasePath.'/cache/adv/adv_'.$adv['adv_id'].'.cache.php';
        file_put_contents($cache_file,$tmp);
public function getList($condition=array(), $page='', $limit='', $orderby=''){
    $param  = array();
    $param['table'] = 'adv';
    $param['field'] = $condition['field']?$condition['field']:'*';
    $param['where'] = $this->getCondition($condition);
    if($orderby == ''){
        $param['order'] = 'slide_sort, adv_id desc';
    }else{
        $param['order'] = $orderby;
    }
    $param['limit'] = $limit;
    return Db::select($param,$page);
}

ファイルを書き込むときは、データベースからキーをトラバースし、値フィルタリングされていないキーは、キーがデータベースから読み取ることができる、データベースがあるときに制御することができます、任意のファイルに書き込むことができます。

ショップNc GetShell

これら3つの脆弱性を組み合わせることで、エレガントなゲッツヘルを作ることができます。

ワークフロー

任意のファイルを削除する =>   => データベースのshopncを変更する_adv   =>広告キャッシュを更新する =>getshell

コンクリートステップ

2:再インストール

Read next

用友NC6人的資本管理は、企業の革新と発展を支援する

UFIDA NC6 Enterpriseの製品は、従業員の職責、業務内容、ワークスタイル、設備などを十分に考慮し、適切な情報を適切な人に適切な方法で適切なタイミングで提供します。また、パーソナルオフィスやコミュニケーション機能を提供し、企業ポータル、ナレッジマネジメント、インスタントコミュニケーション、モバイルコマースを通じてビジネスシステムと緊密に統合します。企業のオフィス自動化のニーズを満たし、業務効率を向上させ、管理の精巧さと正確さを高め、企業の競争力を強化します。

Aug 25, 2015 · 2 min read