[PentesterLab] LDAP

쥬스몬·2022년 3월 13일
0

PentesterLab

목록 보기
6/20

PentesterLab의 LDAP 문제에 대한 접근 방법을 기록

첫번째 문제는 LDAP 로그인 인증을 우회하는 문제이다.

이번 문제는 Null bind를 이용하라는 힌트가있어 Body로 전달되는 username과 password 파라미터에 각각 0x00을 삽입했더니 풀리지가 않는다😂
(username과 password값은 공백이 아닌 0x00이다)

그렇다면 Body 전체를 제거해보면 어떨까? LDAP에 null값이 전달되면 LDAP 서버는 연결을 바인딩하고 코드는 자격증명이 정확하다고 판단한다는 점을 이용한다.


이번 문제는 GET방식의 LDAP 인증 방식이 구현된 페이지이다. 바로 본론으로 들어가서 싱글/더블 쿼터를 입력해도 에러가 발생되지 않으며, 소괄호를 넣어서 syntax 에러를 유발하였다(LDAP Injection이 가능하다는 것을 의미😮)

파라미터를 기반으로 백엔드에서 실행되는 LDAP Query를 유추하면 아래와 같을것으로 예상한다.
(%(cn=[name])(pwd=[password]))

위에서 소괄호를 넣을 경우 아래와 같이 쿼리가 변경되어 syntax 에러가 발생했을 것이다.
(%(cn=admin))(pwd=admin))

LDAP Injection이 가능하니 결과적으로 LDAP 쿼리를 참으로 만들어야하는데 pwd구문을 무시하고 cn에 값으로 들어가는 name 파라미터를 변조하여 아래와 같은 쿼리를 만들것이다.
(%(cn=admin)(cn=*))%00)(pwd=[password]))

profile
블로그 이사 (https://juicemon-code.github.io/)

0개의 댓글