반응형

LDAP Injection 문제를 풀어보겠습니다. 인증 매커니즘을 우회하는 것이 목표입니다.

 

LDAP이란? "TCP/IP를 통해 디렉토리 서비스에 액세스하고 수정하기 위한 프로토콜" 이라고 정의됩니다.

LDAP Injection 공격 또한, SQL Injection 공격 기법과 별반 다르지 않습니다.

공격자는 어플리케이션 측에서 악의적인 LDAP 문법을 이용해 서버가 의도치 않은 행위(명령어 실행 등)를 실행하는 것이 목표입니다.

 

Root-me 문제를 풀면서 이해해보도록 하겠습니다.

LDAP Injection 문제를 클릭하면, 로그인 창이 뜹니다.

로그인 기능이 동작되는지, 취약한 패스워드를 사용하고 있지는 않은지 파악하기 위해 [admin/admin]을 입력해봅니다.

 

[admin/admin]으로는 로그인이 되지 않으며, unknown identifiers라는 에러가 발생합니다.

 

LDAP Injection을 시도할 때, 주로 사용되는 특수문자인 *)를 입력해보았습니다.

LDAP 문법이 어떻게 구성되어 있는지 친절하게 에러로 뱉어줍니다.

 

username에 *)를 입력하니 (uid=*))(userPassword=admin) 이라는 구문이 만들어지기 때문에 이 부분을 활용하면 될 것 같다는 생각이 듭니다.

 

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection

위의 링크를 참고해서 LDAP 공격 문자열을 만들었습니다.

 

그래서, uid=*) 까지만 True 값을 만들고 NULL Byte(%00)를 이용해 이후에 입력받는 문자열(패스워드)을 끊어버려 상관없이 만들어줬더니 인증에 성공하였습니다!

 

ch25 계정의 패스워드가 Flag 값입니다...

반응형

'Study > Wargame' 카테고리의 다른 글

[root-me] File upload - ZIP  (0) 2020.02.12
[root-me] PHP - preg_replace()  (0) 2020.01.08
[root-me] Remote File Inclusion  (0) 2020.01.08
[root-me] PHP - assert()  (0) 2020.01.02
[root-me] JSON Web Token (JWT) - Introduction  (0) 2019.12.20

+ Recent posts