问题函数在 \lib\sys\keke_task_release_class.php
filerPic函数
具体代码如下:
此处$file_ids无单引号保护,无过滤,向上跟踪。
来到lib\sys\keke_task_release_class.php 的public_pubtask函数。
部分代码如下:
可以看到代入filterPic函数的变量:
简单的进行了字符串拆分和组合成数组然后将数组连接为字符串。并无判断和过滤。
接下来进一步跟踪看$release_info形成时有无过滤。
有五处引用public_pubtask()
选取第一处进行跟踪
来到 task\dtender\lib\dtender_release_class.php pub_task()函数
再继续跟进
最终引用地为 task\dtender\control\pub.php
具体代码如下:
并没有对fileids做特别过滤处理
因为生成fileids在step2,并且并没有严格的判断。
来实际操作演示一下,首先登录,选择发布任务
到step2提交的时候抓包,如果上传了附件则会产生fileids,此处直接替换成我们要注入的脚本
因为函数是在step3提交时调用。
所以直接step3提交,
成功注入盲注语句延时。
其余四处原理一样,就不一一演示了。