看到wooyun上有人提了几个iweshop(2014-11-18更新)的漏洞( WooYun: iWebShop开源电子商务系统SQL注入漏洞 ),去官网看了看,在2014-12-16 已更新到了 iwebshop2.9.14121000,下下来研究研究,希望不要重复。
注入一枚:POST /index.php?controller=seller&action=order_report POST参数中的search作为一个数组传入,search的KEY and VALUE 都过滤不完全,注入成功,文件在/controllers/seller.php的order_report()方法中
看看代码/controllers/seller.php
$search 是这样获得的$search = IFilter::act(IReq::get('search'));,去看看IFilter::act
/lib/core/util/filter_class.php
因为在获取$search时,$search = IFilter::act(IReq::get('search')); act()没有指定第二个类型参数,所以,把search 当作string过滤,这里的KEY是没有添加单引号的,所以不用闭合单引号(即使需要单引号,iwebshop的过滤函数也没有过滤KEY),造成注入。
测试方法:申请开店后,登录,发布商品并上架,另一个测试号来购买商品形成订单,在订单列表页导入订单。
Payload:POST提交
因为是time-based blind 注入,猜测管理员用户名的第一个字母时,若错误,延迟2s左右,如下图

若正确,延迟5s左右(和数据库中的记录有关)如下图

按上面的方法依次做下去(burp intruder或者自己写个脚本跑),可测试管理员用户名为:admin,密码为: f6fdffe48c908deb0f4c3bd36c032e72