티스토리 뷰

반응형

 

 

 

가. 원인

  - 검증없이 외부입력값을 LDAP 필터문에 사용하여 LDAP 명령구문을 변조

 

 

나. 영향

  - LDAP 필터문을 조작하여 정보유출 및 정보조작

 

 

다. 보안대책

  - 사용자입력값에 특수문자( = + < > # ; \ 등 ) 필터링

  - 특수문자가 일반문자로 인식되도록 처리 (이스케이프)

 

 

라. 안전한 코드

1. 화이트 리스트로 URL 검증

 

  String userSN = request.getParameter("usersn");

  String userPass = request.getParameter("pass");

  ...

  if ( !userSN.matches("[\\w\\s]*") ||  !userPass.matches("[\\w]*") ) {

     return;  

  } 

  String filter = "(&(sn=" + userSN + ")(userPassword=" + userPass + "))";

  ....

 

 

 

마. 진단방법

<입력값 검증>

  1. LDAP 조회 쿼리를 실행하는지 확인

  2. LDAP 조회문의 필터에 외부 입력값을 사용하는지 확인

  3. 외부입력값을 검증 후 사용하는지 확인

 

 

 

바. 정/오탐 케이스

<정탐 케이스>

  1. 입력값을 검증하지 않고 쿼리문 생성 문자열에 사용될 경우

  2. 입력값이 검증없이 검색을 위한 base 문자열의 생성에 사용

 

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday