#!/bin/bash # ============================================================================ # 쓰리웨이 PHP 보안 점검(PHP2Shell) - 버전 확인 스크립트 (읽기 전용) # # - 리눅스·PHP·DB "버전 번호"만 확인합니다. # - 비밀번호, 설정 파일 내용, 사이트 데이터는 읽지 않습니다. # - 어떤 설정도 바꾸지 않습니다. # 사용법: curl -s https://sec.web2002.co.kr/php-check.sh | bash # (root 로 실행하면 Plesk 사이트별 PHP 사용 현황까지 확인됩니다) # 출력된 ===THREEWAY-PHPCHECK=== 부터 ===END=== 까지를 복사해 # 점검 화면에 붙여 넣으세요. # ============================================================================ export LANG=C LC_ALL=C T() { if command -v timeout >/dev/null 2>&1; then timeout 10 "$@"; else "$@"; fi; } echo "===THREEWAY-PHPCHECK v1===" if [ -r /etc/os-release ]; then . /etc/os-release echo "os_id=$ID" echo "os_ver=$VERSION_ID" echo "os_name=$PRETTY_NAME" elif [ -r /etc/redhat-release ]; then echo "os_name=$(head -1 /etc/redhat-release)" echo "os_id=centos" echo "os_ver=$(grep -oE '[0-9]+' /etc/redhat-release | head -1)" fi echo "kernel=$(uname -r 2>/dev/null)" # 제어판 [ -r /usr/local/psa/version ] && echo "panel=plesk $(awk '{print $1}' /usr/local/psa/version)" [ -r /usr/local/cpanel/version ] && echo "panel=cpanel $(cat /usr/local/cpanel/version)" # PHP: 서버에 설치된 모든 PHP 실행 파일 seen="" for b in $(command -v php 2>/dev/null) /usr/bin/php /usr/bin/php[0-9]* /usr/local/bin/php \ /opt/plesk/php/*/bin/php /opt/remi/php*/root/usr/bin/php /opt/cpanel/ea-php*/root/usr/bin/php \ /usr/local/php*/bin/php; do [ -x "$b" ] || continue r=$(readlink -f "$b" 2>/dev/null || echo "$b") case " $seen " in *" $r "*) continue ;; esac seen="$seen $r" v=$(T "$b" -n -r 'echo PHP_VERSION;' 2>/dev/null | head -1) [ -z "$v" ] && v=$(T "$b" -v 2>/dev/null | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1) [ -n "$v" ] && echo "php=$b $v" done v=$(T php -n -r 'echo PHP_VERSION;' 2>/dev/null | head -1) [ -n "$v" ] && echo "php_cli=$v" # Plesk: 사이트들이 실제로 쓰는 PHP (버전별 사이트 수) if command -v plesk >/dev/null 2>&1 && [ "$(id -u)" = "0" ]; then T plesk db -Ne "SELECT php_handler_id, COUNT(*) FROM hosting WHERE php='true' GROUP BY php_handler_id" 2>/dev/null \ | awk 'NF==2{print "php_sites=" $1 " " $2}' fi # DB for c in mariadbd mysqld /usr/sbin/mariadbd /usr/sbin/mysqld /usr/libexec/mysqld mariadb mysql; do if command -v "$c" >/dev/null 2>&1 || [ -x "$c" ]; then d=$(T "$c" --version 2>/dev/null | head -1) if [ -n "$d" ]; then echo "db=$d"; break; fi fi done echo "===END==="