GetShell漏洞的分析
相关环境
源码信息:zblog 1.51
问题文件:\zb_users\plugin\AppCentre\plugin_edit.php
漏洞类型:文件写入导致代码执行
站点地址:https://www.zblogcn.com/
在文件\zb_users\plugin\AppCentre\plugin_edit.php的第47行-68行中发现如下代码块,仔细分析该代码块可以知道,两处的file_put_contents($path, $file);文件名和文件内容都是用户可以控制的。
首先是在第57-61行中,先读取tpl/main.html文件中的内容,然后将替换为$app->id的值,然后通过POST请求得到要写入的文件路径名称,再进行file_put_contents操作。
然后第63-67行中也差不多,只是写入的文件是固定为include.php文件。
反向跟踪下$app->id在该文件的第50行中,要求传入的值开头需要以字母数字和下划线组成,长度为3-30字符。