
Exploit per CVE-2023-39361 in Cacti, una soluzione di grafici di rete, che dimostra la vulnerabilità di SQL injection a scopo educativo e di test di sicurezza.
developQuando si utilizza il codice sorgente o si scarica il codice direttamente dal repository, è importante eseguire lo script di aggiornamento del database se si verificano errori relativi a tabelle o colonne mancanti nel database.
Le modifiche al database vengono salvate nel file cacti.sql che viene utilizzato per
le nuove installazioni e salvate nell'aggiornamento del database dell'installer per le installazioni
esistenti. Poiché il numero di versione non cambia fino al rilascio nel ramo
develop, il che comporterà la mancata esecuzione dell'aggiornamento del database, è
importante utilizzare lo script di aggiornamento del database per forzare la versione corrente
oppure aggiornare la versione nel database.
Quando Cacti fu sviluppato per la prima volta quasi 20 anni fa, MySQL non era maturo come lo è ora. Quando The Cacti Group si dedicò all'ingegneria di Cacti 1.x, fu presa una decisione per obbligare gli utenti a utilizzare il motore di archiviazione InnoDB per molte delle tabelle. Questo fu fatto perché il motore di archiviazione InnoDB offre una migliore esperienza utente quando il tuo sito web ha diversi accessi simultanei. Sebbene un po' più lento, offre anche una maggiore resilienza per gli sviluppatori.
Detto questo, ci sono diverse modifiche che DEVI apportare a MySQL/MariaDB prima dell'aggiornamento, ed è richiesto un riavvio del servizio. A seconda della tua versione di MariaDB o MySQL, le seguenti impostazioni saranno richieste oppure già abilitate come predefinite:
[mysqld]
# required for multiple language support
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# Memory tunables - Cacti provides recommendations at upgrade time
max_heap_table_size = XXX
max_allowed_packet = 500M
tmp_table_size = XXX
join_buffer_size = XXX
sort_buffer_size = XXX
# important for compatibility
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
# innodb settings - Cacti provides recommendations at upgrade time
innodb_buffer_pool_instances = XXX
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = XXX
innodb_sort_buffer_size = XXX
innodb_doublewrite = ON
# required
innodb_file_per_table = ON
innodb_file_format = Barracuda
innodb_large_prefix = 1
# not all version support
innodb_flush_log_at_timeout = 3
# for SSD's/NVMe
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 10000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
Le impostazioni richieste sono molto importanti. Altrimenti, incontrerai problemi durante l'aggiornamento. Per le impostazioni con XXX, Cacti fornirà una raccomandazione al momento dell'aggiornamento. Non è insolito dover riavviare MySQL/MariaDB durante l'aggiornamento per ottimizzare queste impostazioni. Ti preghiamo di prenderne nota prima di iniziare l'aggiornamento.
Prima dell'aggiornamento, dovresti apportare queste modifiche richieste, quindi riavviare MySQL/MariaDB. Dopo di che, puoi risparmiare tempo e potenziali errori eseguendo i seguenti script (supponendo che tu stia usando bash):
for table in `mysql -e "SELECT TABLE_NAME FROM information_schema.TABLES WHERE table_schema='cacti' AND engine!='MEMORY'" cacti | grep -v TABLE_NAME`;
do
echo "Converting $table";
mysql -e "ALTER TABLE $table ENGINE=InnoDB ROW_FORMAT=Dynamic CHARSET=utf8mb4" cacti;
done
Questo convertirà tutte le tabelle che sono InnoDB o MyISAM al formato file Barracuda, formato riga dinamico e utf8mb4. Nota che, se hai utilizzato MySQL o MariaDB senza innodb_file_per_table impostato su on, potresti fare meglio a eseguire un backup del database, reimpostare InnoDB rimuovendo i file ib* nella directory /var/lib/mysql, e successivamente ripristinare il database e le tabelle e autorizzazioni di MySQL/MariaDB. Prima di compiere un passo del genere, dovresti sempre esercitarti su un server di test finché non ti senti a tuo agio con la modifica.
Buona fortuna e goditi Cacti!
sudo -u cacti php -q cli/upgrade_database.php --forcever=`cat include/cacti_version`
update version set cacti = '1.1.38';
Nota: Modifica la versione sopra con quella corretta o rischi che l'installer esegua l'aggiornamento da una versione precedente.
Cacti è una soluzione completa di grafici di rete progettata per sfruttare la potenza delle funzionalità di archiviazione dati e grafici di RRDtool, offrendo le seguenti caratteristiche:
Collector di dati remoti e locali
Scoperta dei dispositivi
Automazione della creazione di dispositivi e grafici
Templating di grafici e dispositivi
Metodi di raccolta dati personalizzati
Controlli di accesso per utenti, gruppi e domini
Tutto questo è racchiuso in un'interfaccia intuitiva e facile da usare che ha senso sia per installazioni di dimensioni LAN che per reti complesse con migliaia di dispositivi.
Sviluppato nei primi anni 2000 da Ian Berry come progetto scolastico, è stato utilizzato da migliaia di aziende e appassionati per monitorare e gestire le loro reti aziendali e data center.
Cacti dovrebbe essere in grado di funzionare su qualsiasi sistema operativo Linux, UNIX o Windows con i seguenti requisiti:
PHP 5.4+
MySQL 5.1+
RRDtool 1.3+, consigliata 1.5+
NET-SNMP 5.5+
Server Web con supporto PHP
PHP deve anche essere compilato come binario cgi o cli autonomo. Questo è richiesto per la raccolta dati tramite cron.
Contrassegniamo il modulo php-snmp come opzionale. Finché non utilizzi dispositivi ipv6, o non usi ID motore o contesti snmpv3, l'uso di php-snmp dovrebbe essere sicuro. Altrimenti, dovresti considerare di disinstallare il modulo php-snmp poiché creerà problemi. Siamo a conoscenza del problema con php-snmp e stiamo cercando di coinvolgerci nel progetto php per risolvere questi problemi.
RRDtool è disponibile in più versioni e la maggior parte di esse è supportata da Cacti. Ricorda di confermare le impostazioni di Cacti per la versione di RRDtool se hai problemi a rendere i grafici.
La documentazione è disponibile con le release di Cacti ed è anche disponibile per la consultazione nel Repository della Documentazione.
Visita il sito web principale di Cacti per download, log delle modifiche, note di rilascio e altro!
Data la vasta portata di Cacti, i forum tendono a generare una quantità considerevole di traffico. Fare la propria parte nel rispondere a domande di base aiuta molto poiché non possiamo essere ovunque contemporaneamente. Contribuisci alla community di Cacti partecipando ai Forum della Community di Cacti.