Come fare un REPORT Vulnerabilità WordPress con WP-Toolkit su Plesk

Installare JQ : apt-get install jq -y
Installare Swaks : apt-get update && apt-get install swaks -y

Script da utilzzare:

[[php light="true"]

#!/bin/bash


# --- CONFIGURAZIONE SMTP2GO ---
SMTP_SERVER="mail-eu.smtp2go.com"
SMTP_PORT="587"
SMTP_USER="*****"
SMTP_PASS="****"
EMAIL_MITTENTE="alert@****"  # Sostituisci con una mail autorizzata su SMTP2GO
EMAIL_DESTINATARIO="*****"



# --- CONFIGURAZIONE REPORT ---
OGGETTO="Report Completo Sicurezza WP - $(date +%d-%m-%Y)"
FILE_REPORT="/tmp/report_wp_full.txt"

echo "Scansione globale in corso (Vulnerabilità Critical, High, Medium)..."
echo "REPORT SICUREZZA WORDPRESS - $(date)" > $FILE_REPORT
echo "==========================================================" >> $FILE_REPORT

# Recupera ID istanze
INSTANCES=$(plesk ext wp-toolkit --list -format json | jq -r '.[].id')

for ID in $INSTANCES; do
    INFO=$(plesk ext wp-toolkit --info -instance-id $ID -format json)
    
    # Estrazione Dominio
    DOMINIO=$(echo $INFO | jq -r '.siteUrl' | sed -e 's|^[^/]*//||' -e 's|/.*$||')
    [ -z "$DOMINIO" ] || [ "$DOMINIO" == "null" ] && DOMINIO=$(echo $INFO | jq -r '.name')

    echo "SITO: $DOMINIO" >> $FILE_REPORT

    # --- SEZIONE VULNERABILITÀ (Tutte le gravità) ---
    # Estraiamo titolo e severità per ogni vulnerabilità presente
    VULNS=$(echo $INFO | jq -r 'if .security.vulnerabilities then .security.vulnerabilities[] | "[ \(.severity | ascii_upcase) ] \(.title)" else empty end')
    
    if [ ! -z "$VULNS" ]; then
        echo "!!! PROBLEMI DI SICUREZZA RILEVATI !!!" >> $FILE_REPORT
        echo "$VULNS" >> $FILE_REPORT
    else
        echo "Sicurezza: Nessuna vulnerabilità rilevata (Low/Med/High/Crit)." >> $FILE_REPORT
    fi

    # --- SEZIONE AGGIORNAMENTI CORE ---
    UPD_WP=$(echo $INFO | jq -r '.update_version')
    if [ ! -z "$UPD_WP" ] && [ "$UPD_WP" != "null" ]; then
        echo "-> AGGIORNAMENTO WP DISPONIBILE: \(.version) a $UPD_WP" >> $FILE_REPORT
    fi

    # --- SEZIONE PLUGIN ---
    PLUGINS_UPD=$(echo $INFO | jq -r '.plugins | to_entries[] | select(.value.update_version != "") | "- Plugin: \(.value.title) (\(.value.version) -> \(.value.update_version))"')
    if [ ! -z "$PLUGINS_UPD" ]; then
        echo "Aggiornamenti Plugin:" >> $FILE_REPORT
        echo "$PLUGINS_UPD" >> $FILE_REPORT
    fi

    # --- SEZIONE TEMI ---
    THEMES_UPD=$(echo $INFO | jq -r '.themes | to_entries[] | select(.value.update_version != "") | "- Tema: \(.value.title) (\(.value.version) -> \(.value.update_version))"')
    if [ ! -z "$THEMES_UPD" ]; then
        echo "Aggiornamenti Temi:" >> $FILE_REPORT
        echo "$THEMES_UPD" >> $FILE_REPORT
    fi

    echo "----------------------------------------------------------" >> $FILE_REPORT
done

# Invio con Swaks
swaks --server "$SMTP_SERVER" \
      --port "$SMTP_PORT" \
      --auth-user "$SMTP_USER" \
      --auth-password "$SMTP_PASS" \
      --to "$EMAIL_DESTINATARIO" \
      --from "$EMAIL_MITTENTE" \
      --header "Subject: $OGGETTO" \
      --body "$FILE_REPORT" \
      --tls

echo "Report completo inviato."

[/php]]