ce安全网绿色资源分享

教程资讯|常用软件|安卓下载|下载排行|最近更新

软件
软件
文章
当前位置:首页网络安全网络安全文章 → Ecshop前台sql注入(20171228)

Ecshop前台sql注入(20171228)

时间:2018-01-19 11:00:43人气:作者:本站作者我要评论

这里我需要说明一下echsop具备全局的一个安全转义
全局文件:/includes/init.php

if (!get_magic_quotes_gpc())
{
if (!empty($_GET))
{
$_GET = addslashes_deep($_GET);
}
if (!empty($_POST))
{
$_POST = addslashes_deep($_POST);
}
$_COOKIE = addslashes_deep($_COOKIE);
$_REQUEST = addslashes_deep($_REQUEST);
}

当未开启gpc后进入addslashes_deep函数内容,php在高版本后gpc处于默认关闭状态

function addslashes_deep($value)
{
if (empty($value))
{
return $value;
}
else
{
return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
}
}
addslashes_deep当string时直接进行安全转义,数组时递归转义,这便是ecshop的全局安全。
漏洞文件:user.php
$post_data = json_decode(str_replace('\\','',$_POST['JSON']),1);
//判断是否经过验证码验证
if((!isset($_SESSION['v_code']) || $_SESSION['v_code']!='true') && !isset($post_data['no_need_vcode']) ){
make_json_result('v_code fail');exit;
}
$_SESSION['v_code'] = 'false';
$mobile = $post_data['mobile'] ? $post_data['mobile'] : false;
$is_send = 'fail';
POST获取JSON值并进行json_decode而json_decode具备绕过全局转义以及gpc的特点,也就是会吞并反斜杠。当我们提交’时会被转义成\’而这里再经过一次json_decode则因吞并反斜杠导致还原单引号所以导致我们可以输入危害内容,但下面还存在一个if的判断

if((!isset($_SESSION['v_code']) || $_SESSION['v_code']!='true') && !isset($post_data['no_need_vcode']) ){make_json_result('v_code fail');exit;}判断SESSION的v_code值是否为true与no_need_vcode是否定义,因为这里用的是&&所以我们满足其中一个条件即可绕过判断,post_data是由我们json_decode后赋值的变量所以这里no_need_vcode可控绕过判断

$_SESSION['v_code'] = 'false';
$mobile = $post_data['mobile'] ? $post_data['mobile'] : false;
$is_send = 'fail';
if($mobile){
// 找回密码验证输入的手机号是否已注册
if (isset($post_data['action']) && $post_data['action'] == 'sms_get_password') {
$is_reg = $user->check_user($mobile);
if (!$is_reg) {
make_json_result($_LANG['phone_number_reg_check_fail']);
exit();
}
}
将post_data中的mobile赋予$mobile并一下判断action是否指定为sms_get_password方法,当指定时则进入check_user方法
function check_user($username, $password = null)
{
if ($this->charset != 'UTF8')
{
$post_username = ecs_iconv('UTF8', $this->charset, $username);
}
else
{
$post_username = $username;
}
if ($password === null)
{
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table($this->user_table).
" WHERE " . $this->field_name . "='" . $post_username . "'";
return $this->db->getOne($sql);
}
```
username为我们提交的mobile内容,password未带入所以这里为NULL故进入password===null条件中执行
```mysql
$sql = "SELECT " . $this->field_id .
" FROM " . $this->table($this->user_table).
" WHERE " . $this->field_name . "='" . $post_username . "'";

期间未再经过转义所以导致存在注入但ecshop在新版本后存在安全防护
安全防护文件:/includes/safety.php
<?php
$url_arr=array(
'xss'=>"\\=\\+\\/v(?:8|9|\\+|\\/)|\\%0acontent\\-(?:id|location|type|transfer\\-encoding)",
);
$args_arr=array(
'xss'=>"[\\'\\\"\\;\\*\\<\\>].*\\bon[a-zA-Z]{3,15}[\\s\\r\\n\\v\\f]*\\=|\\b(?:expression)\\(|\\<script[\\s\\\\\\/]|\\b(?:eval|alert|prompt|msgbox)\\s*\\(|url\\((?:\\#|data|javascript)",
'sql'=>"(EXTRACTVALUE|EXISTS|UPDATEXML)\\b.+?(select|concat)|[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:dump|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",
'other'=>"\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]");
if( !function_exists('filterData') ){
function filterData(&$data,$type){
$data and filterArray($data,$type);
}

以上为安全防护的正则内容,一看就输入可以绕过的,因为们有json_decode所以可以打乱关键字导致绕过
Ecshop前台sql注入(20171228)

相关文章

猜你喜欢

  • Ougishi绿色版下载 V4.00 中文版

    2020-06-19 / 561k

  • 谷歌地图下载助手睿智版破解下载 V9.5绿色版

    2020-06-19 / 32.7M

  • OfficeFIX中文破解版V6.110 注册版

    2020-06-19 / 26.8M

  • Plotagraph破解版V1.2.0 免费版 32/64位

    2020-06-19 / 31.5M

  • IP查详细地址工具下载 V1.1 官方免费版

    2020-06-19 / 408K

  • 内存扫把中文版下载V1.97绿色版

    2020-06-19 / 1.3M

网友评论

验证码:

请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

最新评论

已有人参与,点击查看更多精彩评论

关于CE安全网 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2019-2029 cesafe.com 【CE安全网】 版权所有 蜀ICP备19039426号-2| 蜀ICP备19039426号-2

声明: 本站为非赢利性网站 不接受任何赞助和广告 所有软件和文章来自互联网 如有异议 请与本站联系 技术支持:ce安全网