最近苏南大叔接到一个小小的任务,找某个系统的漏洞。通过url和错误页特征,可以知道该系统是基于thinkphp3.2.3的。那么,这个系统算是比较古老的了,毕竟现在都是thinkphp都是5.x系列了。但是,得益于国内日益繁荣的盗版代码的情况,基于thinkphp3.2.3的各种网站类系统,还是遍地开花的。所以,这也能算是个非常经典漏洞了。

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - thinkphp-bug-log
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-1)

本文测试环境:mac/thinkphp@3.23/php@7.2。本文涉及的仅仅是thinkphp@3.2.3的日志文件任意下载漏洞。

防御方式

框架位置(推荐)

对于thinkphp来说,可以把框架移动到www根目录的外部。例如:最新版的thinkphp@5就是根目录叫做public,框架和public目录平行。

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - nginx-tp3-tp5
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-3)

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - nginx-tp3-public-index
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-4)

修改路径(指标不治本)

对于开发人员来说,可以修改默认的log日志的路径。

修改应用路径Application的方法:修改index.php中的变量APP_PATH

define('APP_PATH','./Application/');

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - tp3-app-path
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-5)

修改默认模块名称Home的方法:在Common/Conf/config.php中,配置DEFAULT_MODULE

return array(
  'DEFAULT_MODULE' => 'Home'
);

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - tp3-model-name-default
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-6)

运维配置(防患于未然)

对于运维人员来说,可以禁用.log文件的下载功能。例如,在nginx中可以利用下面的方式,禁止.log文件访问。

苏南大叔:thinkphp3.2.3经典漏洞:配置不当导致日志可下载 - nginx-403-forbidden
thinkphp3.2.3经典漏洞:配置不当导致日志可下载(图7-7)

location ~ .*\.log$ {
  deny all;
}

相关链接

总结

苏南大叔在本文中,描述了一个很常见,很容易被忽视的日志下载漏洞。当然,如果您重视这个问题,这个漏洞也是蛮容易修复的。不过,大多数人都不会重视的。那么,就让漏洞多飞一会吧~

更多thinkphp相关文字,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   thinkphp

本站的忠实读者小伙伴,正在阅读下面这些文章: