
Exploit e patch da CVE-2016-1240
1.Instale o Tomcat 7 na máquina virtual
sudo apt-get install tomcat7
2.Se o primeiro passo falhar, defina JDK_DIRS="/usr/lib/jvm/java-8-oracle" e adicione as declarações “export JAVA_HOME=/usr/lib/jvm/java-8-oracle” e “export CATALINA_HOME=/usr/share/tomcat7”. Em seguida, reinstale o Tomcat 7
3.Defina uma senha inicial para o usuário do Tomcat
sudo passwd tomcat7
4.Atribua um shell de login para o usuário do Tomcat
sudo usrmod -s /bin/bash tomcat7
5.Estabeleça o shell do usuário do Tomcat 7
ssh tomcat7@localhost
1.Crie os scripts de exploração attack.sh em /tmp por meio do shell do usuário Tomcat7 e, em seguida, torne os códigos de exploração executáveis
touch attack.sh
chmod +x attack.sh
2.Execute o código de exploração
./attack.sh
3.Reinicie o servidor Tomcat para verificar o resultado do ataque.
sudo service tomcat7 restart
4.Verifique o ID do usuário
id
Então o ataque deve ser bem-sucedido e o euid deve ser 0, que é 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
O código acima é a chave para escalar privilégios. Como ele é executado com privilégio de root, pode fazer qualquer coisa que quisermos. Em seguida, precisamos alterar o proprietário de catalina.out para o usuário do tomcat7. Depois de reiniciarmos o Tomcat, somos capazes de ler o arquivo para o qual catalina aponta.
Especificamente, quando o Tomcat reinicia, ele altera o proprietário do catalina.out para o usuário do Tomcat, e a reinicialização é invocada pelo init do Linux. Aproveitando-se do init do Linux, podemos usar um symlink para alterar o proprietário de qualquer arquivo para o usuário do tomcat. Se criarmos um symlink de catalina.out para qualquer arquivo, poderemos operar qualquer arquivo no sistema com o privilégio root que é concedido pelo catalina.out. Esta é uma exploração típica de sequestro de DLL.