恰好配合GMP我们可以控制$this->_temp_key变量,所以我们只要能在上面的流程中找到任意地方调用这个方法,我们就可以配合变量覆盖构造一个代码执行。
在回看刚才的代码流程时,我们从编译后的PHP文件中找到了这样的代码
order_info.htm.php
<?php endforeach; endif; unset($_from); ?><?php $this->pop_vars();; ?>在遍历完表单之后,正好会触发pop_vars。
这样一来,只要我们控制覆盖cls_template变量的_temp_key属性,我们就可以完成一次getshell
最终利用效果
Timeline
2020.03.31 发现漏洞。
2020.03.31 将漏洞报送厂商、CVE、CNVD等。
2020.07.08 符合90天漏洞披露期,公开细节。