看到wooyun上有人提了几个iweshop(2014-11-18更新)的漏洞( WooYun: iWebShop开源电子商务系统SQL注入漏洞 ),去官网看了看,在2014-12-16 已更新到了 iwebshop2.9.14121000,下下来研究研究,希望不要重复。
写入Payload的点:POST /index.php?controller=seller&action=goods_update POST参数中的img
触发注入的点:POST /index.php?controller=seller&action=regiment_edit_act
看看Payload是如何写入的/controllers/seller.php
去看看update是如何把Payload写入的
再去看看IFilter::act
/lib/core/util/filter_class.php
当输入的参数名不包含attr_id_或者不以_开头,则执行IFilter::act($val,'text');对用户的输入进行了addslashes处理,然后就写入了数据库,我们都知道\’在入库时,\是会被去掉的,所以,单引号被写入了数据库。如下图
关键问题是被写入的单引号在哪个地方被读出然后再入库,在这个地方找到了/controllers/seller.php
请看上面代码中的注释,说明了出库再入库的整个过程。
测试方法:申请开店后,登录,发布一个商品,因为第一次发布产品其id为1,而每发一个产品id自动加1,在触发漏洞时的参数goods_id即为这里的id,每次加1即可(写脚本跑也方便了),漏洞会在添加修改团购时触发。
写入Payload时的payload:POST提交
触发漏洞时的部分payload:post提交
因为是time-based blind 注入,猜测管理员用户名的第一个字母时,若错误,延迟2s左右,如下图
若正确,延迟3s左右(和数据库中的记录有关)如下图
按上面的方法依次做下去(burp intruder或者自己写个脚本跑),可测试管理员用户名为:admin,密码为: f6fdffe48c908deb0f4c3bd36c032e72