大商创去后门eval-stdin.php,大商创的开源代码都有哪些后门,如何去除大商创后门...
大商創的開源代碼中有很多后門,以方便官方監控系統的使用,官方做的真是無孔不入啊,我找到了下面幾種。
1、數據庫表dsc_shop_config 中,code值為certi的記錄。我們發現這就是大商創的后門地址了,那我們去代碼中看看,大商創是怎么利用的這個地址的吧,我們全局搜索一下。
搜索關鍵詞:write_static_cache('seller_goods_str', $httpData);
搜索結果:$httpData = array('domain' => $ecs->get_domain(), 'url' => urldecode($shop_url), 'shop_name' => $_CFG['shop_name'], 'shop_title' => $_CFG['shop_title'], 'shop_desc' => $_CFG['shop_desc'], 'shop_keywords' => $_CFG['shop_keywords'], 'country' => $shop_country, 'province' => $shop_province, 'city' => $shop_city, 'address' => $shop_address, 'qq' => $qq, 'ww' => $ww, 'ym' => $service_phone, 'msn' => $_CFG['msn'], 'email' => $service_email, 'phone' => $_CFG['sms_shop_mobile'], 'icp' => $_CFG['icp_number'], 'version' => VERSION, 'release' => RELEASE, 'language' => $_CFG['lang'], 'php_ver' => PHP_VERSION, 'mysql_ver' => $db->version(), 'charset' => EC_CHARSET);
$Http = new Http();
$Http->doPost($_CFG['certi'], $httpData);
write_static_cache('seller_goods_str', $httpData);
好吧,我們可以搜索出N條這樣的記錄。官方基本上拿到了我們系統的所有信息了,我們把$Http = new Http();$Http->doPost($_CFG['certi'], $httpData);這段代碼去掉,那么請求就失效了吧,但是!!!
2、既然certi是官方的地址,那么我們把它改了不更好嗎,好了我們把修改成一個無關緊要的地址。但是刷新后,我們發現地址居然又變回之前的地址了。好吧,我們認為代碼中應該是更新了這條記錄。我們開始全局搜索吧。
搜索詞為:http://ecshop.ecmoban.com/dsc.php;
搜索結果:$certi_url = 'http://ecshop.ecmoban.com/dsc.php';
if (empty($arr['certi']) || $arr['certi'] != $certi_url) {
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('shop_config') . (' SET value = \'' . $certi_url . '\' WHERE code = \'certi\'');
$row = $GLOBALS['db']->query($sql);
}
----------------------------------------------------------------------------------------------------------------
$certi_url = $GLOBALS['db']->getOne('SELECT value FROM ' . $GLOBALS['ecs']->table('shop_config') . ' WHERE code = \'certi\'');
$certi_size = 'http://ecshop.ecmoban.com/dsc.php';
if (empty($certi_url) || $certi_url != $certi_size) {
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('shop_config') . (' SET value = \'' . $certi_size . '\' WHERE code = \'certi\'');
$row = $GLOBALS['db']->query($sql);
}
我這里搜到了兩處,這不就是直接更新了certi這條記錄了嘛,我們把它去掉。
3、既然certi這個地址是官方的授權信息,那我們是不是可以直接去掉呢,好!我們去掉他吧!但是這樣官方也是有辦法的,這個后門做的,很不好找到的。
搜素關鍵詞:cat_goods_config 或者 aHR0cDovL2Vjc2hvcC5lY21vYmFuLmNvbS9kc2MucGhw
搜素結果:
$cer_url = $GLOBALS['db']->getOne('SELECT value FROM ' . $GLOBALS['ecs']->table('shop_config') . ' WHERE code = \'certi\'');
$post_type = 0;
if (strpos($section, $cp_str) !== false) {
$post_type = 1;
}
if (empty($cer_url) && $post_type != 1) {
$post_type = 2;
}
if (empty($cer_url)) {
if (file_exists(ROOT_PATH . 'temp/static_caches/cat_goods_config.php')) {
require ROOT_PATH . 'temp/static_caches/cat_goods_config.php';
}
else {
$shop_url = urlencode($GLOBALS['ecs']->url());
$shop_country = $GLOBALS['db']->getOne('SELECT region_name FROM ' . $GLOBALS['ecs']->table('region') . ' WHERE region_id=\'' . $GLOBALS['_CFG']['shop_country'] . '\'');
$shop_province = $GLOBALS['db']->getOne('SELECT region_name FROM ' . $GLOBALS['ecs']->table('region') . ' WHERE region_id=\'' . $GLOBALS['_CFG']['shop_province'] . '\'');
$shop_city = $GLOBALS['db']->getOne('SELECT region_name FROM ' . $GLOBALS['ecs']->table('region') . ' WHERE region_id=\'' . $GLOBALS['_CFG']['shop_city'] . '\'');
$url_data = array('domain' => $GLOBALS['ecs']->get_domain(), 'url' => urldecode($shop_url), 'shop_name' => $GLOBALS['_CFG']['shop_name'], 'shop_title' => $GLOBALS['_CFG']['shop_title'], 'shop_desc' => $GLOBALS['_CFG']['shop_desc'], 'shop_keywords' => $GLOBALS['_CFG']['shop_keywords'], 'country' => $shop_country, 'province' => $shop_province, 'city' => $shop_city, 'address' => $GLOBALS['_CFG']['shop_address'], 'qq' => $GLOBALS['_CFG']['qq'], 'ww' => $GLOBALS['_CFG']['ww'], 'ym' => $GLOBALS['_CFG']['service_phone'], 'msn' => $GLOBALS['_CFG']['msn'], 'email' => $GLOBALS['_CFG']['service_email'], 'phone' => $GLOBALS['_CFG']['sms_shop_mobile'], 'icp' => $GLOBALS['_CFG']['icp_number'], 'version' => VERSION, 'release' => RELEASE, 'language' => $GLOBALS['_CFG']['lang'], 'php_ver' => PHP_VERSION, 'mysql_ver' => $GLOBALS['db']->version(), 'charset' => EC_CHARSET, 'post_type' => $post_type);
$cp_url_size = 'base64_decode(\'aHR0cDovL2Vjc2hvcC5lY21vYmFuLmNvbS9kc2MucGhw\')';
$cp_url_size = '$url_http = ' . $cp_url_size . ";\r\n";
$cp_url = $cp_url_size;
$cp_url .= '$purl_http = new Http();' . "\r\n";
$cp_url .= '$purl_http->doPost($url_http, $url_data);';
write_static_cache('cat_goods_config', $cp_url, '/temp/static_caches/', 1, $url_data);
}
}
代碼分析:代碼最終會生成一個緩存文件,下次請求就直接加載文件了,但是我們發現,這個緩存文件內容就是請求官方地址的,官方將地址base64加密了,aHR0cDovL2Vjc2hvcC5lY21vYmFuLmNvbS9kc2MucGhw,這個就地址的加密后的串,你可以解開看下,就是certi的值啊,就算數據庫里沒有,我代碼中還有加密的呢。(官方好手段!!!!!)那么,我們將這段代碼整體刪除吧。
4、搜索關鍵詞:http://cloud.ecmoban.com/api.php
搜素結果:$apiget = 'act=ent_sign&ent_id= ' . $ent_id . ' & certificate_id=' . $certificate_id;
$t->request('http://cloud.ecmoban.com/api.php', $apiget);
雖然不知道這塊具體的邏輯,但是請求官方地址,那么我們也要拿掉。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的大商创去后门eval-stdin.php,大商创的开源代码都有哪些后门,如何去除大商创后门...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中echo js代码,JS有没类似
- 下一篇: webpack搭建php服务器,webp