PrestaShop 9 non invia le email via SMTP: il bug della porta 587
Gli ordini arrivano, ma non parte nemmeno un'email. È un bug di PrestaShop 9 con la porta 587: la 9.2 lo corregge, e…
Un cliente ti scrive: entrando nel tuo negozio gli è comparso un «verifica di essere umano» che gli chiedeva di premere due tasti, incollare qualcosa e dare Invio. Tu entri e non vedi niente di strano. Se ti è successo, il tuo sito PrestaShop è stato hackerato con ClickFix: qualcuno ci ha infilato un codice che mostra quel falso captcha ai tuoi visitatori perché installino da soli un programma malevolo, di solito uno che ruba le password.
Non se ne va da solo: qualcuno è entrato nel tuo negozio e l'ha lasciato lì. Si ripulisce, ma la cosa importante è chiudere la porta da cui è entrato. E non sei l'unico: il 3 settembre Netskope ha contato più di 5.400 siti infetti da questa campagna, quasi tutti di piccole aziende. Quelli esaminati uno per uno erano soprattutto WordPress e a volte PrestaShop.
La pagina si sfoca dietro un falso captcha che chiede di premere il tasto Windows e la R, incollare e premere Invio. Quello che si incolla è un comando che la pagina ha già copiato senza avvisare, ed eseguendolo si installa il programma dell'attaccante. Un captcha vero non ti chiede mai di aprire niente sul tuo computer.
Il fatto che tu non lo veda non vuol dire che non ci sia. Il codice nel tuo negozio va a prendere la trappola altrove ogni volta che si apre una pagina, e l'attaccante decide cosa mostrare e a chi senza più toccare il negozio. Punta ai computer con Windows, e la variante che The Hacker News ha descritto il 6 ottobre nasconde il programma nel browser del visitatore prima ancora di chiedergli qualcosa.
Lo screenshot del cliente basta per metterti in moto.
Nel database, in un campo che il negozio stampa su tutte le pagine, oppure nei file: Netskope l'ha trovato aggiunto in fondo a file JavaScript legittimi e in cartelle che imitano un'estensione vera. Il commerciante francese che l'ha raccontato il 5 ottobre sul forum di PrestaShop, con un negozio 1.7.8, non ha trovato niente nel database, e le backdoor erano in file sparsi in varie cartelle.
index.php. Uno in più, o uno il cui nome inizia con un punto e che il tuo programma FTP nasconde, è una backdoor.Il controllo in Parametri Avanzati → Informazioni → Lista dei files cambiati guarda solo se sono cambiati i file del core: non il tema, non i moduli, non le immagini e non i file aggiunti. Una lista vuota non vuol dire un negozio pulito.
Netskope non sa ancora come siano stati compromessi quei siti. Su PrestaShop le porte abituali sono un modulo con una falla nota mai aggiornato, una password del back office rubata o troppo facile, e i moduli «nulled», quelli a pagamento scaricati gratis da siti pirata, che spesso arrivano con la backdoor già installata.
ps_facetedsearch, il modulo dei filtri del catalogo incluso di serie in PrestaShop: chiunque, senza account, poteva eseguire codice sul tuo server. È corretta nella 4.0.4; se avevi una versione precedente, considera che potrebbe essere stata l'ingresso. E cancella i moduli che non usi./admin. Il secondo passaggio con un codice sul telefono non è incluso di serie, ma si aggiunge con un modulo.Query di sola lettura; sostituisci ps_ con il prefisso del negozio. Warehouse salva i suoi campi di codice con l'escape, quindi bisogna cercare anche <script.
SELECT name, LEFT(value, 120)
FROM ps_configuration
WHERE value LIKE '%<script%'
OR value LIKE '%<script%'
OR value LIKE '%eth_call%'
OR name LIKE '%codes_js';
SELECT id_cms, id_lang
FROM ps_cms_lang
WHERE content LIKE '%<script%';
SELECT id_employee, email,
id_profile, active,
last_connection_date
FROM ps_employee
ORDER BY id_employee DESC;
Nei file, dalla radice del negozio:
find img upload download \
-name '*.php' ! -name index.php
find . -name '.*.php'
find . -type f -mtime -30 \
\( -name '*.php' -o -name '*.js' \) \
-not -path './var/cache/*'
grep -rl -e eth_call -e prebsc \
-e bsc-testnet -e claritydelivr \
--include=*.js --include=*.php \
--include=*.tpl .
Gli indicatori della campagna sono nella lista di Netskope. Meglio reinstallare core e moduli da pacchetti puliti della stessa versione che cancellare file per file; poi svuotare var/cache e themes/*/assets/cache. PrestaShop 9 include un .htaccess che impedisce di eseguire PHP in img, upload, download, js, vendor e modules: verificare che ci siano ancora e, con Nginx, che non li legge, portare quelle regole nella configurazione del server.
Se hai trovato qualcosa e non hai nessuno che lo pulisca, se è tornato dopo la pulizia o se non sai da dove cominciare. Fa parte del nostro servizio di assistenza e manutenzione: puliamo il negozio, cerchiamo da dove sono entrati e chiudiamo la porta. Mandaci lo screenshot del tuo cliente e la tua versione di PrestaShop, e lo guardiamo in giornata o il giorno dopo.
Gli ordini arrivano, ma non parte nemmeno un'email. È un bug di PrestaShop 9 con la porta 587: la 9.2 lo corregge, e…
Dall'estero va benissimo, dalla Spagna va in timeout proprio nei giorni di partita. Non è il tuo server: è un IP…
Un modulo, un’app, un server che dà problemi o solo un parere. La prima consulenza non costa nulla, e da lì esce un preventivo chiuso con prezzo e data.