0x00前言
一直对模板注入漏洞懵懵懂懂,直到最近在某gayhub上瞎逛碰到一个cms,再一番操作之后找到了一个前台getshell的漏洞。由于相关要求,这里隐去这个cms的全称,就分享漏洞发掘的思路。
0x01代码审计
我们全局搜索eval(可以发现有一个地方使用了eval,可以大胆猜测这个模板引擎是使用eval去实现。我们跟进ii_eval()函数。
可以见到函数的$strers可控,我们继续跟进ii_eval()看谁对他进行了调用。
全局搜索发现就只有一个地方对他进行了调用那就是ii_creplace()函数
我们跟进ii_creplace()可以看到,$strers可控但是他必须传入一个与({\$=(.[^\}]*)})这个正则匹配的字符串才能传入到iieval(),这里我们就可以得知要想执行代码必须符合类似下面的格式:
{$=phpinfo()}
那么我们继续跟进ii_creplace()函数看谁对他进行了调用,找了很多但是都对函数中的$进行了转义,但是在passport\address\