7-ZIP加密压缩漏洞

  • 现象描述

当用7ZIP为内核的压缩软件加密压缩一个文件时,不仅仅可以通过当时填写的密码进行解压,而且还存在许多“隐藏”的密码进行解压。其本质是“碰撞攻击”,猜测其密码验证是把输入的密码MD5加密一次进行比对,如果字符串相同就认为密码正确。这样存在一个问题,MD5加密后的字符串长度有限,而真实的密码是无限的,所以就会存在多个密码映射到同一个字符串的现象。

  • 脚本验证
import time
import zipfile


f=open('C:\\Users\\Administrator\\Desktop\\pwd.txt',"a+")

def fun(zippath, wordpath):
    file = open(wordpath, "r")
    z = zipfile.ZipFile(zippath, "r")
    for line in file:
        try:
            z.extractall("C:\\Users\\Administrator\\Desktop\\", pwd=line.strip('\n').encode("ascii"))
            print("find it!!!!!!".strip("\n")+line.strip("\n")+"------"+time.strftime("%H:%M:%S", time.localtime()))
            f.write(line)         
            #return
        except:
            print(line.strip("\n")+"---error---".strip("\n")+time.strftime("%H:%M:%S", time.localtime())+'\n')


fun("C:\\Users\\Administrator\\Desktop\\ldx.zip", "C:\\Users\\Administrator\\Desktop\\list1.txt")

PS:将爆破字典放置于桌面,并命名为list1.txt。将待解压文件放置于桌面,并命名为ldx.zip

  • 效果展示

脚本执行完毕后,将在桌面产生一个名为pwd.txt的文件,里面包含的就是那些“隐藏”的密码

7-ZIP加密压缩漏洞_第1张图片

你可能感兴趣的:(7-ZIP加密压缩漏洞)