0x00前言
这两天学习Thinkphp5.1的开发手册,顺便审计一下NoneCMS,利用框架的安全性避免了不少的问题,但还是发现一枚任意文件删除漏洞。
0x01漏洞分析
1 | #application/admin/controller/Main.php |
1.当请求upload方法时,如果if (!input(‘?param.act’))不成立,即存在act参数的情况下,进入else分支。
2.此时将path参数的值经过str_replace替换后传入unlink函数,直接删除,由于过滤不严导致任意文件删除。
3.可以采用绝对路径的方式或者windows下用..\
绕过str_replace的限制。
0x02任意文件删除POC:
1 | http://127.0.0.1/NoneCMS/public/admin/main/upload/act/1?path=public/install/install.lock |
0x03小结
这个漏洞需要至少能够登录后台的管理员登录才能利用。
0x04修复建议
- 此处功能为删除图片,可以严格检查删除文件名的后缀是否为图片
- 同时过滤
..\
和../