Bash Shellshock

3

Estoy intentando averiguar si mis dispositivos son vulnerables a bash shellshock. He ejecutado los comandos que se encuentran en enlace . Parece que mis dispositivos son susceptibles a una sola de las vulnerabilidades: Exploit 7 CVE-2014-6277, pero no estoy seguro. El resultado de mi ejecución de este comando es "Fallo de segmentación", luego en una nueva línea "vulnerable". ¿Alguien puede decirme si esto significa que soy vulnerable y cómo solucionarlo? También para estar seguro, ¿hay alguna manera de ejecutar un script que intente aprovechar esta vulnerabilidad?

    
pregunta Courtney 17.03.2015 - 13:35
fuente

1 respuesta

3

Aquí es una buena forma de comprobar Shellshock, y una de las maneras más fáciles de solucionar es:

sudo apt-get update && sudo apt-get install --only-upgrade bash

Uso: bash .sh

#!/bin/bash
EXITCODE=0

# CVE-2014-6271
CVE20146271=$(env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test" 2>&1 | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-6271 (original shellshock): "
if [ $CVE20146271 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+1))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-6277
# it is fully mitigated by the environment function prefix passing avoidance
CVE20146277=$((shellshocker="() { x() { _;}; x() { _;} <<a; }" bash -c date 2>/dev/null || echo vulnerable) | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-6277 (segfault): "
if [ $CVE20146277 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+2))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-6278
CVE20146278=$(shellshocker='() { echo vulnerable; }' bash -c shellshocker 2>/dev/null | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-6278 (Florian's patch): "
if [ $CVE20146278 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+4))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-7169
CVE20147169=$((cd /tmp; rm -f /tmp/echo; env X='() { (a)=>\' bash -c "echo echo nonvuln" 2>/dev/null; [[ "$(cat echo 2> /dev/null)" == "nonvuln" ]] && echo "vulnerable" 2> /dev/null) | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-7169 (taviso bug): "
if [ $CVE20147169 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+8))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-7186
CVE20147186=$((bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' 2>/dev/null || echo "vulnerable") | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-7186 (redir_stack bug): "
if [ $CVE20147186 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+16))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-7187
CVE20147187=$(((for x in {1..200}; do echo "for x$x in ; do :"; done; for x in {1..200}; do echo done; done) | bash || echo "vulnerable") | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-7187 (nested loops off by one): "
if [ $CVE20147187 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+32))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

# CVE-2014-////
CVE2014=$(env X=' () { }; echo vulnerable' bash -c 'date' | grep 'vulnerable' | wc -l)

echo -n "CVE-2014-//// (exploit 3 on http://shellshocker.net/): "
if [ $CVE2014 -gt 0 ]; then
    echo -e "3[91mVULNERABLE3[39m"
    EXITCODE=$((EXITCODE+64))
else
    echo -e "3[92mnot vulnerable3[39m"
fi

exit $EXITCODE
    
respondido por el Garistar 21.04.2015 - 12:30
fuente

Lea otras preguntas en las etiquetas