序文
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:再インストール




