记一次渗透测试中thinkphp3.2.3 update注入

本文记录了一次针对ThinkPHP3.2.3框架的SQL注入攻击过程,详细介绍了从获取后台登录口令到利用SQL注入漏洞爆出数据库信息的全过程,强调了及时修复漏洞的重要性。
  1. . 背景介绍

    在一次做渗透时,首先从领导那拿到客户需要做测试的后台URL。果然,一如既往的登录页面,但发现没有验证码验证策略,那咱先就抓个包试试登录爆破呗(爆破用Cluster bomb选项,此处不再阐述)。拿到后台口令–admin/admin123 857-857丶我估计以我的运气手动也能测出来,但客户为啥不提前给我呢~~
    后台登录页面

  2. 摸索过程

    使用Google的附件Wappalyzer查到用户使用的是thinkphp3框架。thinkphp是国内著名的php开发框架,有完善的开发文档,基于MVC架构,其中Thinkphp3.2.3是目前使用最广泛的thinkphp版本,虽然已经停止新功能的开发,但是普及度高于新出的thinkphp5系列,由于框架实现安全数据库过程中在update更新数据的过程中存在SQL语句的拼接,并且当传入数组未过滤时导致出现了SQL注入。(老哥总结的非常nice~)
    话不多说,得到登录口令,先到后台转转——
    后台管理页面

在个人设置,后台管理员修改密码的地方抓个包丶
抓包
把数据包发送到Repeater利用老哥总结出的thinkphp3.2.3的PoC替换下面的post data,重发试一下丶
利用PoC验证
爆出当前用户root,继续利用此漏洞,可以使用SQL查询语句继续爆出所有数据库,所有表及所有字段等等丶
爆库、表、字段
OK,thinkphp3.2.3 update注入到这一步验证就done了。作为一个有责任感且技术不怎么样的小菜鸡,这个漏洞就不在此处继续记录了,可以收拾收拾整理好漏洞报告给客户,对接客户那边及时升级打补丁修复此漏洞。

  1. End
    个人记录这篇文章,第一是想记录自己的安全职业生涯,第二是想通过自己的小力量提醒大家及时打补丁修复漏洞。现在是互联网大数据时代,网络安全颇为重要。每天都会爆出很多系统、服务、软件等等高危漏洞,希望全国大中小型企业,注重网络安全,共同营造绿色网络环境~~

ps:感谢大佬的文章丶
有关此框架漏洞,原理可参考:
https://blog.youkuaiyun.com/fly_hps/article/details/84994534

<think>好的,我现在需要回答用户关于ThinkPHP 3.x版本存在的具体安全漏洞的问题。用户明确提到希望了解包括缓存漏洞、SQL注入漏洞、update注入漏洞以及select/find/delete注入漏洞的列表。我需要根据提供的四个引用资料来整理这些信息,并确保回答符合系统级指令的要求,比如正确使用LaTeX格式和引用标识。 首先,我需要逐一检查每个引用,提取与ThinkPHP 3.x相关的漏洞信息。引用[1]提到了ThinkPHP的历史漏洞,包括2.x的任意代码执行漏洞,但3.x的信息可能较少。引用[2]列出了多个ThinkPHP的历史漏洞,其中有几个明确提到3.x版本,比如ThinkPHP3.2.3的缓存函数设计缺陷导致Getshell,以及3.2.X的find、select、delete注入漏洞,还有3.X的order_by注入漏洞。引用[3]详细讨论了find、select、delete注入漏洞的分析,指出其流程与之前的漏洞类似。引用[4]也提到了3.x和5.x系列的漏洞,但没有具体信息。 接下来,我需要将这些信息分类整理。缓存漏洞方面,引用[2]提到ThinkPHP3.2.3的缓存函数设计缺陷可导致Getshell。SQL注入漏洞包括update注入、select/find/delete注入以及order_by注入。其中,update注入漏洞在引用[2]和[4]中都有涉及,而select/find/delete注入在引用[2]、[3]、[4]中都被提到。order_by注入属于3.X版本的问题,同样来自引用[2]。 需要确保每个漏洞都有对应的引用标识,例如缓存漏洞引用[^2],SQL注入中的update注入引用[^2][^4],select/find/delete注入引用[^2][^3],order_by注入引用。同时,注意用户的问题是否还有其他漏洞类型,但根据现有资料,似乎已覆盖用户提到的所有类型。 最后,生成相关问题时要围绕ThinkPHP 3.x的漏洞分析、修复建议、实际案例以及与其他版本的对比。需要确保问题合理且有依据,比如如何分析某个漏洞,如何修复,实际攻击案例,以及与其他版本的差异。 现在,按照系统指令组织答案结构,使用中文,正确应用LaTeX格式,并添加引用标识。确保回答清晰,分点列出每个漏洞类型,并在最后生成相关问题。</think>### ThinkPHP 3.x 版本安全漏洞列表 #### 1. **缓存函数设计缺陷导致Getshell** - **描述**:ThinkPHP3.2.3版本中,缓存函数因未对用户输入进行严格过滤,攻击者可构造恶意参数写入Webshell文件,从而控制服务器。 - **示例代码片段**: ```php // 漏洞触发点示例(假设输入可控) $cache->set($key, $value); ``` #### 2. **SQL注入漏洞** - **Update注入** 通过`update`方法的参数过滤不严,攻击者可在更新操作中注入恶意SQL语句。例如: ```php $User->where(&#39;id=1&#39;)->update($_POST); ``` 若`$_POST`包含SQL语句片段,可导致数据库篡改[^2]。 - **Select/Find/Delete注入** 在`find`、`select`、`delete`方法中,若未对`where`条件参数过滤,攻击者可利用数组或字符串拼接注入: ```php $User->where($map)->find(); ``` 若`$map`包含恶意表达式(如`[&#39;id&#39; => [&#39;exp&#39;, &#39;1 OR SLEEP(5)&#39;]]`),可触发延时注入[^3]。 - **Order By注入** 使用`order`方法时,未对排序字段进行校验,攻击者可通过注入控制排序逻辑: ```php $User->order($input)->select(); ``` 若`$input`包含`IF(1,SLEEP(5),id)`,可导致盲注攻击。 #### 3. **未开启强制路由的RCE风险** - **描述**:部分3.x版本未强制路由,攻击者可通过构造特定URL调用未授权控制器方法,结合反序列化等漏洞实现远程代码执行[^1]。 --- ### 漏洞修复建议 1. **升级框架版本**:官方已发布补丁,建议升级至安全版本。 2. **输入过滤**:对所有用户输入使用`I`函数过滤(如`I(&#39;post.id&#39;)`)。 3. **禁用危险配置**:关闭调试模式,避免暴露敏感信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值