Ottenere il percorso del file caricato senza conoscere la destinazione di caricamento

0

Immagina uno scenario in cui siamo in grado di caricare un file PHP sul server. Tuttavia, non siamo a conoscenza del percorso di caricamento. Voglio solo dire che, siamo in grado di caricare il file ma non sappiamo dove sarà memorizzato dopo il caricamento. È possibile ottenere il percorso del file dopo aver caricato lo script PHP? In qualche modo facendo lo script caricato per informarci sulla sua posizione? So che la domanda sembra strana. Ma stavo pensando a una funzionalità in PHP in cui lo script viene eseguito automaticamente subito dopo il caricamento, così, ad esempio, ci può inviare un'e-mail che ci informa del percorso di caricamento. Un'altra forma di porre questa domanda sarebbe, è possibile scoprire del tutto il percorso del file caricato caricando semplicemente script PHP o Python? Sebbene io preferisca PHP, potrebbero esserci soluzioni in altre lingue supportate dal lato server.
P.S. Se nessuna delle idee precedenti funziona, non è possibile conoscere il percorso di destinazione del caricamento con qualsiasi mezzo?

    
posta FreeMind 29.05.2015 - 19:09
fonte

2 risposte

1

La destinazione in cui un file viene salvato dipende completamente dall'applicazione. Anche se si potesse garantire che un file caricato fosse eseguito, il file potrebbe essere memorizzato in un ambiente chroot e non conoscere la sua posizione attuale. Detto questo, potresti essere in grado di determinare il percorso per una particolare applicazione.

  • Il server ti dirà spesso il percorso sul quale è stato caricato. Ad esempio, se carichi un'immagine, trova una pagina web che contenga quella nuova immagine e trovi l'URL. Potrebbe essere RESTful e non un riferimento diretto al file, ma è un buon punto di partenza.
  • Guarda il codice sorgente dell'applicazione. Se stai guardando un'applicazione open source, vai a cercare il suo codice sorgente per vedere dove memorizza i file. Ad esempio, wordpress normalmente memorizza i file in ./wp-includes/uploads/<date>/file . Determinare questo per un sito wordpress può farti sbollire troppo su più siti.
  • Prova a creare messaggi di errore. Se riesci a bloccare l'app e forzare un messaggio di errore, potresti ricevere informazioni su dove sono archiviati i file. Alcune cose per aiutare con questo sarebbe includere i nomi dei file troppo a lungo o contenere caratteri non validi per un particolare filesystem.
  • Tentativo di attacchi traversali di directory. Se riesci a trovare un riferimento di base a un file noto come / etc / passwd, puoi iniziare a indovinare altri nomi di file e percorsi. Questo è reso molto facile se l'applicazione consente globs per i nomi dei file.
  • Controlla il file robots.txt. Alcune applicazioni tendono a impedire ai robot di eseguire la scansione dei contenuti caricati dagli utenti, quindi assicurati di controllare il file /robots.txt per le voci insolite.
  • Prova un programma come Dirbuster. Nota: Dirbuster è molto rumoroso e richiede un intenso processo per il server.
  • Fai riferimento a un'immagine su un server web che controlli e controlla le intestazioni dei referrer. Questo può perdere l'URL della pagina in esecuzione. Nota: per i siti HTTPS, è necessario un sito Web HTTPS.
risposta data 29.05.2015 - 20:56
fonte
0

tutto dipende dal gestore sul server. Questo gestore riceverà normalmente i dettagli sul file caricato, in genere un nome file, il percorso del file temporaneo in cui il server ha inserito il file e il numero di byte nel file. Il gestore utilizzerà quindi queste informazioni per elaborare il file in qualche modo. ad esempio, potrebbe spostare il file in una posizione specifica, modificare le autorizzazioni di accesso ecc.

Questo gestore normalmente restituisce qualcosa al client per informarlo che il caricamento è riuscito o meno. Può aggiungere anche altre informazioni, come la posizione finale del file. Quindi, in linea di principio, sì, puoi fare ciò che chiedi. La risposta del server potrebbe includere dettagli sulla posizione del file, il gestore potrebbe inviare una e-mail a qualcuno che li informa del caricamento del file ecc. Tuttavia, ci sono alcune cose che possono complicare le cose.

Il server potrebbe essere in esecuzione in un ambiente chroot in cui i percorsi dei file, ecc. sono relativi a quell'ambiente, il server potrebbe avere restrizioni su ciò che i gestori sono autorizzati a fare con i file o il livello di interazione consentito a livello di sistema operativo / file system ecc .

L'idea di consentire a un client di caricare un file che il gestore accetta e installa in modo che ora sia servito dal server Web come nuovo contenuto è una proposta ad alto rischio. Avresti bisogno di un sacco di controlli per proteggere il sistema. Molti di questi controlli potrebbero già essere implementati, il che potrebbe rendere l'implementazione più difficile di quanto si possa anticipare.

    
risposta data 30.05.2015 - 02:28
fonte

Leggi altre domande sui tag