[RISOLTO]Sicurezza attacchi con $_session: come viene gestita nella trasmissione server client ?

Emanuele.Basilicata

Nuovo Utente
30 Ott 2013
21
0
1
Buongiorno a tutti,

relativamente al titolo vi pongo questo esempio:

ho un file.html dove ospito una form(metoto POST e azione file.php)
ho un file.php che elabora i dati della form

In quest'ultimo apro la sessione.

Vorrei sapere:
1- quando php memorizza la variabile $_session nel browser del client : dopo aver ricevuto la form ?
2- in rete l'invio della variabile è catalogata come cookie da programmi come wireshark ?
3- stesso domanda come sopra per i token passati con campi hidden

Chiedo questo ai fini di predisporre contromisure per eventuali attacchi di session hijacking.

Di mio ho già predisposto controlli sull'IP.
Ho un database di appoggio per il controllo utenti.
I dati importanti viaggiano in rete criptati.
Le stringhe prima di essere elaborate vengono filtrati con strip_tab ed eliminati di tutti i caratteri che possono essere utlizzati nelle query in modo da evitare altre forme di attacco.

Grazie.

Emanuele
 
1. Mai, le sessioni sono usate è vengono gestite dal server, al massimo al client gli viene assegnato un id di sessione, ma in ogni caso, le sessioni sono gestite dal server, se mai sono i cookie che vengono salvati sul client, forse fai questa domanda perché ti è capitato di stampare con php qualche sessione, ma il php, una volta elaborato dal server ( php è un linguaggio lato server, ricorda, opera solo sul server, no sul client ) produce sempre codice html, quello viene inviato al client.

2. Non conosco questo programma, non so risponderti.

3. I campi hidden hanno solo la caratteristica di non essere visibile nella pagina, ma sono normale caselle di testo.

Certo è vero che, come dici te, con il session hiacking è possibile violare la sicurezza, ma recuperando il session id, che è inviato dal server a client, ma no le sessioni, che rimangono sul server.

Riguardo il session hiacking di consiglio di dare un'occhiata qui:

http://blog.artera.it/programmazione/sicurezza-in-php-session-hijacking
 
Ultima modifica:
Grazie per la risposta ma avrei bisogno di una delucidazione. Sono a conoscenza che php è un linguaggio lato server ma ti o vi chiedo in generale:

quando apri una session php genera un ID che memorizza nella cartella tmp oppure in quella che gli dici tu (ok),

Quando il client invia una nuova chiamata al server come riesce quest'ultimo a sapere che chi chiama è lo stesso che si è logato precedentemente ? tramite il MAC ? o il client invia anche la ID di sessione ?

Forse la mia è una elecubratio assurda ma mi piacerebbe capire perchè da quello che leggo, è proprio la sottrazione della session_id che genera un attacco session hijacking previo avvelenamento delle tabelle ARP.

Riguardo i campi hidden sono a conoscenza che sono normali caselle di testo ma se vuoi inviare un token nella form sempre per questioni di sicurezza, mi piaceva sapere come i token veniva visto in rete da programmi che spiano.

Potrei sicuramente installarmi dei programmi (e un server virtuale) e simulare un attacco ma se ciò che penso è sbagliato in partenza perdo tempo.

Saluti.

Emanuele
 
L'id di sessione viene salvato dal client in un cookie chiamato PHPSESSID, non so se ci hai fatto caso guardando il link che ti ho dato, a questo punto il php dice al server di recuperare il valore di questo cookie, ed a questo punto il php recupera la sessione, ma questo accade solamente tramite il recupero del cookie PHPSESSID, l'indirizzo MAC ( ip privato ), ip che identifica univocamente il computer non viene trasmesso in internet, almeno che te non usi un linguaggio lato client.

In intenet, da quello che so io, più che il MAC (indirizzo privato) si usa l'ip pubblico, ovvero l'indirizzo del dispositivo che ti permette la connessione ad internet ( modem, router, ecc.. ).

Riguardo quel'articolo che ti ho postato, certo che l'attacco si esegue sottraendo il cookie di sessione, e a quel punto viene riconosciuto come proprietario della sessione, ma li c'è anche scritto, cosa che non ho mai provato di persona, come fare ad aggiornare l'id di sessione, cosa che ha mia parere, poi non saprei, conviene, certo, come dici te puoi sempre controllare l'ip ( no il Mac ), ma non te lo consiglierei il controllo sull'ip, ad esempio, se l'isp associa un'ip dinamico all'utente, a questo punto come fai?

Per quando riguarda come si comportano i programmi sniffer non saprei che dirti, non ne ho mai provato uno, l'unica cosa è ciò che hai detto te, provare ad effettuare un'attacco te, del resto è la miglior cosa da fare, chi sa puoi trovare anche altre falle del sistema.
 
ok ci stiamo avvicinando al nocciolo del problema.

Vorrei farti riflettere su quanto mi hai scritto: "L'id di sessione viene salvato dal client in un cookie chiamato PHPSESSID...."

DOMANDA: se l'ID di sessione viene assegnato dal server quand'è che il client riceve l'ID per memorizzarlo su PHPSESSID ?

Rifaccio il percorso. Ho un file.html che contiene una form con metodo POST e action file.php .......invio al server....quest'ultimo assegna l'ID di sessione ......A QUESTO PUNTO IL CLIENT NON CONOSCE L'ID quindi:

chi e quando questo ID viene memorizzato dal client su PHPSESSID ?

Io credo che sia il server la prima volta che invia la risposta al client alla form precedentemente "spedita" e, stante a quanto mi hai scritto: "......in un cookie chiamato PHPSESSID... ", l'ID di sessione viene passata come un cookie.
A questo punto (se fosse vero quanto soprascritto) nella rete l'ID di sessione è rintracciabile ma:

quanto è distinguibile da altri cookie ? è possibile scriptarlo ?

Riguardo all'articolo di cui mi hai allegato il link ti ringrazio ma l'avevo già letto in precedenza come un altra decina su i vari tipi di attacchi.

In ultima: per riaggiornare la session Id si usa session_regenerate_id.

Sto comunque sto prendendo in esame la possibilità di crearmi un ambiente di lavoro per capire bene come funzionano questi analizzatori di rete.

Grazie.

Emanuele
 
ok risolto trovate conferme

E' come pensavo :

quando si apre una sessione in PHP, il server genera una ID che registra su una directory e contemporaneamente la stessa ID viene depositata sul browser del client associandola alla variabile globale $PHPSESSID che di fatto diverrà un cookie. Ogni qualvolta viene inviata una transazione tra client e server e precedentemente è stata aperta una sessione, la ID viaggia in rete.


Grazie.

Emanuele
 

Discussioni simili