웹 취약점 중 한가지인 LDAP 인젝션은 SQL인젝션과 비슷한 개념으로, 사용자가 입력하는 내용에 SQL과 관련된 문법을 넣어서 해당 문법이 실행되어 정보를 조작하거나 탈취하는 취약점 입니다.
특수문자(=,+,〈,〉,#,;/등)를 사용자가 대입하는 경우에 해당 값을 치환하여 실행되지 않게 하여야 합니다.
"SQL인젝션이 조건절에 대한 쿼리문 실행" 에 대해서 강조를 한다면,
"LDAP 인젝션은 특수문자에 대한 쿼리문 실행" 이 좀 더 집중한 개념입니다.
* 거의 비슷한 내용 입니다.
아래 깃허브에 대표적 패턴에 대해서 나와있습니다.
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection
해당 취약점 공격은, 사용자 입력필드에서 쿼리를 삽입하여서 정보의 위변조가 쉽게 이루어 질 수 있습니다.
검색이 있는 기능에 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 인젝션 대비 방법에 대해서 살펴보았습니다.
궁금한점 또는 틀린 부분은 언제든 연락주세요! 👻
'웹 취약점(Web vulnerability)' 카테고리의 다른 글
6. SSI 인젝션(Server Side Include) (0) | 2021.11.29 |
---|---|
5. SQL 인젝션(OS Command Execution) (0) | 2021.11.29 |
4. 운영체제 명령실행(OS Command Execution) (0) | 2021.11.29 |
2. 포멧 스트링(Format String) (0) | 2021.11.29 |
1. 버퍼 오버플로우(Buffer Overflow) (0) | 2021.11.29 |
댓글