1.分析

CMS下载地址:http://bbs.gxlcms.com/article/9

版本:GxlcmsQY v1.0.0713

\Lib\Lib\Action\Admin\TplAction.class.php

函数update()的功能是更新模板。先获取POST参数filename,如果filename的后缀不在array('.html','.htm','.shtml','.shtm','.xml','.js','.css')中,则不允许更新。然后调用write_file()写入内容。

 

而函数write_file()中没有任何过滤,直接调用file_put_contents()写入内容。

 

这里虽然后缀不能是php,但是程序在解析HTML模板时,会解析HTML中的php代码,所以可以直接写入webshell。

2.poc

http://127.0.0.1/gxlcms/index.php?s=Admin-***

POST:filename=***&content=<?php phpinfo();?>&submit=1

然后访问http://127.0.0.1/gxlcms/?s=***.html