코더는 보안을 정복 : 공유 및 학습 시리즈 - LDAP 주사

게시일: 2019년 1월 17일
by Jaap Karan Singh
사례 연구

코더는 보안을 정복 : 공유 및 학습 시리즈 - LDAP 주사

게시일: 2019년 1월 17일
by Jaap Karan Singh
리소스 보기
리소스 보기

대부분의 컴퓨터 시스템은 LDAP(경량 디렉터리 액세스 프로토콜)를 사용합니다. IP(인터넷 프로토콜) 네트워크를 통해 분산 디렉터리 정보 서비스를 유지하는 데 사용됩니다. 그래서 기본적으로, 그것은 사용자를 추적 하는 방법으로 작동.

LDAP는 사용자가 다양한 작업을 수행할 수 있는 권한이 있는지, 특히 조직 내에서 정의된 역할과 관련된지 확인하기 위해 앱의 인증 원본으로 자주 사용됩니다. 예를 들어 회계에 있는 사람만 회사 회계 소프트웨어를 사용할 수 있습니다. 사용자가 설정된 권한 내에서 행동하도록 LDAP 테이블을 확인하도록 응용 프로그램이 프로그래밍되는 경우가 많습니다.

악의적인 사용자가 LDAP 쿼리를 조작할 수 있는 경우에 문제가 발생할 수 있습니다. 이렇게 하면 수신 서버가 일반적으로 허용되지 않는 잘못된 쿼리를 실행하거나 암호 없이 무효 또는 보안이 낮은 사용자에게 높은 수준 또는 관리자 액세스를 부여하도록 속일 수 있습니다.  

LDAP 주사는 까다로울 수 있지만,이 에피소드에서, 우리는 배울 것이다 :

  • 작동 방식
  • 왜 그렇게 위험합니까?
  • 방어를 막기 위해 어떻게 방어할 수 있을까요?

공격자는 LDAP 주입을 어떻게 사용합니까?

LDAP 기반 공격이 수년 동안 인기를 끌고 있는 이유 중 하나는 거의 모든 컴퓨터 시스템이 이를 사용하기 때문에 있습니다. LDAP는 오픈 소스이며 매우 잘 작동하므로 많은 대안이 만들어지지 않았습니다.

LDAP의 핵심은 IP 기반 컴퓨터 시스템 또는 네트워크 내에서 유효한 사용자를 추적하는 데이터베이스입니다. 사용자가 시스템, 네트워크, 서버, 응용 프로그램 및 동일한 네트워크의 다른 사용자에 대한 정보를 공유할 수 있습니다.

정보는 DN으로 축약되는 고유 이름이라고 하는 데이터베이스 라인 또는 레코드와 동등한 LDAP에 의해 저장됩니다. 각 DN은 고유합니다. 예를 들어, 이것은 대기업의 시카고 회계 사무소에서 일하는 사용자에게 DN이 어떻게 보일 수 있는지입니다.

cn=제임스 스미스, ou=기업 계정, dc=시카고, do=Parkview  

각 DN이 고유하도록 하려면 "+", "/", "=" 및 몇 가지 다른 코드와 같은 다양한 코드를 레코드에 추가할 수 있습니다. 시카고 파크뷰 오피스의 기업 계좌에서 일하는 제임스 스미스가 두 명 있더라도 레코드 이전이나 이후에 공백을 삽입하여 각각 개별 DN을 가질 수 있습니다.

응용 프로그램은 일반적으로 LDAP를 사용하여 사용자가 급여 부서에서 올바른 연락처를 찾아 검사에서 실수에 대해 이야기할 때와 같은 특정 DN에 대한 쿼리를 보낼 수 있도록 합니다. LDAP 주사는 검색 쿼리에서 사용자가 제공한 매개 변수에 대한 유효성 검사가 없을 때 발생할 수 있습니다. 이 경우 해커는 양성 검색을 조작하여 인증 메커니즘을 우회하거나 추가 임의 쿼리를 실행할 수 있습니다. 이렇게 하면 서버가 사용자 암호와 같이 허용되지 않아야 하는 결과를 표시하도록 속이거나 유효한 암호 가 있거나 없는 네트워크 내의 보안이 높은 영역에 대한 액세스 권한을 응용 프로그램을 부여할 수도 있습니다.

LDAP 주사가 왜 그렇게 위험한가요?

LDAP 주사의 가장 큰 위험은 전 세계 IP 컴퓨터 네트워크의 대부분에 걸쳐 프로토콜의 확산 가능성이 높습니다. 그것은 정보를 훔치려는 해커를위한 쉬운 디딤돌, 또는 네트워크에서 자신의 권한을 높이기 위해 합니다. LDAP 주사가 가능한지 확인하지 않으므로 보안 팀은 해당 구멍이 항상 닫혀 있는지 확인해야 합니다.

특히 유효한 사용자가 조직 내의 사용자 및 그룹 또는 DN에 포함된 기타 정보에 대한 제한된 정보를 찾을 수 있도록 많은 응용 프로그램이 프로그래밍됩니다. 예를 들어, 앱을 통해 누군가가 LDAP를 사용하여 시카고에서 일하는 기업 회계사의 연락처 정보를 검색할 수 있으며, 이는 위의 예에서 친구 제임스 스미스를 반환합니다. 사용 권한에 따라 LDAP 쿼리를 완벽하게 사용할 수 있습니다.

악의적인 사용자가 쿼리를 필터링하지 않은 매개 변수를 추가하여 검색의 특성을 변경하고 서버를 속여 일반적으로 제공해서는 안 되는 정보를 제공할 수 있습니다. 예를 들어 사용자=* 문자열을 추가하면 공격자는 전체 조직의 모든 단일 사용자에 대한 정보를 얻을 수 있으며, 이는 허용되지 않을 수 있습니다.

인증에 LDAP를 사용하는 응용 프로그램의 경우 문제가 더욱 악화될 수 있습니다. 예를 들어 공격자는 LDAP 쿼리 끝에 있는 (&) 문자열을 사용하여 서버를 속여 인수가 사실이라고 생각할 수 있습니다. 앱이 LDAP를 사용하여 암호의 유효성을 검사하는 경우 LDAP 주입을 통해 True 인수를 강제로 사용하면 권한이 없는 사용자가 암호 없이도 관리자로 네트워크에 로그인할 수 있습니다.

LDAP 주입을 네트워크에 L-DON't 만들기

LDAP 주사를 방지 하는 가장 좋은 방법 중 하나는 LINQtoAD 또는 그것을 저항 하기 위해 특별히 설계 된 다른 프레임 워크 같은 것을 구현 하는. 네트워크에 LDAP 쿼리를 활용하는 응용 프로그램이 이미 있는 경우 이 작업을 불가능할 수 있습니다. 그러나, 이 경우에도, 그것은 여전히 앞으로 주입 저항 하는 프레임 워크를 사용 하는 모든 새로운 응용 프로그램에 대 한 좋은 생각.

LDAP를 사용하는 기존 응용 프로그램은 화이트리스트 유효성 검사 및 입력 소독을 사용하여 주사에 대해 강화할 수도 있습니다. 가능한 경우 사용자 입력을 제한된 신뢰할 수 있는 값 집합으로 제한합니다. 그렇지 않으면 LDAP 쿼리의 일부인 사용자 입력은 먼저 소독되어야 하며 GET 및 POST 매개 변수, 쿠키 및 HTTP 헤더를 공격 벡터로 사용할 수 있으므로 포함시키는 것을 잊지 마세요. 입력 소독을 수행하기 위해 자신의 함수를 작성하지 마십시오. 신뢰할 수 있는 타사 보안 포커스 라이브러리 또는 기본 제공 프레임워크 API를 대신 사용합니다.

대상 수정 프로그램 외에도 LDAP 쿼리 응용 프로그램에 할당하는 것과 같은 좋은 컴퓨팅 관행도 네트워크에서 필요한 최소한의 권한을 도움이 될 수 있습니다. 그런 식으로, 최악의 일이 발생하고 LDAP 주입을 통해 얻을 경우, 피해는 완화 될 것이다.

LDAP 주사에 대한 자세한 정보

추가 읽기에 대 한, LDAP 주사에 OWASP 쓰기를 살펴 볼 수 있습니다., 또는 주사 방지 치트 시트. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.

리소스 보기
리소스 보기

저자

야프 카란 싱

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

코더는 보안을 정복 : 공유 및 학습 시리즈 - LDAP 주사

게시일: 2019년 1월 17일
Jaap Karan Singh

대부분의 컴퓨터 시스템은 LDAP(경량 디렉터리 액세스 프로토콜)를 사용합니다. IP(인터넷 프로토콜) 네트워크를 통해 분산 디렉터리 정보 서비스를 유지하는 데 사용됩니다. 그래서 기본적으로, 그것은 사용자를 추적 하는 방법으로 작동.

LDAP는 사용자가 다양한 작업을 수행할 수 있는 권한이 있는지, 특히 조직 내에서 정의된 역할과 관련된지 확인하기 위해 앱의 인증 원본으로 자주 사용됩니다. 예를 들어 회계에 있는 사람만 회사 회계 소프트웨어를 사용할 수 있습니다. 사용자가 설정된 권한 내에서 행동하도록 LDAP 테이블을 확인하도록 응용 프로그램이 프로그래밍되는 경우가 많습니다.

악의적인 사용자가 LDAP 쿼리를 조작할 수 있는 경우에 문제가 발생할 수 있습니다. 이렇게 하면 수신 서버가 일반적으로 허용되지 않는 잘못된 쿼리를 실행하거나 암호 없이 무효 또는 보안이 낮은 사용자에게 높은 수준 또는 관리자 액세스를 부여하도록 속일 수 있습니다.  

LDAP 주사는 까다로울 수 있지만,이 에피소드에서, 우리는 배울 것이다 :

  • 작동 방식
  • 왜 그렇게 위험합니까?
  • 방어를 막기 위해 어떻게 방어할 수 있을까요?

공격자는 LDAP 주입을 어떻게 사용합니까?

LDAP 기반 공격이 수년 동안 인기를 끌고 있는 이유 중 하나는 거의 모든 컴퓨터 시스템이 이를 사용하기 때문에 있습니다. LDAP는 오픈 소스이며 매우 잘 작동하므로 많은 대안이 만들어지지 않았습니다.

LDAP의 핵심은 IP 기반 컴퓨터 시스템 또는 네트워크 내에서 유효한 사용자를 추적하는 데이터베이스입니다. 사용자가 시스템, 네트워크, 서버, 응용 프로그램 및 동일한 네트워크의 다른 사용자에 대한 정보를 공유할 수 있습니다.

정보는 DN으로 축약되는 고유 이름이라고 하는 데이터베이스 라인 또는 레코드와 동등한 LDAP에 의해 저장됩니다. 각 DN은 고유합니다. 예를 들어, 이것은 대기업의 시카고 회계 사무소에서 일하는 사용자에게 DN이 어떻게 보일 수 있는지입니다.

cn=제임스 스미스, ou=기업 계정, dc=시카고, do=Parkview  

각 DN이 고유하도록 하려면 "+", "/", "=" 및 몇 가지 다른 코드와 같은 다양한 코드를 레코드에 추가할 수 있습니다. 시카고 파크뷰 오피스의 기업 계좌에서 일하는 제임스 스미스가 두 명 있더라도 레코드 이전이나 이후에 공백을 삽입하여 각각 개별 DN을 가질 수 있습니다.

응용 프로그램은 일반적으로 LDAP를 사용하여 사용자가 급여 부서에서 올바른 연락처를 찾아 검사에서 실수에 대해 이야기할 때와 같은 특정 DN에 대한 쿼리를 보낼 수 있도록 합니다. LDAP 주사는 검색 쿼리에서 사용자가 제공한 매개 변수에 대한 유효성 검사가 없을 때 발생할 수 있습니다. 이 경우 해커는 양성 검색을 조작하여 인증 메커니즘을 우회하거나 추가 임의 쿼리를 실행할 수 있습니다. 이렇게 하면 서버가 사용자 암호와 같이 허용되지 않아야 하는 결과를 표시하도록 속이거나 유효한 암호 가 있거나 없는 네트워크 내의 보안이 높은 영역에 대한 액세스 권한을 응용 프로그램을 부여할 수도 있습니다.

LDAP 주사가 왜 그렇게 위험한가요?

LDAP 주사의 가장 큰 위험은 전 세계 IP 컴퓨터 네트워크의 대부분에 걸쳐 프로토콜의 확산 가능성이 높습니다. 그것은 정보를 훔치려는 해커를위한 쉬운 디딤돌, 또는 네트워크에서 자신의 권한을 높이기 위해 합니다. LDAP 주사가 가능한지 확인하지 않으므로 보안 팀은 해당 구멍이 항상 닫혀 있는지 확인해야 합니다.

특히 유효한 사용자가 조직 내의 사용자 및 그룹 또는 DN에 포함된 기타 정보에 대한 제한된 정보를 찾을 수 있도록 많은 응용 프로그램이 프로그래밍됩니다. 예를 들어, 앱을 통해 누군가가 LDAP를 사용하여 시카고에서 일하는 기업 회계사의 연락처 정보를 검색할 수 있으며, 이는 위의 예에서 친구 제임스 스미스를 반환합니다. 사용 권한에 따라 LDAP 쿼리를 완벽하게 사용할 수 있습니다.

악의적인 사용자가 쿼리를 필터링하지 않은 매개 변수를 추가하여 검색의 특성을 변경하고 서버를 속여 일반적으로 제공해서는 안 되는 정보를 제공할 수 있습니다. 예를 들어 사용자=* 문자열을 추가하면 공격자는 전체 조직의 모든 단일 사용자에 대한 정보를 얻을 수 있으며, 이는 허용되지 않을 수 있습니다.

인증에 LDAP를 사용하는 응용 프로그램의 경우 문제가 더욱 악화될 수 있습니다. 예를 들어 공격자는 LDAP 쿼리 끝에 있는 (&) 문자열을 사용하여 서버를 속여 인수가 사실이라고 생각할 수 있습니다. 앱이 LDAP를 사용하여 암호의 유효성을 검사하는 경우 LDAP 주입을 통해 True 인수를 강제로 사용하면 권한이 없는 사용자가 암호 없이도 관리자로 네트워크에 로그인할 수 있습니다.

LDAP 주입을 네트워크에 L-DON't 만들기

LDAP 주사를 방지 하는 가장 좋은 방법 중 하나는 LINQtoAD 또는 그것을 저항 하기 위해 특별히 설계 된 다른 프레임 워크 같은 것을 구현 하는. 네트워크에 LDAP 쿼리를 활용하는 응용 프로그램이 이미 있는 경우 이 작업을 불가능할 수 있습니다. 그러나, 이 경우에도, 그것은 여전히 앞으로 주입 저항 하는 프레임 워크를 사용 하는 모든 새로운 응용 프로그램에 대 한 좋은 생각.

LDAP를 사용하는 기존 응용 프로그램은 화이트리스트 유효성 검사 및 입력 소독을 사용하여 주사에 대해 강화할 수도 있습니다. 가능한 경우 사용자 입력을 제한된 신뢰할 수 있는 값 집합으로 제한합니다. 그렇지 않으면 LDAP 쿼리의 일부인 사용자 입력은 먼저 소독되어야 하며 GET 및 POST 매개 변수, 쿠키 및 HTTP 헤더를 공격 벡터로 사용할 수 있으므로 포함시키는 것을 잊지 마세요. 입력 소독을 수행하기 위해 자신의 함수를 작성하지 마십시오. 신뢰할 수 있는 타사 보안 포커스 라이브러리 또는 기본 제공 프레임워크 API를 대신 사용합니다.

대상 수정 프로그램 외에도 LDAP 쿼리 응용 프로그램에 할당하는 것과 같은 좋은 컴퓨팅 관행도 네트워크에서 필요한 최소한의 권한을 도움이 될 수 있습니다. 그런 식으로, 최악의 일이 발생하고 LDAP 주입을 통해 얻을 경우, 피해는 완화 될 것이다.

LDAP 주사에 대한 자세한 정보

추가 읽기에 대 한, LDAP 주사에 OWASP 쓰기를 살펴 볼 수 있습니다., 또는 주사 방지 치트 시트. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.