LDAP-injektion

Inom datorsäkerhet är LDAP-injektion en kodinjektionsteknik som används för att utnyttja webbapplikationer som kan avslöja känslig användarinformation eller ändra information som representeras i LDAP - datalagren (Lightweight Directory Access Protocol). LDAP-injektion utnyttjar en säkerhetssårbarhet i en applikation genom att manipulera indataparametrar som skickas till intern sökning, lägg till eller ändra funktioner. När ett program misslyckas med att korrekt sanera användarinmatning är det möjligt för en angripare att ändra en LDAP-sats.

Tekniskt genomförande

LDAP-injektion sker när användarinmatning inte är ordentligt sanerad och sedan används som en del av ett dynamiskt genererat LDAP-filter. Detta resulterar i potentiell manipulation av LDAP-satserna som utförs på LDAP-servern för att antingen visa, ändra eller kringgå autentiseringsuppgifter.

Förebyggande

LDAP-injektion är en känd attack och kan förebyggas med enkla åtgärder. All indata från klienten måste kontrolleras/saneras från alla tecken som kan resultera i skadligt beteende. Indatavalideringen bör verifiera inmatningen genom att kontrollera förekomsten av specialtecken som är en del av LDAP-frågespråket, kända datatyper, juridiska värden etc. Vitlista-indatavalidering kan också användas för att upptäcka obehörig inmatning innan den skickas till LDAP-frågan.

Exempel

I exemplet nedan är en fråga konstruerad för att validera en användares autentiseringsuppgifter i syfte att logga in.

Strängfilter = “(&(ANVÄNDARE = ​​” + användarnamn + “) (LÖSENORD = “ + användarlösenord + “))”;

I ett typiskt användningsfall skulle en användare tillhandahålla sina användaruppgifter och detta filter skulle användas för att validera dessa uppgifter. En angripare kan dock ange en skapad indata för variabeln användarnamn som johnDoe)(&) och valfritt värde för lösenord. Den färdiga frågan blir då (&(USER = johnDoe)(&))(LÖSENORD = pass)) . Endast den första delen av denna fråga bearbetas av LDAP-servern (&(USER = johnDoe)(&) , som alltid utvärderas till sant vilket tillåter angriparen att få tillgång till systemet utan att behöva tillhandahålla giltiga användaruppgifter.

Se även