Protezione del sito da SQL injection e local file inclusion

[Read this in English]

Questa estensione è pubblicata su http://extensions.joomla.org , se vi piace, votatela o scrivete una recensione.

sql injecton, local file inclusion protection

Protezione contro SQL Injection e Local file Inclusion

Questo plugin aggiunge un semplice ma, nella maggior parte dei casi, fondamentale protezione  contro gli attacchi di tipo SQL injection e LFI (inclusione di file locale),  analizzando i dati inviati a Joomla ed intercettanto gli exploit più comuni, salvando così il sito dagli hackers.

  • Filtra le richieste in POST, GET, REQUEST. e blocca SQL injection / tentativi di LFI
  • Notifica via e-mail quando viene generato un allarme
  • Protegge anche da vulnerabilità sconosciute di estensioni di terze parti.
  • White list per i componenti sicuri (a vostro rischio;))


Abilitate la notifica via mail e preparatevi ad avere paura!

In ogni caso ricordate che la sicurezza è una 'forma mentis', non un plugin!

Standard Set up (Impostazioni di base)

  • Works on Front End only: (Attivo solo sul Front End)
    Ignora le richieste (auto disabilitazione) inviate a  /administrator. Salvo comprovate esigenze specifiche, è buona cosa non attivare il plugin sul back end. Un'alternativa di protezione del pannello amministrativo è indicata qui: Proteggere l'accesso alla directory /administrator.
  • NameSpaces inspected (Spazi dei nomi ispezionati)
    Selezionare quali superglobal arrays ispezionare; le opzioni sono:
    • Get
    • Get, Post
    • Request
    • Get, Post, Request
  • Ignored Extension (estensioni ignorate)
    Lista dei componenti, separati da virgole, da ignorare (es: com_content, com_dumper , com_weblinks)

Importante, prestate attenzione!
PHP analizza le richieste e popola i superglobal arrays copiando i singoli valori in ciascun array. Così $_GET['varName'] e $_REQUEST['varName'] non sono riferimenti allo stesso oggetto!
Cambiare $_GET per sanificare la query string non è sufficiente se il programma legge $_REQUEST.

Notification (Notifiche)

  • Send Email Alert on injection/inclusion (Invia una mail su iniezione/inclusione)
    se 'Yes' invia una mail di avviso in caso di attacco/malformed url
  • Mail to notify attack (mail cui notificare l'attacco)
    indirizzo mail cui inviare l'avviso, se vuoto è impostato a 'mailfrom'

Advanced Set up (Impostazioni avanzate)

  • Raise Error on Fault (Genera un errore sull'attacco)
    Se 'Yes' ferma Joomla! e restituisce un errore (utile per il debug), se 'No' ripulisce la richiesta e la passa a Joomla!
  • Http Error Code
    HTTP error code da restituire (40x, 50x)
  • Http Error Message (Messaggio di errore Http)
    messaggio per la pagina di errore

Local File Inclusion parameters (Parametri per l'inclusione di file locali)

  • LFI check only on canonical (controllo LFI solo sul canonico)
    se 'Yes' verifica gli attacchi LFI solo per i parametri model, view, controller, template
  • Max number of consecutive '../' (numero massimo di '../' consecutivi)
    quanti '../' consecutivi possono trovarsi nell'url

 

IP Blocking (Blocco degli ip)

(disponibile dalla versione 1.1)

  • Enable temporary IP block
    Abilita/disabilita il blocco degli accessi basato sull'ip dell'attaccante
  • Seconds to hold ip banned
    Numero di secondi durante il quale bloccare ogni accesso all'IP
  • Max hacks attempt
    Numero massimo di tentativi di attacco dopo cui attivare il blocco degli IP


Attenzione: assicuratevi che la modalità  'Debug' di Joomla! sia disattivata prima di attivare il blocco degli IP.

Procedimento:

  • assicuratevi che la modalità  'Debug' di Joomla! sia disattivata
  • attivare il blocco degli IP
  • riattivate il 'Debug' (se serve, ovviamente)


La modalità 'Debug' di Joomla! intercetta gli errori del database ed impedisce al plugin di creare la tabella per la memorizzazione degli IP.
 

Un'utile aggiunta

Non tutti gli attacchi passano attraverso il framework di joomla: l'editor jce docet!
In questo caso potete aggiungere questo codice all'interno del file .htaccess, è sufficiente incollarlo subito dopo "RewriteEngine On" :

RewriteCond %{REQUEST_URI}  ^/images/  [NC,OR]
RewriteCond %{REQUEST_URI}  ^/media/  [NC,OR]
RewriteCond %{REQUEST_URI}  ^/logs/  [NC,OR]
RewriteCond %{REQUEST_URI}  ^/tmp/
RewriteRule .*\.(phps?|sh|pl|cgi|py)$ - [F]

Questo codice bloccherà ogni tentativo di mandare in esecuzione scripts al di fuori del controllo di joomla!. A seconda dei componenti installati, potreste avere bisogno di inserire ulteriori path.

 

Ripristino di un'errata installazione o di problemi di accesso

Le modalità di risoluzione delle problematiche di installazione sono trattate  nell'articolo in lingua inglese  Marco's SQL Iniection - LFI protection.

Questo plugin è in uso in parecchi siti (migliaia), ma non è stato ancora testato con tutte le più comuni estensioni. Controllate che le più importanti funzioni del vostro sito stiano operando correttamente.

Verificato (almeno) con:

.ckForms
.virtuemart
.joomfish
.PhocaDownload
.PhocaGallery
.RokDownloads
.AcyMailing
.ccnews
.AlphaRegistration
.Chrono Contact
.SOBI2

e altre.

Tenete presente questo, lo ripeto: questo plugin intercetta tutti i più comuni exploits, NON TUTTI!! Deve essere pertanto inteso come un aiuto, questa non è  "LA SOLUZIONE".

 

Storia e download Marco's SQL Injection - LFI Interceptor Plugin for Joomla!

L'elenco delle versioni e i download sono reperibili in fondo all'articolo in lingua inglese  Marco's SQL Iniection - LFI protection.

 

Commenti   

+1 #8 Angelo 2014-07-10 01:24
Salve
Vorrei installare il plug in sul mio sito joomla 2.5.
Vanno bene le impostazioni standard o devo cambiare qualcosa?
Non basta disinstallare il plug in, devo anche necessariamente modificare il database?
Posso provarlo in locale?

GRazie dell' attenzione e compliementi per tutti i consigli proposti sul sito

========Risposta
1. se non si sa esattamente ciò che si sta facendo è meglio lasciare le impostazioni standard.
2. non c'è nessuna ragione per modificare il database
3. puoi provarlo in locale, ma non pensare che io ti pubblichi degli hack per fare i test.

nota: chi vuole una risposta via mail deve inserire la mail...

ciao,
marco
Citazione
0 #7 Alex 2014-05-13 22:33
Ho ricevuto un alert per dei local file inclusion.

Non ho ben chiaro se questo plugin blocca automaticamente i tentativi oppure li segnala solo, notificandoli in email.

Poi non ho capito se il blocco temporaneo dell'IP è una opzione alternativa alternativa al blocco permanente.

Non ho impostato il blocco temporaneo perchè immagino che questo plugin blocchi l'IP in modo permanente. E' corretto?
===Risposta
ciao Alex,

1.
blocca sempre i tentativi, e, se vuoi, li segnala per mail
2.
non esiste blocco permanente, non è cosa saggia, ma solo temporaneo
3.
vedi sopra.

ciao,
marco
Citazione
0 #6 Guest 2013-02-05 16:39
ciao Marco esiste una versione per la 2.5.8?

==== Risposta
ciao paolo,
sì la trovi sulla pagina inglese, mi sono dimenticato che vi era anche una pagina in italiano :(

www.mmleoni.net/.../

ciao,
marco
Citazione
0 #5 Fabio 2011-12-08 01:44
Ciao, Marco...
Grazie per il tuo plugin, veramente interessante e utile...
Dopo averlo installato (la v. 1.1), ultimamente (si parla di numerose volte al giorno, a distanza di pochi minuti) sto ricevendo mail di tentati attacchi del tipo "** -- [REQUEST:catid] => -1 -- 0x3363327336696 2,2,3 from --mml25_users-- " ecc, ecc... tutti da IP simili... Ho joomla 1.5.25 aggiornatissimo , non credo di avere estensioni vulnerabili ed ho preso tutte le misure precauzionali possibili... Che devo fare? Posso stare tranquillo e aspetto che l'hacker si stanchi? Oppure devo iniziare a preoccuparmi?
Grazie per la tua risposta

===== Risposta
ciao fabio,
rilassati ma non sperare che l'hacker si stanchi: non è una singola persona, ma una folla armata di scripts automatici.

l'attacco indicato, per esempio, sfruttava una vulnerabilità di Joomla pre 1.5.17

ps:
rilassati non vuol dire che il sistema è invulnerabile, ma solo che hai fatto tutto ciò che potevi fare.

ciao,
marco
Citazione
0 #4 Maurizio 2011-08-01 08:59
Ciao Marco,
complimenti per il tuo plugin. Effettivamente da quando l'ho installato ricevo continuamente attacchi che penso siano automatizzati. A quanto ho scoperto è una cosa molto comune!!!

Ciao
Citazione
0 #3 Guest 2011-02-19 11:33
Ciao Marco,
torno ad approfittare della tua gentilezza ;-). Oggi ho ricevuto diversi attacchi del tipo LFI alla stessa ora e sullo stesso componente ma da IP diversi: è possibile che l'aggressore abbia utilizzato qualche tecnica di IP spoofing? E quindi l'ip indicato in *REMOTE_ADDR può essere falsificato?
Grazie mille!
===Risposta
più utenti da più ip: la risposta più semplice è quella giusta.
ciao,
marco
Citazione
+1 #2 Guest 2011-01-24 09:34
Ciao Marco,
ho installato il tuo plugin sul mio sito e ho cominciato a ricevere attacchi di questo tipo sempre dallo stesso IP. Posso stare tranquillo? E' possibile inserire l'IP incriminato in una sorta di black list per impedirgli l'accesso al sito? Grazie :lol:
[omissis]
*QUERY_STRING :
option=com_properties&controller=proc/self/environ%00
[omissis]
====Risposta
ciao Alfio,
sono attacchi automatizzati, puoi stare abbastanza tranquillo.
comunque se hai com_properties aggiornalo, anche se sui server correttamente configurati, che pare stiano diventando una rarità, gli attacchi di tipo LFI non funzionano.
ps: le black list funzionano solo nei films...
Citazione
0 #1 Guest 2010-08-19 07:25
Ciao Marco,
Da quando ho installato il plugin ricevo una diecina di avvisi al giorno tipo questo. Immagino siano tentativi si SQL injection.

** Local File Inclusion [GET:view] => proc/self/envir on
** Local File Inclusion [REQUEST:view] => proc/self/envir on
[ ...omissis... ]
In pratica cosa significa il report ? Penso un tentativo di usare come cavallo di troia il componente eventlist. Che è installato.
======== risposta:
Non si tratta di SQL injection ma di Local File Inclusion.
Questo tipo di attacco sfrutta del codice php scritto malamente assieme ad una altrettanto frettolosa configurazione del server per richiamare l'interprete dei comandi (/proc/self/envir on) e mandare in esecuzione il codice passato. se il server è configurato correttamente l'attacco non ha effetto.
Verifica l'entry point di com_event list, è facile che ci troverai un errore di programmazione nel recupero della view (o l'errore era in una versione precedente).
Citazione

Aggiungi commento

Please note: URL in text are not linked and user's site address is only for internal use and is not published.

Comments are human checked. All spam will be removed, so don't waste your time and, especially, mine!

Codice di sicurezza
Aggiorna

L'estate si avvicina hai già trovato l'albergo per le vacanze? cerca un albergo al mare o un hotel in montagna ove trascorrere le tue vacanze.