ThinkPHP2.3.2 变量覆盖RCE复现


参考

https://cloud.tencent.com/developer/article/1855060

ThinkPHP3.2.x_assign方法第一个变量可控=>变量覆盖=>任意文件包含=>RCE

环境

TP3.2.3 php5.6.27 apache phpstudy2018

\Application\Home\Controller\IndexController.class.php写入demo代码:

assign($value);
        $this->display();
    }
}

因为程序要进入模板渲染方法方法中,所以需要创建对应的模板文件,内容随意 \Application\Home\View\Index\index.html写入第三方模板:

hello变量覆盖

攻击

恶意代码写入日志:

注意: debug模式开启或不开启有一点区别,但是都可以

开启debug:
请求不报错 日志文件在 Application/Runtime/Logs/Home下
请求会报错 日志文件在 Application/Runtime/Logs/Common下
关闭debug:

请求不会报错 不会记录日志
请求会报错 日志文件在 Application/Runtime/Logs/下

我们可以看到日志记录:

payload:http://localhost/thinkphp-3.2.3//?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/Common/21_11_16.log