
Directory-Traversal-Schwachstelle im Tarfile-Modul ( mit Overflow gekreuztem Verzeichnis ) --> Führt zu Privilegieneskalation
Auswirkung : Privilegienerweiterung
Funktionsweise :
Die TarFile.extractall()- und TarFile.extract()-Methoden von Python unterstützen ein Feature, mit dem ein Filter gesetzt werden kann, um die Sicherheit bei der Verwendung dieser Methoden zu verbessern. Die Standardbibliothek von Python bietet zwei Implementierungen: tar_filter ("tar") und data_filter ("data"), die jeweils unterschiedliche Prüfungen enthalten, um die Sicherheit der Tarfile-Extraktion zu verbessern.
Ein Fehler tritt auf, wenn ein Pfad mit Symlinks kürzer als PATH_MAX ist, aber länger als PATH_MAX, wenn die Symlinks durch os.path.realpath() ersetzt werden. Symlinks, die über PATH_MAX hinausgehen, werden nicht expandiert.
os.path.realpath() wird von den Filtern "tar" und "data" verwendet, um den Pfad zu validieren, aber es wird kein Fehler ausgelöst, wenn PATH_MAX überschritten wird. Später während extractall() oder extract() werden die Pfade verwendet, ohne sie durch os.path.realpath() zu führen.
Referenz : https://github.com/google/security-research/security/advisories/GHSA-hgqp-3mmf-7h8f
So verwenden Sie den PoC :
ssh-keygen -t ed25519 -f any
mkdir test
mv any.pub authorized_keys
cp authorized_keys /test
cd test
#Put your public key file name (authorized_keys)
python3 exploit.py
(file.tar) ~ generated
# Now using Python3
sudo python3 tar -xvf file.tar
#login
chmod 600 any
ssh -i any user@ip