您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么修復ecshop漏洞,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1、ECShop存在一個盲注漏洞,問題存在于/api/client/api.php文件中,提交特制的惡意POST請求可進行SQL注入攻擊,可獲得敏感信息或操作數據庫。
路徑:/api/client/includes/lib_api.php
參照以下修改:
推薦(免費):eschop
function API_UserLogin($post) { /* SQL注入過濾 */ if (get_magic_quotes_gpc()) { $post['UserId'] = $post['UserId']; } else { $post['UserId'] = addslashes($post['UserId']); } /* end */ $post['username'] = isset($post['UserId']) ? trim($post['UserId']) : '';
2、ecshop的后臺編輯文件/admin/shopinfo.php中,對輸入參數id未進行正確類型轉義,導致整型注入的發生。
路徑: /admin/shopinfo.php
參照以下修改(53-71-105-123行):
源代碼: admin_priv('shopinfo_manage'); 改為: admin_priv('shopinfo_manage'); $_REQUEST['id'] = intval($_REQUEST['id']);
3、文件/admin/affiliate_ck.php中,對輸入參數auid未進行正確類型轉義,導致整型注入的發生。
參照以下修改(31行和51行):
源代碼: $logdb = get_affiliate_ck(); 改成: $_GET['auid'] = intval($_GET['auid']); $logdb = get_affiliate_ck();
注:好像按上面改了阿里云還是會提示這個漏洞,然后我在文件頂部處添加以下代碼就可以了:
$_GET['auid'] = intval($_GET['auid']);
4、ecshop的/admin/comment_manage.php中,對輸入參數sort_by、sort_order未進行嚴格過濾,導致SQL注入。
參照以下修改:
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'add_time' : trim(htmlspecialchars($_REQUEST['sort_by'])); $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim(htmlspecialchars($_REQUEST['sort_order']));
5、ecshop沒有對會員注冊處的username過濾,保存重的用戶信息時,可以直接寫入shell。
路徑:/admin/integrate.php
大概109行,參照以下修改:
$code = empty($_GET['code']) ? '' : trim(addslashes($_GET['code']));
大概601行,參照以下修改:
源代碼: @file_put_contents(ROOT_PATH . 'data/repeat_user.php', $json->encode($repeat_user)); 修改成: @file_put_contents(ROOT_PATH.'data/repeat_user.php','<?php die();?>'.$json->encode($repeat_user));
注:好像按上面改了阿里云還是會提示這個漏洞,然后我在文件頂部處添加以下代碼就可以了:
$_GET['code'] = empty($_GET['code']) ? '' : trim(addslashes($_GET['code']));
6、ecshop后臺模版編譯導致黑客可插入任意惡意代碼。
路徑:/admin/edit_languages.php
大概在第120行
$dst_items[$i] = $_POST['item_id'][$i] .' = '. '"' .$_POST['item_content'][$i]. '";';
修改為
$dst_items[$i] = $_POST['item_id'][$i] .' = '. '\'' .$_POST['item_content'][$i]. '\';';
7、ecshop過濾不嚴導致SQL注入漏洞。
路徑:/category.php 、 /ecsapi/category.php
修改方法:https://www.cnblogs.com/LittleHann/p/4524161.html
8、ecshop的/includes/lib_insert.php文件中,對輸入參數未進行正確類型轉義,導致整型注入的發生。
有$arr['num'] 、$arr['id']、$arr['type']
這些參數的,在函數開頭加上:
大概289行加上: $arr['num'] = intval($arr['num']); $arr['id'] = intval($arr['id']); 大概454行加上: $arr['id'] = intval($arr['id']); $arr['type'] = addslashes($arr['type']); 大概495行加上: $arr['id'] = intval($arr['id']);
9、ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/modules/payment/alipay.php文件中,該文件是ECshop的支付寶插件。由于ECShop使用了str_replace函數做字符串替換,黑客可繞過單引號限制構造SQL注入語句。只要開啟支付寶支付插件就能利用該漏洞獲取網站數據,且不需要注冊登入。
搜索代碼: $order_sn = str_replace($_GET['subject'], '', $_GET['out_trade_no']); 將下面一句改為: $order_sn = trim(addslashes($order_sn));
Ecshop后臺模版編輯漏洞
詳情描述參考:https://www.cnblogs.com/LittleHann/p/4272255.html
漏洞文件:/admin/mail_template.php 和 /includes/cls_template.php
/admin/mail_template.php文件添加以下代碼(過濾了部分php關鍵詞)
/*------------------------------------------------------ */ //-- 保存模板內容 /*------------------------------------------------------ */ elseif ($_REQUEST['act'] == 'save_template') { if (empty($_POST['subject'])) { sys_msg($_LANG['subject_empty'], 1, array(), false); } else { $subject = trim($_POST['subject']); } if (empty($_POST['content'])) { sys_msg($_LANG['content_empty'], 1, array(), false); } else { $content = trim($_POST['content']); } $type = intval($_POST['is_html']); $tpl_id = intval($_POST['tpl']); /*過濾了部分php關鍵詞*/ $temp_check = preg_replace("/([^a-zA-Z0-9_]{1,1})+(extract|parse_str|str_replace|unserialize|ob_start|require|include|array_map|preg_replace|copy|fputs|fopen|file_put_contents|file_get_contents|fwrite|eval|phpinfo|assert|base64_decode|create_function|call_user_func)+( |\()/is", "", $content); $temp_check = preg_replace("/<\?[^><]+(\?>){0,1}|<\%[^><]+(\%>){0,1}|<\%=[^><]+(\%>){0,1}|<script[^>]+language[^>]*=[^>]*php[^>]*>[^><]*(<\/script\s*>){0,1}/iU", "", $temp_check); $content = $temp_check; /*過濾了部分php關鍵詞*/ $sql = "UPDATE " .$ecs->table('mail_templates'). " SET ". "template_subject = '" .str_replace('\\\'\\\'', '\\\'', $subject). "', ". "template_content = '" .str_replace('\\\'\\\'', '\\\'', $content). "', ". "is_html = '$type', ". "last_modify = '" .gmtime(). "' ". "WHERE template_id='$tpl_id'"; if ($db->query($sql, "SILENT")) { $link[0]=array('href' => 'mail_template.php?act=list', 'text' => $_LANG['update_success']); sys_msg($_LANG['update_success'], 0, $link); } else { sys_msg($_LANG['update_failed'], 1, array(), false); } }
/includes/cls_template.php文件替換函數(fetch_str()):
function fetch_str($source) { if (!defined('ECS_ADMIN')) { $source = $this->smarty_prefilter_preCompile($source); } $source=preg_replace("/([^a-zA-Z0-9_]{1,1})+(copy|fputs|fopen|file_put_contents|fwrite|eval|phpinfo)+( |\()/is", "", $source); $source=preg_replace("/<\?[^><]+\?>|<\%[^><]+\%>|<script[^>]+language[^>]*=[^>]*php[^>]*>[^><]*<\/script\s*>/iU", "", $source); return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source); //return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);//修飾符 /e 在 PHP5.5.x 中已經被棄用了 }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“怎么修復ecshop漏洞”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。