File PHP sfogliabili: si tratta di una vulnerabilità?

41

Ho un amico che ha un sito Web sviluppato in PHP su cui possiamo sfogliare tutti i suoi file uno dopo l'altro (ovviamente, non possiamo leggere il contenuto dei file PHP).

Pensi che questo sia un buco di sicurezza? Se sì, in che senso?

    
posta Anders 24.04.2014 - 11:20
fonte

6 risposte

59

Quello che stai descrivendo è un normale elenco di directory

Dipersé,l'elencodelledirectoryènotunproblemadisicurezza.Selasicurezzadeltuosistemavienecompromessadopoaverscopertolastrutturadeituoifileedirectory,alloratiaffidia sicurezza attraverso l'oscurità , che è male. Esempi di questa cattiva pratica includono:

  • Utilizzo dei nomi di directory segrete per accedere ai file riservati.
  • Limitazione delle funzioni con privilegi di esecuzione per accedere solo ai relativi URL anziché utilizzare le autorizzazioni appropriate.
  • Lasciando porte / backdoor speciali per gli sviluppatori.

Tuttavia , come parte di una buona politica di sicurezza, dopo l'implementazione di adeguate misure di sicurezza, è utile oscurare le parti funzionanti del sistema. Minore è la tua dimostrazione del tuo sistema, minori sono le informazioni che un intruso può avere su di te, il che significa che stai rendendo più difficile il loro lavoro.

"Allora, cosa dovrei fare?" tu chiedi. Semplice: disabilita l'elenco delle directory nelle configurazioni del tuo server web. In Apache, vai al tuo httpd.conf e trova la riga dove dice

Options Includes Indexes

Rimuovi Indexes dalla linea, quindi riavvia il tuo apache.

    
risposta data 24.04.2014 - 11:41
fonte
15

Per aggiungere alle risposte di @adnan e @ william-calvin:

"Potrebbe" essere un problema;)

  1. Rileva i nomi dei file accessibili solo, ad esempio, agli utenti autenticati (si pensi a "change_settings.php" per gli utenti che hanno effettuato l'accesso). Ora questo di per sé non è un problema. Se il suo sito web è ben scritto, eseguirà i necessari controlli di autorizzazione prima di caricare ciascun file. Da un altro punto di vista, un buon crawler / spider "mapperà" tutti i file che sono comunque accessibili.

  2. Se è disordinato con i file di backup (pensa: secret.bak o blah.php.old), allora altri saranno in grado di leggere questi file. Questo è anche il caso di file phpinfo () e db_dump.sql veloci.

  3. Potrebbe includere file e avere questi con un'estensione non php, come db.inc, a seconda della configurazione di apache, un utente malintenzionato potrebbe leggerli.

Quindi, come spiegato dagli altri - è una cattiva pratica. Fornisce più informazioni di quanto dovrebbe.

    
risposta data 24.04.2014 - 12:46
fonte
5

Sì. Questo è sicuramente un problema.

Se conosco la tua struttura, sarò in grado di comprendere meglio il tuo sistema, il che mi rende più facile attaccare il tuo sistema.

Si consiglia di disattivare l'elenco delle directory (consulta questo tutorial se sono su CPanel)

Meno sanno gli hacker, più è difficile da pensare ..

    
risposta data 24.04.2014 - 11:32
fonte
2

Sì, per quanto riguarda le risposte di cui sopra, non voglio condividere le stesse informazioni, ma un vero evento accaduto alla mia organizzazione.

Avevamo un server web (front-end di cui i clienti possono vedere le informazioni del proprio account internet, la capacità di ricaricare, ecc.)

Lo sviluppatore ha caricato un BigDump per il backup dei dati del server A triplo, mentre un hacker ha esaminato la directory in ascolto e ha trovato il dump file che contiene tutti i gratta e vinci e, si spera, mi ha segnalato e abbiamo risolto questo problema .

Come accennato, facendo affidamento sulla sicurezza attraverso l'oscurità, è meglio disabilitare l'ascolto delle directory, ho fatto una politica per la mia organizzazione che questa funzione dovrebbe essere disabilitata in tutti i server web.

    
risposta data 24.04.2014 - 18:52
fonte
2

Per aggiungere alla risposta di Adnan, alcuni framework PHP, come PyroCMS, risolvono il problema nella tua domanda usando una combinazione di file .htaccess e con un file indice, chiamato qualcosa come index.php , in ogni directory.

Un file .htaccess è come un'estensione della configurazione del tuo server in file come php.config , ma può essere incluso direttamente nelle cartelle del sito, anche se in alcuni casi potrebbero non essere consentiti o potrebbero non funzionare a causa del server File. Inoltre, puoi utilizzarli anche se non hai accesso ai file del server, ad esempio se hai un sito nel cloud da qualche parte. Possono essere utilizzati per limitare l'accesso ai file nella directory in cui si trovano o nelle cartelle secondarie. PyroCMS e altri framework hanno spesso un file htaccess in ogni singola cartella, molti dei quali limitano o negano l'accesso alla cartella e a tutte le sue sottocartelle.

index.php è una delle pagine predefinite da mostrare quando l'URL punta alla cartella, sebbene sia possibile configurare queste pagine predefinite nei file del server. Ad esempio, se l'utente naviga su example.com/folder , e non ci sono nessuno di questi file predefiniti in questa directory, la pagina mostrerà ciò che probabilmente vedrà il tuo amico, che è probabilmente la vista che Adnan mostra nella sua risposta. Tuttavia, se c'è un file index.php in quella cartella, la pagina mostrerà invece ciò che è in <site folder>/folder/index.php . I framework PHP hanno spesso un index.php in ogni o quasi ogni cartella e sottocartella per te. Molti di questi file hanno qualcosa del tipo:

<div>Forbidden!!!</div>
    <div>Please don't go here! It's very sensitive!</div>

Poiché questi file .htaccess e index.php sono già inseriti in tutte queste cartelle, non devi farlo tu stesso, anche se puoi eliminarli se vuoi o devi adattare il tuo sito. Anche se in definitiva non utilizzi questi framework, scaricare un paio e vedere cosa fanno può essere utile per progettare il tuo sito. Fai attenzione se lo fai, anche se molti di questi sono centinaia di megabyte.

A proposito, sì, è una cattiva pratica avere questi file sfogliabili. Il punto con questa risposta è che ci sono strumenti che è possibile utilizzare per evitare di dover ripetere codice boilerplate migliaia di volte, a volte letteralmente, e solo così gli argomenti in questa domanda riguardano il codice boilerplate con cui questi strumenti possono essere d'aiuto.

    
risposta data 24.04.2014 - 17:11
fonte
-1

BTW, non c'è httpd.conf in Ubuntu (al momento in 14.04, non cercarlo, modificherai apache2.conf file).

Per salvare il tuo sito Web basato su PHP dagli script kiddies, puoi leggere il mio lungo tutorial per l'indurimento di WordPress (ho fornito il link per la protezione del copyright più probabilmente conoscerai altri punti vulnerabili sconosciuti). WordPress è solo un esempio, in realtà il contenuto è applicabile a qualsiasi sito web PHP-MySQL o persino PHP.

In secondo luogo, non correlato alla domanda originale; Anche il kernel di Linux dovrebbe essere indurito. Puoi vedere il mio succo - link

Normalmente PHP non si apre nel browser come un file di testo, ma mostra il percorso, il nome e probabilmente indica che l'amministratore del server non ha molta esperienza e lo rende più vulnerabile.

Non provare a controllare dal livello .htaccess , mantieni .htaccess il più leggero possibile. In realtà è nella directory pubblica ...

    
risposta data 25.04.2014 - 16:02
fonte

Leggi altre domande sui tag