본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


웹 취약점(Web vulnerability)

3. LDAP 인젝션(Lightweight Directory Access Protocol)

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 11. 29.

 

웹 취약점 중 한가지인 LDAP 인젝션은 SQL인젝션과 비슷한 개념으로, 사용자가 입력하는 내용에 SQL과 관련된 문법을 넣어서 해당 문법이 실행되어 정보를 조작하거나 탈취하는 취약점 입니다.

특수문자(=,+,〈,〉,#,;/등)를 사용자가 대입하는 경우에 해당 값을 치환하여 실행되지 않게 하여야 합니다.

"SQL인젝션이 조건절에 대한 쿼리문 실행" 에 대해서 강조를 한다면,

"LDAP 인젝션은 특수문자에 대한 쿼리문 실행" 이 좀 더 집중한 개념입니다.

 * 거의 비슷한 내용 입니다.

 

아래 깃허브에 대표적 패턴에 대해서 나와있습니다.

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

 

GitHub - swisskyrepo/PayloadsAllTheThings: A list of useful payloads and bypass for Web Application Security and Pentest/CTF

A list of useful payloads and bypass for Web Application Security and Pentest/CTF - GitHub - swisskyrepo/PayloadsAllTheThings: A list of useful payloads and bypass for Web Application Security and ...

github.com

해당 취약점 공격은, 사용자 입력필드에서 쿼리를 삽입하여서 정보의 위변조가 쉽게 이루어 질 수 있습니다.

검색이 있는 기능에 sql 문과 관련된 조건문을 특수문자등을 추가하여 공개되지 말아야할 정보가 공개되거나 저장되게 할 수 있기 때문 입니다.

 

 

#방법1

이를 해결하기 위해서는 특수기호에 대한 정규식을 조사하여 제거하는 기능이 필요합니다.

아래 메소드는 특수문자를 전부 제거하는 간단한 기능 입니다.

//한글, 영문, 숫자 이외의 모든 특수문자를 치환 합니다.
public static String StringReplace(String str){       
    String match = "[^\uAC00-\uD7A30-9a-zA-Z]";
    str = str.replaceAll(match, " ");
    return str;
}

 

#방법2

데이터 베이스에 접근하는 기술이 프레임워크의 기술 기반이라면 좀 더 쉽게 조치할 수 있습니다.

Srping에서 mybatis를 사용 한 다면, 달러(${}) 형식을 사용하지 않고 샵(#{}) 형식을 사용하면 간단하게 조치가 가능 합니다(문자열로 받기 때문에).

또한 JPA 방식의 기술을 사용하면(예: Hibernate) 대입되는 값 또한 문자열로 인식하므로 간단하게 조치가 가능 합니다.

 

 

이상으로 웹 취약점 중 한가지인 LDAP 인젝션 대비 방법에 대해서 살펴보았습니다.

궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글