首页 » PHP教程 » thinkphp完整解析技巧_马脚分析ThinkPHP5随便率性代码实行分析全记录

thinkphp完整解析技巧_马脚分析ThinkPHP5随便率性代码实行分析全记录

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

ThinkPHP是为了简化企业级运用开拓和敏捷WEB运用开拓而出身的轻量级PHP开拓框架,具有免费开源、快速、大略且面向工具等特点。
在ThinkPHP的5.版本中存在安全隐患,由于ThinkPHP5框架对掌握器名没有进行足够的安全检测,导致在没有开启逼迫路由的情形下,可能涌现getshell漏洞。
受影响的版本包括5.0和5.1。

本期安仔教室,ISEC实验室的黄老师将为大家先容ThinkPHP5的干系知识点,欢迎感兴趣的朋友一起互换学习。

thinkphp完整解析技巧_马脚分析ThinkPHP5随便率性代码实行分析全记录

二、漏洞剖析

thinkphp完整解析技巧_马脚分析ThinkPHP5随便率性代码实行分析全记录
(图片来自网络侵删)

该漏洞源于ThinkPHP5框架底层对掌握器名过滤不严,许可黑客通过url调用Thinkphp框架内部的敏感函数,涌现getshell漏洞。
详细代码实现如下:

图1

2.1

thinkphp/library/think/App.php

首先看到routecheck代码,由于没有在配置文件上定义任何路由,以是默认按照图一的办法进行解析调度。
如果开启逼迫路由模式,会直接抛出错误,这时通过Route::import命令加载路由,连续跟进路由。

图2

2.2

thinkphp/library/think/Route.php

可以看到tp5在解析URL的时候只是将URL按分割符分割,并没有进行安全检测。
连续剖析:

图3

个中,渗透测试职员最为关心的是Exchange对外供应的访问接口,以及利用的加密验证类型。

2.3

thinkphp/library/think/App.php

可以看到:由于程序并未对掌握器进行有效的安全过滤和检讨,因此测试职员可以通过引用“\”来调用任意方法。

图4

2.4

跟进到module方法

图5

在测试时把稳利用一个已存在的module,否则会抛出非常,无法连续运行。
此处直接从之前的解析结果中获取掌握器名称以及操作名,无任何安全检讨。

图6

2.5

跟进到实例化Loader 掌握器方法

图7

可以看到如果掌握器名中有“\”,就直接返回。
回到“thinkphp/library/think/App.php”的module方法,正常情形下该当获取到对应掌握器类的实例化工具,而我们现在得到了一个“\think\App”的实例化工具,通过url调用其任意的public方法,同时解析url中的额外参数,当作方法的参数传入。
我们可以调用invokeFunction这个方法,布局payload为:

图8

三、漏洞利用

所有基于tp5.0框架培植的网站都受此漏洞的影响。

3.1

测试该漏洞点是否被修复

图9

网址后面直接拼接以上代码,实行之后创造涌现phpinfo页面,解释漏洞存在。

图10

3.2

在public目录下创建insfo.php

图11

修正漏洞利用代码,直接在public目录下创建一个名为insfo.php的一句话木马。

图12

3.3

删除insfo.php文件

图13

四、办理方案

直接添加补丁,升级ThinkPHP版本,开启逼迫路由,在ThinkPHP5.0版本的thinkphp/library/think/App.php , Module类的获取掌握名处添加如下代码,正则过滤:

图14

相关文章

php上传数据到另一个php技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

PHP教程 2024-12-15 阅读0 评论0