Thinkphp5日志文件包含trick

前言

Thinkphp5日志文件包含trick,一种对日志进行文件包含的利用方式

环境

  • thinkphp5.0.24 变量覆盖rce修复版本,不在未开启强制路由rce影响版本

  • 未开启app_debug

利用条件

  • 日志路径
  • 包含点

分析

控制器写入一个可以触发错误的方法,发现传入的php代码会进行url编码

跟进日志相关函数

四个相关函数进行分析,ip:

ip可以用XFF HCI RA等字段,但是最后有检测合法性,ip2long检测ip为无效返回false,最后设置ip为0.0.0.0

method:

这里并没有进行过滤,但是最后返回的是大写 HTTP_X_HTTP_METHOD_OVERRIDE

host:

直接返回 HTTP_X_REAL_HOST

url:

返回 HTTP_X_REWRITE_URL

添加头部信息

X-REAL-HOST: <?php phpinfo();?>
X-REWRITE-URL: <?php phpinfo();?>
X-HTTP-METHOD-OVERRIDE: <?php phpinfo();?>

包含日志文件