在wooyun上看到了有人提了BiWEB的一个XSS漏洞: WooYun: BIWEB商城版XSS盲打cookie ,也有人提了SQL注入,我来找找其他的漏洞吧。去官网下BiWEB商城版最新的5.8.4来看看。
注入点在http://192.168.0.107/brand/list.php?brand_id=1,其中brand_id存在注入漏洞
先来看看BiWEB是怎么处理防注入的。首先BiWEB对用户输入进行了全局过滤filtrate.inc.php
filtrateData()方法的实现见下面
这个过滤方法中,如果是POST方法就只对通过POST提交的用户数据进行过滤,GET方法同理。突然就想到一个方法,REQUEST_METHOD还是 POST,但是在url中带入用户数据(GET方法),然后程序中用$_GET数组来获取数据的话,那就可以获得通过url提交的数据,并且没有经过全局 过滤,这样就绕过了全局过滤。
在/product/block/child_type.php中
继续去看看getTypeTileWithBrand(),在/product/class/product.class.php中
可以看出,整个过程中没有其他的过滤,只要可以绕过全局过滤,就可以注入。
如果按正常的情况使用GET提交,单引号被全局过滤编码,如下:
把GET方法改为POST提交,成功引入单引号,如下:
成功注入,管理员用户名及密码如下图中所示:
payload如下