
CVE-2016-1240 exploit and patch
1.Installer Tomcat 7 sur la machine virtuelle
sudo apt-get install tomcat7
2.Si la première étape a échoué, définissez JDK_DIRS="/usr/lib/jvm/java-8-oracle" et ajoutez les instructions “export JAVA_HOME=/usr/lib/jvm/java-8-oracle” et “export CATALINA_HOME=/usr/share/tomcat7”. Réinstallez ensuite Tomcat 7
3.Définissez un mot de passe initial pour l'utilisateur Tomcat
sudo passwd tomcat7
4.Attribuez un shell de connexion pour l'utilisateur Tomcat
sudo usrmod -s /bin/bash tomcat7
5.Établissez le shell de l'utilisateur Tomcat 7
ssh tomcat7@localhost
1.Créez les scripts d'exploitation attack.sh dans /tmp via le shell utilisateur Tomcat7, puis rendez les codes d'exploitation exécutables
touch attack.sh
chmod +x attack.sh
2.Exécutez le code d'exploitation
./attack.sh
3.Redémarrez le serveur Tomcat pour vérifier le résultat de l'attaque.
sudo service tomcat7 restart
4.Vérifiez l'ID de l'utilisateur
id
Ensuite, l'attaque devrait réussir et l'euid devrait être 0, c'est-à-dire root.
# Run the catalina.sh script as a daemon
set +e
touch "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
chown $TOMCAT7_USER "$CATALINA_PID" "$CATALINA_BASE"/logs/catalina.out
start-stop-daemon --start -b -u "$TOMCAT7_USER" -g "$TOMCAT7_GROUP" \
-c "$TOMCAT7_USER" -d "$CATALINA_TMPDIR" -p "$CATALINA_PID" \
-x /bin/bash -- -c "$AUTHBIND_COMMAND $TOMCAT_SH"
status="$?"
set +a -e
return $status
Le code ci-dessus est la clé de l'escalade de privilèges. Comme il s'exécute avec les privilèges root, il peut faire tout ce que nous voulons. Ensuite, nous devons changer le propriétaire de catalina.out pour l'utilisateur de tomcat7. Après avoir redémarré Tomcat, nous pouvons lire le fichier auquel catalina pointe.
Plus précisément, lorsque Tomcat redémarre, il change le propriétaire de catalina.out pour l'utilisateur de Tomcat, et le redémarrage est invoqué par l'init Linux. En profitant de l'init Linux, nous pouvons utiliser un lien symbolique pour changer le propriétaire de n'importe quel fichier pour l'utilisateur de tomcat. Si nous lions symboliquement catalina.out à n'importe quel fichier, nous pourrions opérer sur n'importe quel fichier du système avec le privilège root donné par catalina.out. Il s'agit d'une exploitation typique du détournement de DLL.