È possibile per un hacker scaricare un file php senza prima eseguirlo?

31

Ho un sito Web php in cui tutto è nella cartella public_html \, inclusa una cartella includes con config e classi. Ho detto al mio sviluppatore di spostarlo dalla cartella pubblica, ma ha detto che non vi è alcun rischio dato che i file sono file php e anche se qualcuno digita nel browser

www.example.com/includex/config.php

tutto ciò che otterranno è una pagina vuota.

È corretto? Non c'è modo che qualcuno possa scaricare un file php e vedere cosa c'è dentro, anche se l'hacker accede al mio server in qualche modo per scaricare il file o includerlo in un file php sul suo server usando XSS?

    
posta Petja Zaichikov 08.05.2013 - 00:19
fonte

6 risposte

20

Per leggere il codice PHP è necessaria una vulnerabilità directory traversal . file_get_contents() o altre funzioni di file system che sono sfruttabili .

SQL Injection sotto mysql può essere usato per leggere il codice sorgente. Ad esempio:

select load_file("/var/www/index.php")

Per combattere questo assicurati che file_privs sia disabilitato per l'account utente MySQL usato da PHP. Se display_errors = on nella configurazione del tuo php, un utente malintenzionato può ottenere il percorso della tua web root e usare sql injection o traversal della directory per leggere il codice sorgente.

L'uso di FTP significa che il codice sorgente viene trasmesso in testo normale. Usa SFTP e assicurati di avere una password sicura o, meglio ancora, configura una chiave RSA.

Fai attenzione ai file di backup, a volte gli editor creeranno file index.php~ o index.php.orig che possono essere scoperti usando navigazione forzata .

    
risposta data 08.05.2013 - 04:19
fonte
13

Oltre alle vulnerabilità lato server di tutte le varietà, anche le password FTP trapelate rappresentano una preoccupazione significativa. Esiste una classe di infezioni lato client che raccolgono le password FTP salvate da programmi come CuteFTP, FileZilla e DreamWeaver, inviando le credenziali di accesso a un utente malintenzionato. Questo è molto comune . Ho visto personalmente centinaia, forse migliaia di casi in cui ciò è accaduto. E in genere, la persona che ha divulgato inconsapevolmente le password è qualcuno che non ha più bisogno di averle comunque.

E se ti stai chiedendo se un utente malintenzionato scriverà effettivamente i tuoi file di configurazione alla ricerca di password, la risposta è " si " inequivocabile. In genere è una delle prime cose che un utente malintenzionato farà, a pochi minuti dal compromettere una nuova macchina.

    
risposta data 08.05.2013 - 03:59
fonte
4

Esistono due modi in cui un utente malintenzionato potrebbe leggere questo file come testo, anziché eseguirlo.

  1. Se il tuo server web non è configurato correttamente, il php potrebbe non essere eseguito. Ovviamente è necessario avere php installato e in esecuzione sul lato server, oltre a disporre di un server Web che supporti questo. Se, per qualche ragione, qualcosa va storto con l'installazione di php, allora è teoricamente possibile scaricare il file php "raw". Questo, comunque, è improbabile.

  2. Se esiste una vulnerabilità LFI (inclusione di file locali) in questo script (o qualsiasi altra pagina dinamica sul sito), è possibile visualizzare un file che si trova sul server web. Vedi la pagina di Wikipedia sulle vulnerabilità di inclusione dei file per vedere come sarebbe questo.

Per inciso, vale la pena notare che per utilizzare file PHP, devono essere raggiungibili da un browser. Non c'è modo di "nascondere" la pagina, a meno che tu non abbia un altro script che la esegue altrove.

    
risposta data 08.05.2013 - 01:03
fonte
2

Le password FTP trapelate sono tutte molto comuni e sono uno dei modi più comuni con cui i file di origine vengono rimossi, il malware installato sui siti Web degli sviluppatori è molto comune e recentemente si è iniziato a testimoniare attacchi di spear phishing contro di loro nel tentativo di hacker di ottenere proprietà intellettuale.

Uno dei modi meno comuni e da quello a cui sono a conoscenza è conosciuto solo da una certa quantità di persone, ma se sviluppi il tuo sito web sul server web Linux su cui è ospitato il sito web potresti avere un problema come alcuni software di editing memorizzeranno i backup dei file modificati nascosti agli sviluppatori, ad esempio

Login.php~

Questo file perché non è eseguito dal server web è accessibile inserendo

Questo rivelerebbe la fonte del file login.php di backup per evitare che ciò accada o dovresti sviluppare il tuo codice di sito e caricarlo sul server o assicurarti che non ci siano file di backup archiviati in una directory il pubblico ha accesso a

Fonte: rivista 2600

Che cosa succede se un utente malintenzionato è in grado di accedere

databaseConnection.php~

Quindi il tuo vero s \ 'insenatura

    
risposta data 09.05.2013 - 01:37
fonte
0

Come altri hanno risposto, questo non dovrebbe essere possibile. Tuttavia, non puoi dire che non c'è assolutamente alcun modo per un utente malintenzionato di leggere il tuo codice sorgente PHP.

Ad esempio, potrebbe esserci una vulnerabilità che consente a un utente malintenzionato di visualizzare i file nel server Web, incluso il codice PHP non elaborato. Oppure un utente malintenzionato potrebbe scoprire la tua password FTP, che potrebbe anche essere eseguita in molti modi, tra cui attacchi man-in-the-middle e social engineering . Ci sono molte possibilità. Di seguito, ho elencato alcune vulnerabilità che potrebbero permetterlo, ma in fondo è, solo avere i file PHP nella cartella public_html assolutamente non dovrebbe essere un rischio per se stesso.

Un file download.php che accetta un parametro GET / POST con il nome del file da scaricare e non filtra correttamente l'input dell'utente, potrebbe consentire il download del codice raw di un file sul sito, attraverso l'accesso a un indirizzo come questo: link . Vedi questo .

Un altro esempio: se esiste una vulnerabilità che consente a un utente malintenzionato di eseguire il codice Esegui sul server, ad esempio Inclusione file locale / remoto , Vulnerabilità caricamento file e altri, potrebbe anche essere possibile per lui per eseguire il codice che gli consente di leggere il codice sorgente PHP.

    
risposta data 08.05.2013 - 01:40
fonte
0

Finché le cose sono configurate correttamente sul server, i file PHP dovrebbero essere registrati come script e il server web dovrebbe averli interpretati da PHP quando richiesto e visualizzare solo i risultati di tale interpretazione.

Detto questo, qualsiasi numero di problemi può causare l'esposizione dei file. Alcuni di questi problemi possono anche esporre i dati indipendentemente dal fatto che siano in una cartella pubblica o meno. È sempre importante assicurarsi che il server sia configurato correttamente in modo da consentire solo le richieste necessarie. Ciò riduce l'area di superficie disponibile per l'attacco e aiuta a evitare possibili problemi relativi ai bug che potrebbero causare una violazione.

È una buona idea avere un file di configurazione in una cartella pubblica? Finché il server non è configurato per distribuire il file senza elaborarlo, probabilmente non è molto meno sicuro di qualsiasi altro punto del sistema. C'è una piccola possibilità che un bug nel server web venga usato per impedire l'esecuzione da parte del motore di scripting, ma più probabilmente gli attacchi sono attacchi che verrebbero da qualche altra direzione come SQL, FTP o qualche iniezione di codice in una cartella privata sarebbe ugualmente esposto.

Detto questo, il rovescio della domanda è perché non metterlo da qualche altra parte. L'opzione più sicura sarebbe quella di posizionare in un luogo in cui solo l'utente in cui viene eseguita l'istanza PHP del sito Web può accedere e negare l'accesso al file da qualsiasi altro meccanismo (come l'utente FTP o qualsiasi altro utente pubblico). tuttavia è piuttosto difficile da configurare e gestire, quindi è necessario prendere una decisione se la sicurezza aggiuntiva è necessaria o meno.

È un po 'scocciato su quale sia il migliore. È molto lavoro extra gestire tutti i percorsi, le autorizzazioni e gli utenti per mantenere quel livello di sicurezza. Il rovescio della medaglia, fintanto che il server viene mantenuto aggiornato e configurato correttamente, dovresti essere vulnerabile solo agli exploit zero day che attaccano a un livello molto basso e può essere sicuro contro praticamente tutti gli attacchi comuni, anche con il file di configurazione in la cartella pubblica.

    
risposta data 08.05.2013 - 16:59
fonte

Leggi altre domande sui tag