前两天发了一个OEcms的漏洞, WooYun: OEcms通用SQL注入一枚(无视全局过滤) ,补充了互联网实例终于通过了,这个漏洞如果还需要互联网实例,就看它吧。
今天再来一个cookie注入。注入点在/source/control/index/buylist.php,而这个是OEcms最新版OEcms4.2在2014-10-08 UPDATE的一个文件,早期的版本中不存在这个问题。版本如下:
OEcms首先对用户的各种输入做了全局过滤,/source/core/run.conf.php
然后在执行sql的时候,很多输入又做了过滤,我没有找到可以绕过’过滤注入的,既然不能绕过,那就不用’了吧,在cookie中找到了个数字型的注入点,无需考虑’的闭合问题了。
先看代码/source/control/index/buylist.php
可以看到uid的值是由cookie中的uid获得的,然后的执行了getlist()。
再来看看getlist():
再来看看getall()
没有进行任何形式的过滤,然后就带入sql执行了
虽然进行了全局过滤,但是仅用daddslashes过滤,对于数字型的注入来说,起不到作用,轻松绕过,注入成功。
Payload:
正常执行sql语句是这样的
执行注入sql语句
管理员的用户名和密码出来了