Scoperta vulnerabilità nella versione 1.4.1.4 di Zenphoto

Purtroppo ogni tanto arriva anche la mail che mai vorresti ricevere: il cliente che ti dice “Quando tento di entrare nel mio sito mi appare questa scritta Internal Server Error“.
Il sito in questione è realizzato con una installazione di Zenphoto, il software opensource che gestisce gallerie fotografiche e gira in ambiente LAMP.
Quindi la prima cosa che sono andato a controllare è .htaccess nella root del sito. E l’ho trovato compromesso: qualcuno aveva aggiunto delle regole che tentavano di reindirizzare tutto il traffico al sito network-teaser.ru/getup/index.php.
Vista l’intrusione cancello tutti i file tranne quelli del theme, le foto e naturalmente le tabelle del database. Eseguo poi una nuova installazione dopo aver scaricato l’ultima versione del software. Sembra andare tutto per il meglio: la routine di setup riconosce le tabelle dell’installazione precedente e fa un upgrade. Mentre lo script gira cerco notizie sulla natura dell’intrusione: trovo sul sito ufficiale il comunicato ALERT – Security hole in Zenphoto 1.4.1.4. Una bella vulnerabilità e ne sono affette tutte le release, dalla 1.2.4 alla 1.4.1.4. Poco male, mi sono detto, me la cavo con poca fatica.
Navigando poi la nuova installazione mi accorsi che però erano sparite tutte le descrizioni e i titoli delle foto che aveva inserito il cliente.
Breve crisi di panico.
Ritorna la calma pochi secondi dopo quando realizzo che posso sfruttare il backup automatico di MySQL e fare un rollback. Nel frattempo apro il tool di gestione del database e comincio a curiosare tra le tabelle. Mi accorgo di una cosa strana: una tabella zp_cf_albums e una tabella zp_albums, stesso numero di record presenti… più o meno stesso numero di fields. Poi trovo una tabella zp_cf_images e un’altra zp_images. Dentro alle tabelle che contengono _cf_ nel nome ci sono i contenuti che sul sito del cliente dopo l’upgrade erano sparite.
A questo punto lampo di genio: accantono l’ipotesi rollback, svuoto le tabelle zp_albums e zp_images, poi le ripopolo con il contenuto di zp_cf_albums e zp_cf_images.
Eureka: tutto è ritornato come era prima dell’intrusione.

Rispondi