Una recente scansione di un'applicazione .net
ha rilevato una vulnerabilità ldap injection per un campo utilizzato per un nome utente assegnato a un'istanza di una classe personalizzata denominata User.
Dopo aver analizzato il codice, ho scoperto che all'istanza User è stata fornita l'istanza System.Security.Principal.WindowsPrincipal
e in effetti ha inviato una richiesta di autenticazione per il nome utente fornito al server IIS del computer host, che appare come un evento di accesso nella Sicurezza log.
Non sono ancora riuscito a ottenere una risposta consistente per l'iniezione per i risultati delle query ldap positive e negative, ma sembra molto probabile, e sto lavorando per ottenere un'altra scansione con gli stessi risultati, avendo qualche problema , ma non ho ancora raggiunto un muro.
Convalidare una lista bianca impedirà che la stringa classObject
venga iniettata, ma penso che l'utilizzo della stringa User in .net
non debba essere eseguito per questo motivo, tuttavia mi sto anche interrogando sullo spazio dei nomi System.Security.Principal.WindowsPrincipal
essendo una vulnerabilità di ldap injection stessa.
Sono comunque in grado di impedire ciò oltre alla convalida della whitelist, ma consentono comunque l'utilizzo dello spazio dei nomi di sistema in un file .cs. O se le classi User dovessero essere personalizzate, essere cambiate in un'altra stringa?