热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

8PHP代码审计——thinkphp3.2.3框架信息泄露

环境:thinkphp_3.2.3_fullphp5.6.27以上下载thinkphp3.2.2解压到http:www.tptest.com网站的根目录下并访问网址&

环境:


thinkphp_3.2.3_full

php5.6.27以上


 

下载thinkphp3.2.2解压到http://www.tptest.com/网站的根目录下并访问网址,如果出现以下页面,说明安装成功:

 

找到目录tptest.com\Application\Common\Conf\config.php配置数据库,开启调试,这里只需配置前6项即可,其它均使用默认配置

return array(/* 数据库设置 */'DB_TYPE' => 'mysql', // 数据库类型'DB_HOST' => '127.0.0.1', // 服务器地址'DB_NAME' => 'thinkphp32', // 数据库名'DB_USER' => 'root', // 用户名'DB_PWD' => '123456', // 密码'DB_PORT' => '3306', // 端口'DB_PREFIX' => '', // 数据库表前缀'DB_PARAMS' => array(), // 数据库连接参数'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志'DB_FIELDS_CACHE' => true, // 启用字段缓存'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8'DB_DEPLOY_TYPE' => 0, // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'DB_RW_SEPARATE' => false, // 数据库读写是否分离 主从式有效'DB_MASTER_NUM' => 1, // 读写分离后 主服务器数量'DB_SLAVE_NO' => '', // 指定从服务器序号'SHOW_PAGE_TRACE'=>true,
);

 

然后访问网址,如果出现以下页面说明配置完成

 

thinkphp3.2.2日志文件信息泄露

thinkphp在开启DEBUG调试情况下会在\Application\Runtime\Logs\Home目录下生成日志,在浏览器地址栏中输入路径可以直接访问读取日志文件,输入路径造成目录遍历。

ThinkPHP3.2日志文件路径:Application\Runtime\Logs\Home\17_07_22.log

ThinkPHP3.1日志文件路径:Runtime\Logs\Home\17_07_22.log

可以看到thinkphp的日志文件的格式为:项目名\Runtime\Logs\Home\年份_月份_日期.log,这样容易导致日志文件很容易被猜解到,并且日志里面有执行SQL语句的记录,会导致数据库的相关信息泄露。

 

通常建议开发阶段开启debug,部署阶段把index.php中的debug模式关闭掉:

define('APP_DEBUG',false);

 

thinkphp缓存信息泄露

thinkphp提供了方便的缓存方式,包括数据缓存、静态缓存和查询缓存等,主要提供了两个函数进行数据缓存:F函数和S函数,F函数设置缓存数据后没有缓存时间限制,而S函数则可以设置缓存时间。

 

例如在index.php中通过F函数插入一段代码,访问http://www.tptest.com/网址后,默认会在Application\Runtime\Data目录下生成一个data.php文件

 

并且data.php文件中的php代码是可以执行的,假设thinkphp中的F函数是可控的,那么攻击者很可能会插入一段恶意的代码向网站写入shell等等,F函数是一个非常危险的函数,需谨慎使用。

 

在没有设置缓存路径的情况下,F函数缓存的数据默认是在data目录下,S函数默认是在temp目录。

如果使用S函数进行文件方式的缓存机制,那么可以设置DATA_CACHE_KEY参数,避免缓存文件名被猜测到,只需在config.php文件中最下面添加一行配置,例如:'DATA_CACHE_KEY'=>'think'

在index.php中执行S函数,刷新网页,在temp目录下会生成一个md5加密的文件,解密后就是data.php文件了。

 

F函数和S函数的功能非常强大,但也非常危险,在开发中应尽量避免使用数据缓存函数。


推荐阅读
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 如何高效地安装并配置 PostgreSQL 数据库系统?本文将详细介绍从下载到安装、配置环境变量、初始化数据库、以及优化性能的全过程,帮助读者快速掌握 PostgreSQL 的核心操作与最佳实践。文章还涵盖了常见问题的解决方案,确保用户在部署过程中能够顺利解决遇到的各种挑战。 ... [详细]
  • 在前文探讨了Spring如何为特定的bean选择合适的通知器后,本文将进一步深入分析Spring AOP框架中代理对象的生成机制。具体而言,我们将详细解析如何通过代理技术将通知器(Advisor)中包含的通知(Advice)应用到目标bean上,以实现切面编程的核心功能。 ... [详细]
  • 一、背景这段时间刚好有时间,帮朋友做一个简单的系统管理网站,因为朋友买的空间是虚拟机,支持的PHP版本在5.5以下,所以只好挑一个老框架,为了快速便捷开发,我就选择了ThinkPH ... [详细]
  • Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了。这一新特性对以往的操作方法使用没有任何影响,你也可以用 ... [详细]
  • 导读:很多朋友问到关于入门学什么php框架简单的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
  • 微信民众号商城/小顺序商城开源项目介绍及使用教程
    本文介绍了一个基于WeiPHP5.0开发的微信民众号商城/小顺序商城的开源项目,包括前端和后端的目录结构,以及所使用的技术栈。同时提供了项目的运行和打包方法,并分享了一些调试和开发经验。最后还附上了在线预览和GitHub商城源码的链接,以及加入前端交流QQ群的方式。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 本文详细探讨了在ASP.NET环境中通过加密数据库连接字符串来提升数据安全性的方法。加密技术不仅能够有效防止敏感信息泄露,还能增强应用程序的整体安全性。文中介绍了多种加密手段及其实施步骤,帮助开发者在日常开发过程中更好地保护数据库连接信息,确保数据传输的安全可靠。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 通过手机浏览器调用客户端QQ
    php教程|php手册thinkphp代码,代码示例,代码参考,php短信,数据库备份代码,令牌验证,去除代码中的空白和注释调用QQ客户端php教程-php手册可调用iosandr ... [详细]
author-avatar
闲云野鹤-男主角_185
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有