先复现下大佬挖到的漏洞
任意文件读取
漏洞点:protected\modules\admini\controllers\TemplateController.php
如下actionUpdateTpl函数调用了file_get_contents对传入的filename文件名的文件内容进行读取,如下filename参数在传入file_get_contents函数之前调用CHtml::encode方法进行了处理。
跟进CHtml::encode方法
路径:framework\yiilite.php
发现encode函数进行的只是html实体化的处理,所以并不能限制我们进行文件读取操作。
htmlspecialchars() 函数
漏洞利用:
首先对需要读取的文件路径进行base64编码:
…/…/…/index.php base64
编码后
Li4vLi4vLi4vaW5kZXgucGhw
http://127.0.0.1/upload/index.php?r=admini/Template/updateTpl&filename=Li4vLi4vLi4vaW5kZXgucGhw
就是还需要登陆,才可以读取
sql注入
漏洞点:protected\modules\admini\controllers\PostController.php
在PostController.php并没有对输入的参数titleAlias进行过滤,然而带入查询的时候也没有采用绑定查询的方式,即直接将参数带入查询了,从而造成了sql注入漏洞的发生。
http://127.0.0.1/upload/index.php?r=admini/post/index&catalogId=&title=fafadf&titleAlias=fad%27)%20or%201=2%23&searchsubmit=%E6%9F%A5%E8%AF%A2
注明:此处传递参数的方式既可以是get也可以是post,在进行传递参数的时候有坑,即在PostController.php中对传入的参数使用trim函数进行了处理,所以我们在注释的时候需要在–后面添加几个字符即可。还有坑就是使用get方式传递参数时候,不能使用#进行注释,但是可以使用%23进行注释。
代码执行漏洞
xss漏洞
参考文章:https://www.cnblogs.com/v01cano/p/12424092.html