LDAP 인젝션
IT위키
더 많은 작업
- LDAP Injection; LDAP 삽입
- 외부 입력값을 검증하지 않고 LDAP 검색 필터나 DN 에 그대로 넣어, 공격자가 조회 조건을 바꾸거나 인증을 우회하게 만드는 공격
# 의도한 필터 (&(uid=사용자입력)(userPassword=비밀번호입력)) # 아이디에 *)(uid=*))(|(uid=* 를 넣으면 (&(uid=*)(uid=*))(|(uid=*)(userPassword=아무값))
- 앞쪽 조건이 항상 참이 되어 비밀번호를 몰라도 인증이 통과되거나, 검색 결과로 디렉터리 전체 사용자가 노출될 수 있다
- 와일드카드
*만 넣어도 다른 사용자의 속성을 한 글자씩 추측해 알아내는 블라인드 공격이 된다
- LDAP 필터에 들어갈 입력값의 특수문자(
* ( ) \ NUL)를 이스케이프한다. DN 에 들어가면, + " \ < > ;도 이스케이프한다 - 허용 문자만 받는 화이트리스트 검증을 한다(아이디는 영문·숫자만 등)
- LDAP 바인드 계정에 최소 권한만 준다
- 검색 결과 건수가 1건이 아니면 인증을 실패로 처리한다
- 구현단계 보안약점 입력데이터 검증 및 표현 유형의 하나로 'LDAP 삽입' 이 있다
- 설계단계 보안요구항목 중 디렉터리 서비스 조회 및 결과 검증이 이 보안약점을 막기 위한 항목이다 → 소프트웨어 개발 보안