首页 > 编程知识 正文

redis未授权访问漏洞修复,java redis面试题

时间:2023-05-06 01:07:31 阅读:19447 作者:805

在开放6379端口(Redis服务)的主机上,使用批量检测是否存在非法访问漏洞1 )前博客的脚本执行结果,保存为ip.txt,文件中包含调用ZoomEye官方api检索的6379端口(6379是默认的Redis服务)

3359 blog.csdn.net/jex sen/article/details/115247912

2 .运行此脚本有三种检测方式。

通过运行脚本的-u参数,在-u ip.txt的情况下批量检测txt的ip,在-u ip的情况下检测各个ip主机,在-u 103.25.126.237-255的情况下检测c段的ip

执行命令:

第一种方法是加载ip.txt文本以批量检测是否存在Redis未授权访问漏洞。

python redis _ unauthorized _ access.py-UIP.txt-p 6379-sredis

第二种方法是检测单个ip是否在Redis中非法访问漏洞。

python redis _ unauthorized _ access.py-u 196.21.83.203-p 6379-sredis

第三种方法是,一个ip段中的主机在Redis中检测未授权访问漏洞。

python redis _ unauthorized _ access.py-u 196.21.83.203-207-p 6379-sredis

#--编码: utf-8-- importsocketimportsysimportgetoptfromzoomeye _ test import * # banner信息# [ ' 196.31.63.] ] ' 114.67.120.216:6379 ',' 103.47.208.44:6379 ',' 106.15.109.65:6379 ',' 170.106.153 ' ' 114.55.108.87:6379 ',' 103.28.250.2000 ' 78.46.242.32:6379 ',' 78.42.513:6379 ',' ' 78.47.48.6833606379 ' ] # 196.21.83.20:6379这台电脑是success#平面横幅广告ip_list=[]def banner () ) ) 3360 print ('.d 8888 PD 8888 b.d 88888 p.d888b.dpdp 88 ' ` 888888 baaa.aa ad8 ' `8bad 88.d 8888 b.d 88888 b 8888 ` ` 8888 oood 888 ` ` ' 88888 ' 8b . d 8.88 d8' d . 8888 . 88 ` 8b.` y888p ' d 88888 PD8` ` 888888 ' ) print (-p :--端口;' ) print('-u:--URL域名;' ) print (-f :--文件文件; ' (print(-s:--typeredis;) (sys.exit ) #错误的函数检测,创建传递给url和端口defredis_unauthored(URL,port ) #的空列表result=[]#socket对象s=socket . x0a ' #套接字的默认超时时间socket.setdefaulttimeout(110

发送攻击语句 s.sendall(payload.encode()) # 获得返回内容 recvdata = s.recv(1024).decode() # 如果返回内容存在redis_version,则判定成功,列表中追加ip:端口:成功 if recvdata and 'redis_version' in recvdata: result.append(str(ip) + ':' + str(port) + ':' + 'success') except: pass # 如发生异常,判定失败,列表中追加ip:端口:失败 result.append(str(ip) + ':' + str(port) + ':' + 'failed') # 关闭socket对象 s.close() # 方法返回result列表 return (result)def url_list(li): ss = [] i = 0 j = 0 xqdmy = [] for s in li: a = s.find('-') i = i + 1 if a != -1: ss = s.rsplit("-") j = i break for s in range(int(ss[0]), int(ss[1]) + 1): li[j - 1] = str(s) aa = ".".join(li) xqdmy.append(aa) return xqdmy# 针对IP区段内的网络主机进行未授权访问检测,以-为目标字符进行分隔,将分隔后的字符进行for循环存入列表中,被redis_unauthored()来调用def url_exec(url): i = 0 xqdmy = [] group = [] group1 = [] group2 = [] li = url.split(".") if (url.find('-') == -1): group.append(url) xqdmy = group else: for s in li: a = s.find('-') if a != -1: i = i + 1 xqdmy = url_list(li) if i > 1: for li in xqdmy: zz = url_list(li.split(".")) for ki in zz: group.append(ki) xqdmy = group i = i - 1 if i > 1: for li in xqdmy: zzz = url_list(li.split(".")) for ki in zzz: group1.append(ki) xqdmy = group1 i = i - 1 if i > 1: for li in xqdmy: zzzz = url_list(li.split(".")) for ki in zzzz: group2.append(ki) xqdmy = group2 return xqdmy# 主函数,传入输入参数进入def start(argv): thread = 1 dict = {} filename = "" # url地址 url = "" # -s 扫描类型 type = "" # 如果手工启动脚本没有输入参数 if len(sys.argv) < 2: print("-h 帮助信息;n") sys.exit() # 定义异常处理 try: # 打印广告 banner() # 拿到手工输入的参数 opts, args = getopt.getopt(argv, "-u:-p:-s:-h") except getopt.GetoptError: print('Error an argument!') sys.exit() # 其中opt是-u,-s这些,arg是手动输入的参数 for opt, arg in opts: if opt == "-u": url = arg # 如果传入的-u参数是文档ip.txt就拿到ip_list列表 if 'txt' in url: filename = arg # 用户手动输入ip.txt # print(str(filename) + 'aaa') with open(filename, "r") as file_to_read: while True: line = file_to_read.readline() if not line: break line = line.strip('n') # 拿到了ip.txt文件中查出来开放了6379端口的ip,存入了ip_list列表 ip_list.append(line) # 打印列表 # print(ip_list) else: url = arg elif opt == "-s": type = arg elif opt == "-p": port = arg elif opt == "-h": # 如果检测到输入的是-h,则打印人工启动脚本输入参数的规则 print(usage()) # 判断一下url的类型,是字符串还是列表,如果是字符串就直接给进launcher方法中,如果是列表 就要for循环给入launcher方法中 if 'txt' in url: for t in ip_list: launcher(t, type, port) else: # 拿到手工输入的-u,-s,-p,传入launcher方法中 launcher(url, type, port)# 输出结果格式设计def output_exec(output, type): print('扫描中...') for li in output: # print("+-----------------+-----------+--------------+") print("↓↓↓↓↓↓↓↓↓↓↓↓存在Redis未授权访问漏洞的主机↓↓↓↓↓↓↓↓↓↓↓↓") print("| ip | port | status |") print("| " + li.replace(":", " | ") + " | ") # print("+----------------+------------+---------------+n") # print("[*] shutting down....")# 漏洞回调函数def launcher(url, type, port): # 未授权访问类型,如果用户输入的-s是Redis if type == "Redis": # 把url和端口号传入到redis_unauthored方法中开始工作 output = redis_unauthored(url_exec(url), port) # 把结果output和类型,传入到执行输出结果的方法output_exec中去 output_exec(output, type)if __name__ == '__main__': # 定义异常 try: start(sys.argv[1:]) except KeyboardInterrupt: print("interrupted by user, killing all threads...") 执行结果:

第一种方式为加载ip.txt文本批量检测是否存在Redis未授权访问漏洞。

第二种方式为检测单个ip是否在Redis未授权访问漏洞。

第三种方式为检测一个ip段里的主机是否在Redis未授权访问漏洞。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。