
CVE-2016-1240 Exploit und Patch
1.Installieren Sie Tomcat 7 auf der virtuellen Maschine
sudo apt-get install tomcat7
2.Falls der erste Schritt fehlschlägt, setzen Sie JDK_DIRS="/usr/lib/jvm/java-8-oracle" und fügen Sie die Anweisungen “export JAVA_HOME=/usr/lib/jvm/java-8-oracle” und “export CATALINA_HOME=/usr/share/tomcat7” hinzu. Installieren Sie Tomcat 7 dann neu.
3.Legen Sie ein initiales Passwort für den Tomcat-Benutzer fest
sudo passwd tomcat7
4.Weisen Sie dem Tomcat-Benutzer eine Login-Shell zu
sudo usrmod -s /bin/bash tomcat7
5.Stellen Sie die Tomcat-7-Benutzershell her
ssh tomcat7@localhost
1.Erstellen Sie die Exploit-Skripte attack.sh in /tmp über die Tomcat7-Benutzershell und machen Sie dann die Exploit-Codes ausführbar.
touch attack.sh
chmod +x attack.sh
2.Führen Sie den Exploit-Code aus
./attack.sh
3.Starten Sie den Tomcat-Server neu, um das Angriffsergebnis zu überprüfen.
sudo service tomcat7 restart
4.Überprüfen Sie die Benutzer-ID
id
Dann sollte der Angriff erfolgreich sein und die euid sollte 0 sein, was root ist.
# 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
Der obige Code ist der Schlüssel zur Privilegienausweitung. Da er mit Root-Rechten läuft, kann er alles tun, was wir wollen. Dann müssen wir den Besitzer von catalina.out auf den Benutzer tomcat7 ändern. Nachdem wir Tomcat neu gestartet haben, können wir die Datei lesen, auf die catalina zeigt.
Genauer gesagt: Wenn der Tomcat neu gestartet wird, ändert er den Besitzer von catalina.out auf den Tomcat-Benutzer, und der Neustart wird von Linux-Init aufgerufen. Indem wir Linux-Init ausnutzen, können wir mit einem Symlink den Besitzer einer beliebigen Datei auf den Tomcat-Benutzer ändern. Wenn wir catalina.out auf eine beliebige Datei symlinken, können wir jede Datei im System mit den Root-Rechten bearbeiten, die durch catalina.out gewährt werden. Dies ist eine typische Ausnutzung von DLL-Hijacking.