ROOTME] LDAP Injection

woounnan·2020년 3월 18일
0

wargame

목록 보기
18/59
post-thumbnail

문제

로그인 페이지가 나온다.
로그인에 필요한 정보 조회를 LDAP로 하는 것처럼 보인다.


풀이

먼저 LDAP가 무엇인지 확인해보자

LDAP

DAP란 X.500에서 사용하는 디렉토리 서비스 검색 프로토콜인데
이 DAP를 경량화 한 것이 LDAP(Lightweight DAP)이다.

https://en.wikipedia.org/wiki/Directory_service
디렉토리 서비스란, 네트워크를 통해 컴퓨터 자원에 접근할 수 있게 해주는 응용소프트웨어 이다.

LDAP로 조회할 때 자체적인 명령어를 사용하게 되고, SQL과 비슷한 쓰임새로 이해하면 되겠다.

오류 확인

)를 입력하여 오류를 발생시켜본다.

Warning: ldap_search(): Search: Bad search filter in /challenge/web-serveur/ch25/index.php on line 70

ERROR : Invalid LDAP syntax : (&(uid=))(userPassword=))

사용되는 구문을 확인할 수 있었다.

권한을 얻도록 하는 인젝션 쿼리는 다양하게 있는데
https://www.blackhat.com/presentations/bh-europe-08/Alonso-Parada/Whitepaper/bh-eu-08-alonso-parada-WP.pdf
문서를 참조하여 인젝션을 시도하면 된다.

id = *)(&
password = *)(&

&는 참을 나타내므로, 모든 값을 조회하는 것이다.

완성된 쿼리는 다음과 같다

(&(uid=*)(&))(userPassword=*)(&))

로그인에 성공하면, 비밀번호가 출력되고 문제인증에 사용할 수 있다.

0개의 댓글