远程攻击者在无需任何权限情况下,可利用此漏洞构造恶意的url,向服务器写入任意内容的文件,达到getshell的目的。
一共有两种方式植入:
第一种是通过构造a参数的fetch方法,可以不需要知道文件路径就可以把php代码写入文件
fetch函数的作用是获取页面内容,调用内置模板引擎fetch方法,thinkphp的模版引擎使用的是smarty,在smarty中当key和value可控时便可以形成模板注入。这里fetch函数的三个参数分别对应模板文件,输出内容,模板缓存前缀。利用时templateFile和prefix参数可以为空,在content参数传入待注入的php代码即可getshell
第二种是通过构造a参数的display方法,实现任意内容包含漏洞
display函数的作用是加载模板和页面输出
所对应的参数为:
$templateFile 指定要调用的模板文件
$charset 模板输出字符集
$contentType 输出类型,$content 模板输出内容。
templateFile参数会经过parseTemplate函数处理,判断模板是否存在,当模板不存在时