
CVE-2016-1240 exploit e patch
sudo apt-get install tomcat7
Se il primo passo fallisce, imposta JDK_DIRS="/usr/lib/jvm/java-8-oracle" e aggiungi le dichiarazioni “export JAVA_HOME=/usr/lib/jvm/java-8-oracle” e “export CATALINA_HOME=/usr/share/tomcat7”. Quindi reinstalla Tomcat 7
Imposta una password iniziale per l'utente Tomcat
sudo passwd tomcat7
sudo usrmod -s /bin/bash tomcat7
ssh tomcat7@localhost
touch attack.shchmod +x attack.sh
./attack.sh
sudo service tomcat7 restart
id
Allora l'attacco dovrebbe avere successo e l'euid dovrebbe essere 0, che è 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
Il codice sopra è la chiave per l'escalation dei privilegi. Poiché viene eseguito con privilegi di root, può fare qualsiasi cosa vogliamo. Poi dobbiamo cambiare il proprietario di catalina.out all'utente tomcat7. Dopo aver riavviato Tomcat, siamo in grado di leggere il file a cui catalina punta.
Nello specifico, quando Tomcat si riavvia, cambierà il proprietario di catalina.out all'utente Tomcat, e il riavvio è invocato da init di Linux. Sfruttando init di Linux, possiamo usare un symlink per cambiare il proprietario di qualsiasi file all'utente tomcat. Se colleghiamo simbolicamente catalina.out a qualsiasi file, potremmo operare su qualsiasi file nel sistema con il privilegio di root che viene dato da catalina.out. Questo è un tipico sfruttamento di DLL hijack.