CVE-2016-0800 簡易チェックスクリプト

#!/bin/sh
COLOR_RED="\e[31;1m"
COLOR_GREEN="\e[32;1m"
COLOR_OFF="\e[m"

TEXT_OK="[ ${COLOR_GREEN}成功${COLOR_OFF} ]"
TEXT_NG="[ ${COLOR_RED}失敗${COLOR_OFF} ]"
TEXT_ERROR="[ ${COLOR_RED}ERROR${COLOR_OFF} ]"

PORT=443

buf=""
while read f; do
  HOST=$f
  if [ `nmap -p ${PORT} ${HOST} 2>&1 | grep ${PORT} | grep "closed\|filtered" | wc -l` -ne 0 ]; then
    echo -n -e "${TEXT_OK}: " 
    echo "${HOST}:${PORT} is closed"
  elif [ `nmap -p ${PORT} ${HOST} 2>&1 | grep "0 hosts up" | wc -l` -ne 0 ]; then
    echo -n -e "${TEXT_ERROR}: " 
    echo "${HOST} host is unreachable"
  else
    if [ `echo "" | openssl s_client -connect ${HOST}:${PORT} -ssl2 2>&1 | grep "ssl handshake failure\|Secure Renegotiation IS NOT supported" | wc -l` -ne 0 ]; then
      echo -n -e "${TEXT_OK}: " 
      echo "${HOST}:${PORT} is disables SSLv2"
    else
      echo -n -e "${TEXT_NG}: "
      echo "${HOST}:${PORT} maybe enables SSLv2"
    fi
  fi
done

■使い方

上記のスクリプトをssl2.shというファイル名で保存して、スクリプトのあるフォルダで下記を実行

chmod +x ./ssl2.sh
echo "yourhost.name" | ./ssl2.sh

ホストがたくさんある場合は改行区切りのテキストをcatして渡してもOKです

※稀にssl handshake failureを返さないサーバーもあるので、失敗が出たホスト名に関しては手動で確認する必要があります。