0x01 其他
在分析yxcms的sql注入之前, 我看了一下appmanage模块下的index有个在线安装模块引起了我的注意:
<?php//在线安装public function onlineinstall(){$url = $_GET['url'];//在线安装地址if( empty($url) ){$this->error('参数传递错误');}$content = file_get_contents($url);if( empty($content) ){$this->error('数据下载错误');}$zip_file = BASE_PATH . 'cache/tmp/' .md5($url) .'.zip';if( file_put_contents($zip_file, $content) ){$this->import($zip_file);}else{$this->error('数据写入错误');}}

直觉告诉我这个地方应该又问题。这是一堆死代码,但是可以通过url访问。他会通过url读入你的安装模块,并调用import方法。 1. 如果我能阻止import里的unlink,那么这个zip包就被file_put_contents到了可访问的位置,而且就算不unlink我也可以条件竞争啊。我没试,这是后台洞,我开个脚本一直抢,然后csrf?
- 再看
import:
如果$zip_file存在的话,就完美绕过了$this->isPost()中的csrf检查。
然后然后如果解压成功,我们只要满足app格式的要求在压缩包文件夹里放一个config.php, 那么就能把这个文件夹传到apps里面去。问题就在这里
这个解压功能不能用!正常功能也不能用,有没有人还在维护这个项目,帮我修复这个bug啊![[11-13] yxcms 其他 - 图5](/uploads/projects/u303154@ayooqu/25a360d8005975b4850e614b64dd3605.jpeg)
