thinkphp3.2.3经典漏洞:任何文件可以被越权包含执行
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔再来发一个thinkphp@3.2.3
的经典漏洞,最新的thinkphp@5.0.3
中是没有本文所描述的这个漏洞的。所以,各位不明真相的吃瓜群众,可以暂时散散了。

本文描述的漏洞可以用于破解上一个.log
日志查看的漏洞。就是说,对于可下载的log
日志,即使在nginx
层面上已经deny all
了。但是利用本文中的漏洞,还是可以越权查看log
日志。这个问题,就貌似很大了。上一篇文章链接见文章末尾。
20220304 update:有点平行世界了,最近下载thinkphp3.2.3_full
咋找不到这个漏洞了呢?
禁止直接下载日志
对于thinkphp@3.2.3
来说,日志文件的默认位置是:./data/runtime/Logs/
目录下。对于常见的nginx
容器来说,可以这样修改战斗配置文件来杜绝查看日志文件。

取得日志内容
从nginx
层面上来说,是不会直接读取到.log
文件了。但是,thinkphp@3.2.3
还有其他办法可以读取到这个文件。方式如下:
newsn.net:这里是【评论】可见内容

就是说,调用display
方法,传入参数:templateFile
。这里不仅仅是用于查看log
文件了,理论上根目录下面任何文件都能够被查看出来。但是这个过程是个文件包含include
的概念,所以,php
语句会被执行。
读取执行任意文件
因为这个display
操作中的templateFile
是个包含的概念,而不是读取。所以这也是个危险的设定,万一非法上传了某个包含php
语句的文件,就可以利用这个方法来执行非法语句了。比如:
而hack.txt
里面的内容是一些php
语句,那么这个语句就会被立刻执行。

相关链接
- https://newsn.net/say/thinkphp-bug-cache.html
- https://newsn.net/say/thinkphp-bug-log.html
- https://newsn.net/say/thinkphp-trojan-poc.html
总结
以前苏南大叔有个同事,是个坚定的thinkphp
黑粉,他的理由是:thinkphp
漏洞太多。苏南大叔表示傻傻不明白,一直到很多年后的今天,才觉得那位同事,说的确实是有些道理。但是,这并不是抛弃thinkphp
的理由。
更多thinkphp
的相关文章,请点击苏南大叔的博客:



666
6666
6
111
kanyixia
看一下
8888888888888
niude
看一下
12312333
66666666
抄东西认真点,那是ThinkCMF
666
kanyxia