LDAP 정의와 그 용도
Lightweight Directory Access Protocol
네트워크 통해서 파일 및 장치와 같은 기타 자원에 대한 데이터를 찾을 수 있도록 하는 소프트웨어 프로토콜.
LDAP은 X.500의 일부인 DAP(Directory Access Protocol)의 경량버전임.
일종의 전화번호부.
디렉터리 서비스: 네트워크 내 자원이 있는 위치를 사용자에게 알려주는 서비스.
EX) DNS는 도메인 이름을 특정 네트워크 주소와 연결하는데 사용되는 디렉터리 시스템.
사용자가 도메인 이름을 모르는 경우, LDAP을 이용해서 사용자가 위치를 모른 채 검색 가능.
LDAP의 용도
- 인증을 위한 중앙 위치 제공
→ 사용자 이름과 암호를 저장, 다른 서비스에서 LDAP을 이용해서 로그인
→ 회사 내에서 조직도나 부서별 이메일 주소 등.. LDAP으로 관리
→ 특정 데이터 중앙에서 일괄관리 (사용자 권한, 응용프로그램 정보, PKI, 사용자 정보관리 등)
LDAP Directory Level
LDAP은 여러 디렉터리 엔트리가 계층적 트리 구조로 구성됨
- 하나의 루트 디렉터리
- 여러 개의 서브 디렉터리
- 탐색은 포인터에 의해 계층적으로 이루어짐.
디렉터리 내 엔트리
- DN(Distinguished name)으로 참조
- DN은 글로벌 유니크한 이름을 가진다.
LDAP 서버 구축 > Windows Active Directory가 적합
- LDAP은 간단한 문자열 기반 쿼리를 이용하여 Active Directory에서 정보를 추출.
EX) Active Directroy에서 사용자 이름 및 암호와 같은 엔트리를 저장/추출 가능
(출처 및 참고: techtarget, 전공과목 자료)
-
주통기_가이드 WEB 보안
항목 3. LDAP 인젝션
사용자 입력을 기반으로 LDAP 구문을 구축하여 웹 기반 응용프로그램을 악용하는 데 사용되는 공격이다.
1) 목적: 취약한 시스템에 신뢰할 수 없는 LDAP 코드 인젝션 공격을 통한 비인가자의 악의적 행위를 차단
2) 위협
- 응용 프로그램이 사용자 입력 값에 대한 적절한 필터링 및 유효성 검증을 하지 않아서.. 로컬 프록시 아용함으로 LDAP 구문 변조가 가능
- 공격 성공 시 승인되지 않은 쿼리에 권한을 부여, LDAP 트리 내 내용 수정이나 임의 명령 실행이 가능
- 적절한 필터링 로직 구현 필요 (지정된 문자열만 입력을 허용, 임의의 LDAP 쿼리 입력에 대한 검증 로직 구현이 필요)
3) 구문
- webtest)(&))
- 와일드 문자 * 사용하여 반환되는 데이터 양 변화 확인
- [*);cn;], [*));cn;], [*)));cn;], [*)));cn;]
- payload 모음 (깃허브)
4) 보안 설정
- 사용자 입력 값을 화이트리스트로 지정. (a-z, A-Z), (0-9)만을 허용
- DN과 필터에 사용되는 사용자 입력 값에는 특수문자가 포함되지 않도록 필터링
- 특수문자를 사용해야 하는 경우, 특수문자에 대해서 실행 명령이 아닌 일반문자로 익식되도록 처리
EX) DN에 사용되는 특수문자인 \, 필터에 사용되는 특수문자 =, +, <, >, #, ;, \ 등..
- 웹 방화벽에 LDAP 관련 특수문자를 필터링하도록 룰셋을 적용
가이드에 명시된 필터링 대상은 다음과 같다.
'보안 > 웹·모바일' 카테고리의 다른 글
LFI(Local File Inclusion) 취약점 (0) | 2022.11.04 |
---|---|
OS Command Injection (0) | 2022.10.28 |
[inflearn] sql injection part 1 환경 세팅 (1) | 2022.10.03 |
웹 페이지의 구조를 분석하기 위한 툴. HTTrack와 DirBuster (0) | 2022.08.08 |
홈페이지 취약점 진단 시 SSL 버전 확인 (0) | 2022.08.08 |