가장 일반적인 웹 보안 취약점 10가지

OWASP 또는 Open Web Security Project는 소프트웨어와 웹 애플리케이션의 보안을 개선하는 데 중점을 둔 비영리 자선 단체입니다.

조직은 다양한 보안 조직의 데이터를 기반으로 주요 웹 보안 취약점 목록을 게시합니다.

웹 보안 취약점은 악용 가능성, 탐지 가능성, 소프트웨어에 미치는 영향에 따라 우선순위가 결정됩니다.

  • 악용 가능성 –보안 취약점을 악용하려면 무엇이 필요합니까? 공격에 웹 브라우저만 필요할 때 악용 가능성이 가장 높고 고급 프로그래밍 및 도구가 가장 낮습니다.
  • 탐지 가능성 – 위협을 감지하는 것이 얼마나 쉬운가요? 가장 높은 것은 URL, 폼 또는 오류 메시지에 표시된 정보이고 가장 낮은 것은 소스 코드입니다.
  • 충격 또는 손상 –보안 취약점이 노출되거나 공격을 받으면 얼마나 큰 피해를 입게 될까요? 가장 높은 것은 완전한 시스템 충돌이고 가장 낮은 것은 전혀 아무것도 아닙니다.

OWASP Top 10의 주요 목적은 개발자, 설계자, 관리자, 설계자 및 조직을 대상으로 가장 중요한 보안 취약점에 대해 교육하는 것입니다.

OWASP Top 10에 따른 상위 10개 보안 취약점은 다음과 같습니다.

SQL 주입

SQL 주입

상품 설명

주입은 공격자가 백엔드를 변경할 수 있는 보안 취약점입니다. SQL 사용자가 제공한 데이터를 조작하여 명령문을 작성합니다.

주입은 사용자 입력이 명령 또는 쿼리의 일부로 인터프리터에 전송되고 인터프리터가 의도하지 않은 명령을 실행하도록 속이고 승인되지 않은 데이터에 대한 액세스 권한을 부여할 때 발생합니다.

웹 애플리케이션에서 실행될 때 SQL 명령은 백엔드 데이터베이스를 노출할 수도 있습니다.

함축

  • 공격자는 취약한 필드에 악성 콘텐츠를 주입할 수 있습니다.
  • 사용자 이름, 비밀번호 등과 같은 민감한 데이터를 데이터베이스에서 읽을 수 있습니다.
  • 데이터베이스 데이터를 수정할 수 있습니다(삽입/업데이트/삭제).
  • 행정실 Opera데이터베이스에서 실행될 수 있습니다.

취약한 개체

  • 입력 필드
  • 데이터베이스와 상호작용하는 URL.

예 :

유효한 자격 증명 없이 애플리케이션에 로그인합니다.

유효한 사용자 이름을 사용할 수 있지만 비밀번호를 사용할 수 없습니다.

테스트 URL: http://demo.testfire.net/default.aspx

사용자 이름: sjones

비밀번호: 1=1′ 또는 pass123

아래와 같이 SQL 쿼리가 생성되어 Interpreter로 전송됩니다.

SELECT * FROM 사용자 WHERE User_Name = sjones AND 비밀번호 = 1=1′ 또는 pass123;

추천

  1. 입력 필드를 흰색으로 나열
  2. 공격자에게 유용한 자세한 오류 메시지를 표시하지 마세요.

교차 사이트 스크립팅

상품 설명

크로스 사이트 스크립팅(Cross Site Scripting)은 줄여서 XSS라고도 합니다.

XSS 취약점은 서버 측이 아닌 클라이언트 측, 즉 사용자 브라우저에서 실행되는 페이지에 포함된 스크립트를 대상으로 합니다. 이러한 결함은 애플리케이션이 신뢰할 수 없는 데이터를 가져와 적절한 검증 없이 웹 브라우저로 보낼 때 발생할 수 있습니다.

공격자는 XSS를 사용하여 이 경우 피해자 브라우저에서 사용자에게 악성 스크립트를 실행할 수 있습니다. 브라우저는 스크립트가 신뢰할 수 있는지 여부를 알 수 없기 때문에 스크립트가 실행되며, 공격자는 세션 쿠키를 가로채거나 웹사이트를 훼손하거나 사용자를 원치 않는 악성 웹사이트로 리디렉션할 수 있습니다.

XSS는 공격자가 피해자의 브라우저에서 스크립트를 실행할 수 있도록 하는 공격입니다.

함축:

  • 이 보안 취약점을 이용하여 공격자는 응용 프로그램에 스크립트를 삽입하고, 세션 쿠키를 훔치고, 웹사이트를 훼손하고, 피해자의 컴퓨터에서 악성 코드를 실행할 수 있습니다.

취약한 개체

  • 입력 필드
  • URL이

1. http://www.vulnerablesite.com/home?”<script>alert(“xss”)</script>

위 스크립트를 브라우저에서 실행하면 사이트가 XSS에 취약할 경우 메시지 상자가 표시됩니다.

공격자가 세션 쿠키를 표시하거나 저장하려는 경우 더 심각한 공격이 수행될 수 있습니다.

2. http://demo.testfire.net/search.aspx?txtSearch <iframe> http://google.com 너비 = 500 높이 500>

위 스크립트를 실행하면 브라우저는 다음을 가리키는 보이지 않는 프레임을 로드합니다. http://google.com.

브라우저에서 악성 스크립트를 실행하면 공격이 심각해질 수 있습니다.

추천

  1. 화이트리스트 입력 필드
  2. 입력 출력 인코딩

손상된 인증 및 세션 관리

상품 설명

웹사이트는 일반적으로 각 유효한 세션에 대해 세션 쿠키와 세션 ID를 생성하며 이러한 쿠키에는 사용자 이름, 비밀번호 등과 같은 민감한 데이터가 포함됩니다. 로그아웃하거나 브라우저가 갑자기 닫혀 세션이 종료되면 각 세션에 대해 이러한 쿠키가 무효화되어야 합니다. 새로운 쿠키가 있어야 합니다.

쿠키가 무효화되지 않으면 민감한 데이터가 시스템에 존재하게 됩니다. 예를 들어, 공용 컴퓨터(사이버 카페)를 사용하는 사용자는 취약한 사이트의 쿠키가 시스템에 남아 공격자에게 노출됩니다. 공격자가 일정 시간이 지난 후 동일한 공용 컴퓨터를 사용하면 민감한 데이터가 손상됩니다.

마찬가지로, 공용 컴퓨터를 사용하는 사용자는 로그오프하는 대신 갑자기 브라우저를 닫습니다. 공격자는 동일한 시스템을 사용하므로 동일한 취약한 사이트를 탐색하면 피해자의 이전 세션이 열립니다. 공격자는 프로필 정보, 신용카드 정보 등을 훔치는 것까지 원하는 모든 것을 할 수 있습니다.

인증 및 세션 관리의 강도를 확인해야 합니다. 키, 세션 토큰, 쿠키는 비밀번호를 손상시키지 않고 올바르게 구현되어야 합니다.

취약한 개체

  • URL에 노출된 세션 ID는 세션 고정 공격으로 이어질 수 있습니다.
  • 로그아웃 및 로그인 전후의 세션 ID는 동일합니다.
  • 세션 시간 초과가 올바르게 구현되지 않았습니다.
  • 애플리케이션은 각각의 새 세션에 대해 동일한 세션 ID를 할당합니다.
  • 애플리케이션의 인증된 부분은 SSL을 사용하여 보호되며 비밀번호는 해시 또는 암호화된 형식으로 저장됩니다.
  • 권한이 낮은 사용자도 세션을 재사용할 수 있습니다.

함축

  • 이 취약점을 이용하여 공격자는 세션을 하이재킹하고 무단 정보를 공개하고 수정할 수 있는 시스템에 무단 액세스할 수 있습니다.
  • 세션은 도난당한 쿠키를 사용하거나 XSS를 사용하여 세션을 하이재킹할 수 있습니다.

  1. 항공 예약 애플리케이션은 URL 재작성을 지원하여 URL에 세션 ID를 입력합니다.http://Examples.com/sale/saleitems;jsessionid=2P0OC2oJM0DPXSNQPLME34SERTBG/dest=Maldives (몰디브행 티켓 판매) 사이트의 인증된 사용자가 친구들에게 판매 사실을 알리고 싶어서 이메일을 보냅니다. 친구들은 세션 ID를 받고 무단 수정을 하거나 저장된 신용카드 정보를 오용하는 데 사용할 수 있습니다.
  2. 응용 프로그램은 공격자가 세션 ID에 액세스하고 세션을 하이재킹하는 데 사용될 수 있는 XSS에 취약합니다.
  3. 애플리케이션 타임아웃이 제대로 설정되지 않았습니다. 사용자는 공용 컴퓨터를 사용하고 로그오프하는 대신 브라우저를 닫고 떠납니다. 공격자는 얼마 후에 동일한 브라우저를 사용하고 세션이 인증됩니다.

추천

  1. 모든 인증 및 세션 관리 요구 사항은 OWASP 애플리케이션 보안 검증 표준에 따라 정의되어야 합니다.
  2. URL이나 로그에 자격 증명을 노출하지 마십시오.
  3. 세션 ID를 훔치는 데 사용될 수 있는 XSS 취약점을 피하기 위해 강력한 노력을 기울여야 합니다.

안전하지 않은 직접 개체 참조

상품 설명

이는 개발자가 URL이나 FORM 매개변수와 같이 파일, 디렉터리 또는 데이터베이스 키와 같은 내부 구현 개체에 대한 참조를 노출할 때 발생합니다. 공격자는 이 정보를 사용하여 다른 개체에 액세스할 수 있으며 향후 승인되지 않은 데이터에 액세스하는 공격을 생성할 수 있습니다.

함축

  • 이 취약점을 이용하여 공격자는 승인되지 않은 내부 개체에 접근할 수 있고, 데이터를 수정하거나 애플리케이션을 손상시킬 수 있습니다.

취약한 개체

  • URL에 있습니다.

예 :

다음 URL에서 "userid"를 변경하면 공격자가 다른 사용자의 정보를 볼 수 있습니다.

http://www.vulnerablesite.com/userid=123 다음으로 수정됨 http://www.vulnerablesite.com/userid=124

공격자는 사용자 ID 값을 변경함으로써 다른 사람의 정보를 볼 수 있다.

권장 사항 :

  1. 액세스 제어 검사를 구현합니다.
  2. URL에 개체 참조가 노출되지 않도록 하세요.
  3. 모든 참조 객체에 대한 인증을 확인합니다.

사이트 간 요청 위조

상품 설명

크로스 사이트 요청 위조(Cross Site Request Forgery)는 크로스 사이트에서 온 위조된 요청입니다.

CSRF 공격은 악성 웹사이트, 이메일 또는 프로그램으로 인해 사용자의 브라우저가 현재 사용자가 인증된 신뢰할 수 있는 사이트에서 원치 않는 작업을 수행하도록 하는 공격입니다.

CSRF 공격은 로그온한 피해자의 브라우저가 피해자의 세션 쿠키와 자동으로 포함된 기타 인증 정보를 포함하여 위조된 HTTP 요청을 취약한 웹 애플리케이션에 보내도록 강제합니다.

사용자가 원래 웹사이트에 로그인한 상태에서 해당 URL을 클릭하면 공격자는 피해자에게 링크를 전송하게 되며, 해당 웹사이트에서 데이터가 도난당하게 됩니다.

함축

  • 공격자는 이 취약점을 이용하여 사용자 프로필 정보 변경, 상태 변경, 관리자를 대신하여 새 사용자 생성 등을 할 수 있습니다.

취약한 개체

  • 사용자 프로필 페이지
  • 사용자 계정 양식
  • 비즈니스 거래 페이지

피해자는 유효한 자격 증명을 사용하여 은행 웹사이트에 로그인했습니다. 그는 공격자로부터 "여기를 클릭하여 1달러를 기부해 주세요"라는 메일을 받았습니다.

피해자가 이를 클릭하면 특정 계정에 1달러를 기부하라는 유효한 요청이 생성됩니다.

http://www.vulnerablebank.com/transfer.do?account=cause&amount=1

공격자는 이 요청을 캡처하여 아래 요청을 생성하고 "I Support Cause"라는 버튼에 삽입합니다.

http://www.vulnerablebank.com/transfer.do?account=Attacker&amount=1000

세션이 인증되고 요청이 은행 웹사이트를 통해 들어오기 때문에 서버는 공격자에게 $1000를 이체합니다.

추천

  1. 민감한 작업을 수행하는 동안 사용자의 존재를 요구합니다.
  2. CA와 같은 메커니즘 구현PTCHA, 재인증 및 고유 요청 토큰.

보안 구성 오류

상품 설명

보안 구성은 애플리케이션, 프레임워크, 애플리케이션 서버, 웹 서버, 데이터베이스 서버 및 플랫폼에 대해 정의되고 배포되어야 합니다. 이것들이 적절하게 구성되면 공격자는 민감한 데이터나 기능에 대한 무단 액세스를 가질 수 있습니다.

때때로 이러한 결함으로 인해 시스템이 완전히 손상되는 경우도 있습니다. 소프트웨어를 최신 상태로 유지하는 것도 보안에 좋습니다.

함축

  • 공격자는 이 취약점을 이용하여 기반 기술과 애플리케이션 서버 버전 정보, 데이터베이스 정보를 열거하고 애플리케이션에 대한 정보를 획득하여 몇 번의 추가 공격을 가할 수 있습니다.

취약한 개체

  • URL
  • 양식 필드
  • 입력 필드

  1. 애플리케이션 서버 관리 콘솔은 자동으로 설치되며 제거되지 않습니다. 기본 계정은 변경되지 않습니다. 공격자는 기본 비밀번호로 로그인하여 무단 액세스를 얻을 수 있습니다.
  2. 귀하의 서버에서는 디렉토리 목록이 비활성화되어 있지 않습니다. 공격자는 디렉터리를 검색하고 간단히 나열하여 파일을 찾을 수 있습니다.

추천

  1. 구성 요소 간에 우수한 분리와 보안을 제공하는 강력한 애플리케이션 아키텍처입니다.
  2. 기본 사용자 이름과 비밀번호를 변경합니다.
  3. 디렉토리 목록을 비활성화하고 액세스 제어 검사를 구현합니다.

안전하지 않은 암호화 저장소

상품 설명

안전하지 않은 암호화 저장소는 중요한 데이터가 안전하게 저장되지 않을 때 존재하는 일반적인 취약성입니다.

사용자 인증 정보, 프로필 정보, 건강 정보, 신용카드 정보 등은 웹사이트의 민감한 데이터 정보에 해당합니다.

이 데이터는 애플리케이션 데이터베이스에 저장됩니다. 이 데이터가 암호화나 해싱*을 사용하지 않고 부적절하게 저장되면 공격자에게 취약해집니다.

(*해싱은 문자열 문자를 고정 길이의 짧은 문자열이나 키로 변환하는 것입니다. 문자열을 해독하려면 키를 형성하는 데 사용되는 알고리즘을 사용할 수 있어야 합니다.)

함축

  • 공격자는 이 취약점을 이용하여 취약하게 보호되는 데이터를 훔치거나 수정하여 신원 도용, 신용 카드 사기 또는 기타 범죄를 수행할 수 있습니다.

취약한 개체

  • 애플리케이션 데이터베이스.

뱅킹 애플리케이션 중 하나에서 비밀번호 데이터베이스는 무염 해시 *를 사용하여 모든 사람의 비밀번호를 저장합니다. SQL 주입 결함으로 인해 공격자가 비밀번호 파일을 검색할 수 있습니다. 솔트 처리되지 않은 모든 해시는 즉시 무차별 공격을 받을 수 있지만 솔트 처리된 비밀번호는 수천 년이 걸립니다.

(*Unsalted Hashes - Salt는 원본 데이터에 추가된 임의의 데이터입니다. Salt는 해싱 전에 비밀번호에 추가됩니다.)

추천

  1. 적절한 강력한 표준 알고리즘을 보장하세요. 자체 암호화 알고리즘을 만들지 마세요. AES, RSA 공개 키 암호화, SHA-256 등과 같은 승인된 공개 알고리즘만 사용하세요.
  2. 오프사이트 백업은 암호화하되 키는 별도로 관리하고 백업해야 합니다.

URL 액세스 제한 실패

상품 설명

웹 애플리케이션은 보호된 링크와 버튼을 렌더링하기 전에 URL 액세스 권한을 확인합니다. 애플리케이션은 이러한 페이지에 액세스할 때마다 유사한 액세스 제어 검사를 수행해야 합니다.

대부분의 응용 프로그램에서는 권한이 있는 페이지, 위치 및 리소스가 권한이 있는 사용자에게 표시되지 않습니다.

지능적인 추측을 통해 공격자는 권한 페이지에 액세스할 수 있습니다. 공격자는 민감한 페이지에 접근하여 기능을 호출하고 기밀 정보를 볼 수 있습니다.

함축

  • 이 취약점을 이용하면 공격자는 애플리케이션에 로그인하지 않고도 승인되지 않은 URL에 액세스하여 취약점을 악용할 수 있습니다. 공격자는 민감한 페이지에 접근하여 기능을 호출하고 기밀 정보를 볼 수 있습니다.

취약한 개체:

  • URL이

  1. 공격자는 URL이 "/user/getaccounts" 역할을 나타내는 것을 알아차립니다. 그는 "/admin/getaccounts"로 수정합니다.
  2. 공격자는 URL에 역할을 추가할 수 있습니다.

http://www.vulnerablsite.com 다음과 같이 수정될 수 있습니다. http://www.vulnerablesite.com/admin

추천

  1. 강력한 접근 제어 검사를 구현합니다.
  2. 인증 및 권한 부여 정책은 역할 기반이어야 합니다.
  3. 원치 않는 URL에 대한 액세스를 제한합니다.

불충분한 전송 계층 보호

상품 설명

사용자(클라이언트)와 서버(애플리케이션) 간의 정보 교환을 다룹니다. 애플리케이션은 인증 세부 정보, 신용 카드 정보, 세션 토큰과 같은 민감한 정보를 네트워크를 통해 자주 전송합니다.

취약한 알고리즘을 사용하거나 만료되었거나 유효하지 않은 인증서를 사용하거나 SSL을 사용하지 않으면 통신이 신뢰할 수 없는 사용자에게 노출될 수 있으며, 이로 인해 웹 애플리케이션이 손상되거나 중요한 정보가 도용될 수 있습니다.

함축

  • 이 웹 보안 취약점을 이용하여 공격자는 합법적인 사용자의 자격 증명을 스니핑하고 애플리케이션에 대한 액세스 권한을 얻을 수 있습니다.
  • 신용카드 정보를 훔칠 수 있습니다.

취약한 개체

  • 네트워크를 통해 전송된 데이터입니다.

추천

  1. 보안 HTTP를 활성화하고 HTTPS를 통해서만 자격 증명 전송을 시행합니다.
  2. 인증서가 유효하고 만료되지 않았는지 확인하세요.

예 :

1. SSL을 사용하지 않는 애플리케이션의 경우 공격자는 단순히 네트워크 트래픽을 모니터링하고 인증된 피해자 세션 쿠키를 관찰합니다. 공격자는 해당 쿠키를 훔쳐서 중간자 공격을 수행할 수 있습니다.

검증되지 않은 리디렉션 및 전달

상품 설명

웹 애플리케이션은 의도된 목적을 위해 사용자를 다른 페이지로 리디렉션하고 전달하기 위해 몇 가지 방법을 사용합니다.

다른 페이지로 리디렉션하는 동안 적절한 유효성 검사가 없으면 공격자는 이를 악용하여 피해자를 피싱 또는 악성 코드 사이트로 리디렉션하거나 전달을 사용하여 승인되지 않은 페이지에 액세스할 수 있습니다.

함축

  • 공격자는 인코딩된 악성 URL이 첨부된 실제 URL이 포함된 URL을 사용자에게 보낼 수 있습니다. 사용자는 공격자가 보낸 URL의 진짜 부분을 보는 것만으로도 이를 탐색할 수 있고 피해자가 될 수도 있습니다.

1.http://www.vulnerablesite.com/login.aspx?redirectURL=ownsite.com

다음으로 수정됨

http://www.vulnerablesite.com/login.aspx?redirectURL=evilsite.com

추천

  1. 애플리케이션에서 리디렉션 및 전달을 사용하지 마십시오. 사용하는 경우 목적지 계산에 사용자 매개변수를 사용하지 마십시오.
  2. 대상 매개변수를 피할 수 없는 경우 제공된 값이 유효하고 사용자에게 승인되었는지 확인하세요.