【网络安全】一次实战中对tp5网站getshell方式的测试
前言
之前接觸tp5的站比較少,只知道利用RCE漏洞getshell的方式。在最近對一個發卡平臺滲透的過程中,由于php版本限制,無法直接使用RCE的payload拿shell,于是結合該網站盡可能多的測試一下tp5+php7.1環境下的getshell方法。
【查看資料】
正文
拿到站點后,訪問首頁如下
不過看不出來具體版本,不確定是否存在RCE,于是用exp打一下試試
_method=__construct&method=get&filter=call_user_func&get[]=phpinfo
發現執行成功了,disable_function禁用了挺多函數
一般php版本低于7.1的情況下,接下來直接用exp寫shell就可以了
方法一
直接用下面的exp寫shell
s=file_put_contents('test.php','<?php phpinfo();')&_method=__construct&method=POST&filter[]=assert但是這個exp中使用了assert,而上面看到php版本是7.1.33,這個版本是已經沒辦法使用assert了,所以這里這個方法是不能用的
方法二
上面的exp沒辦法寫shell,但是phpinfo是執行了的,那么RCE是存在的。于是想到可以通過讀取文件讀取數據庫的賬號密碼,然后找到phpmyadmin,就可以通過數據庫寫shell。
于是首先通過phpinfo中的信息找到網站根目錄,再使用scandir函數遍歷目錄,找到數據庫配置文件
然后通過highlight_file函數讀取文件
拿到數據庫信息后,找看看是否存在phpmyadmin,最終發現沒有,于是這種方法也失敗。
在論壇搜索tp5的getshell方法,發現不少師傅說到可以用日志包含或者session包含的方法,但是之前沒接觸過,不知道具體的,于是搜索嘗試一下。
方法三
嘗試日志包含
首先寫shell進日志
然后通過日志包含來getshell
_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../data/runtime/log/202110/17.log&c=phpinfo();
失敗了,這里日志包含的方法也不可用
方法四
嘗試使用session包含的方法來getshell
首先通過設置session會話并傳入一句話木馬
然后直接利用文件包含去包含session文件,tp5的session文件一般都是在/tmp下面,文件名為sess_sessionid(這個sessionod在Cookie里面)
成功執行,接下來通過蟻劍連接即可
成功getshell
www權限
方法五
上面拿到了shell,但是我還是再嘗試了是否還有其他方法能getshell的??吹揭黄恼?#xff0c;是由于disable_function中沒有禁用exec,然后利用exec從vps下載shell文件。
于是我仔細看了下disable_function中禁用的函數,巧了,發現也沒有禁用exec,那么試一下
首先在vps上創建一個test.php,并用python開放一個端口
從vps上下載文件
成功下載到目標機器上
最后
實戰是比較好的學習方法,通過對這個戰點的滲透,才知道tp5的站有挺多種方法的,也學到了之前沒有使用過的session包含。本次實戰不僅僅為了getshell,也是為了學習利用tp5的不同的getshell方法。
關注我,持續更新——私我獲取【網絡安全學習資料·攻略】
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【网络安全】一次实战中对tp5网站getshell方式的测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【渗透测试】一次授权的渗透测试——建议收
- 下一篇: 【内网渗透】利用非常规手段突破安全策略上