Directory traversal in un URL?

0

Scenario:

Ho un server web che esegue nginx. Ho i miei file html in /var/www/ e le immagini in /var/www/pictures/ Tuttavia, ho anche alcune immagini segrete in /var/www/pictures/secretpics/ che devo tenere nascoste.

Così ho aggiornato il mio nginx conf con:

location /pictures/secrectpics/ {
   deny all;
   return 404;
}

Quindi l'ho provato nel mio browser. Ho digitato www.myexamplesite.com/pictures/secretpics/secret01.png e ricevuto 404. (supponendo che secret01.png sia un'immagine reale.)

Domande: 1. C'è un modo per aggirare questo e in realtà ottenere l'accesso a secret01.png?

Ad esempio, è qualcosa di simile al seguente? www.myexamplesite.com/pictures/../pictures/secretpics/secret01.png

  1. Se quanto sopra è possibile, come dovrei proteggere il mio secretpics ?
posta power 24.08.2017 - 07:28
fonte

2 risposte

1

Due possono mantenere un segreto se uno è morto. Stai proteggendo qualcosa non rendendolo disponibile. A tutti.

Ovviamente, non è pratico. Quindi pensi a tutti i modi in cui qualcuno può ottenere i tuoi dati:

  • Configurazione errata del server che consente l'accesso online. Gli attacchi di directory traversal sono un esempio di questo. Leggere e comprendere la documentazione e applicare gli aggiornamenti di sicurezza sono buone difese contro questo.

  • Solo indovinando. Tutti amano odiare sicurezza-per-oscurità, ma a volte funziona abbastanza bene. Usa un nome lungo con caratteri casuali (pensa "una buona password"), non solo secret .

  • Annusando i dati: utilizza https !

  • Attacchi MITM: rispetta gli errori del certificato. Allena i tuoi utenti. E sperare per il meglio (non verrà rilevato un attacco MITM davvero valido, si consideri l'utilizzo anche dei certificati client).

  • Attacco diretto sul server: proteggere i dati "a riposo", il più possibile. Chiunque abbia accesso fisico al tuo server (in qualsiasi momento senza crittografia del disco intero o mentre il server è in esecuzione (ad esempio se i tuoi dati si trovano in un data center o ospitati da una società) può vederlo).

  • Attaccare gli spettatori: proteggere i dati sui computer remoti, non solo sul webhost. Ad esempio, qualcuno può accedere alla cache del browser Web sul laptop dopo aver visualizzato i file?

  • Attacchi interni: puoi fidarti di tutte le persone autorizzate a visualizzare i dati? Cosa succede se lo inoltrano a "un amico?" O re-pubblicalo pubblicamente? O inviarlo a un giornale o alla polizia? Alcuni buoni consigli che ho sentito sono, non mettere mai qualcosa online che non vorresti vedere stampato sul giornale .

  • L'uomo: in che modo le tue difese si schiereranno contro un mandato? Hai bisogno di preparare alcune ahem , protezioni extralegali?

  • I cattivi hanno un approccio diretto: in che modo le tue difese si schiereranno contro cryptanalisi dei tubi di gomma ?

risposta data 24.08.2017 - 08:58
fonte
1

Secondo RFC 3986 Sezione 5.4 , questo è stato specificato per essere risolto come assoluto secondo il URL stesso.

Puoi immaginare le ramificazioni di consentire che i doppi punti vengano deselezionati fino a quando non vengono utilizzati per fare riferimento a un file server reale.

Ho eseguito un test utilizzando wget e l'URL richiesto è stato convertito in un URL assoluto.

Questo ovviamente si basa sul codice client che richiede la risorsa e il server per risolvere gli URL prima che vengano utilizzati all'interno del server. Il software server, che nella maggior parte dei casi sarebbe Apache, NGINX, IIS o simile, non dovrebbe mai fidarsi di nulla proveniente dal client.

$ wget https://www.nytimes.com/section/world/../../section/politics
--2017-08-24 17:05:20--  https://www.nytimes.com/section/politics
Resolving www.nytimes.com... 151.101.29.164
Connecting to www.nytimes.com|151.101.29.164|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 127149 (124K) [text/html]
Saving to: ‘politics’
    
risposta data 24.08.2017 - 09:07
fonte

Leggi altre domande sui tag