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
容器来说,可以这样修改战斗配置文件来杜绝查看日志文件。
location / {
# ...
location ~ .*\.(log)?$ {
deny all;
}
}
取得日志内容
从nginx
层面上来说,是不会直接读取到.log
文件了。但是,thinkphp@3.2.3
还有其他办法可以读取到这个文件。方式如下:
seosn.com:这里是【评论】可见内容
就是说,调用display
方法,传入参数:templateFile
。这里不仅仅是用于查看log
文件了,理论上根目录下面任何文件都能够被查看出来。但是这个过程是个文件包含include
的概念,所以,php
语句会被执行。
读取执行任意文件
因为这个display
操作中的templateFile
是个包含的概念,而不是读取。所以这也是个危险的设定,万一非法上传了某个包含php
语句的文件,就可以利用这个方法来执行非法语句了。比如:
http://localhost/?a=display&templateFile=hack.txt
而hack.txt
里面的内容是一些php
语句,那么这个语句就会被立刻执行。
<?php
echo "hacker!";
相关链接
- 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