learning center banner

웹 공격이란 무엇입니까?

웹 보안 공격 방법, 방어 메커니즘 및 솔루션 제공에 관한 기사

웹 공격은 데이터 도용, 서비스 중단, 사용자 속임수 또는 기타 악의적인 목적으로 웹사이트, 네트워크 서비스 또는 웹 애플리케이션을 목표로 하는 악성 활동을 의미합니다. 디지털 시대에 사이버 보안은 기업과 개인 사용자 모두가 무시할 수 없는 중요한 문제로 떠올랐습니다. 웹 공격 방법이 계속 진화함에 따라 일반적인 웹 공격을 이해하고 방어하는 것이 특히 중요해졌습니다. 궁극적인 목표는 웹 애플리케이션의 원활한 운영을 유지하여 기업과 사용자가 네트워크 손상, 데이터 도난 및 비윤리적인 경쟁 행위를 예방할 수 있도록 하는 것입니다.

웹 공격의 일반적인 수단은 무엇인가요?

웹 애플리케이션은 공격자의 목표, 대상 조직의 작업 성격 및 웹 애플리케이션의 특정 보안 취약점에 따라 다양한 공격 유형 및 방법에 직면할 수 있습니다. 일반적인 공격 유형에는 다음이 포함됩니다:

1. DDoS 공격

분산 서비스 거부(DDoS)는 일반적인 사이버 공격 방법입니다. 그 목적은 서버를 요청으로 과부하 시켜 정상 사용자의 들어오는 요청을 서비스하지 못하도록 하는 것입니다. DDoS 공격은 여러 가지 방식으로 분류될 수 있지만, 일반적으로 세 가지 유형으로 나눕니다:

  • 1. 볼륨 기반 공격: 봇넷이 자원에 대량의 가짜 트래픽을 전송합니다. 이 유형의 공격은 핑 플러드, 스푸핑 패킷 플러드 또는 UDP 플러드를 사용할 수 있습니다. 볼륨 기반 공격은 초당 비트(BPS)로 측정됩니다.
  • 2. 애플리케이션 계층 공격: 애플리케이션 계층 공격은 HTTP GET 및 HTTP POST와 같은 일반 요청을 악용합니다. 이러한 공격은 서버와 네트워크 자원 모두에 영향을 미치므로 다른 유형의 DDoS 공격과 동일한 파괴적 효과를 적은 대역폭으로도 달성할 수 있습니다. 이 계층에서 합법적인 트래픽과 악의적인 트래픽을 구별하는 것은 어렵습니다. 애플리케이션 계층 공격은 초당 요청(RPS)으로 측정됩니다.
  • 3. 네트워크 계층 공격: 네트워크 계층 공격, 또는 프로토콜 공격이라고도 하며, 대상에게 대량의 패킷을 전송합니다. 네트워크 계층 공격은 열린 전송 제어 프로토콜(TCP) 연결이 필요하지 않으며 특정 포트를 타겟으로 하지 않습니다. 네트워크 계층 공격은 초당 패킷(PPS)으로 측정됩니다. 네트워크 계층 공격의 예는 다음과 같습니다:
  1. 스머프 공격: 인터넷 제어 메시지 프로토콜(ICMP) 패킷을 사용하여 서버를 네트워크 수준에서 플러딩하려고 시도하며 IP 취약점을 악용합니다.
  2. SYN 플러드: 서버에 연결을 시작하지만 해당 연결을 종료하지 않아 결과적으로 서버를 압도합니다. 이 유형의 공격은 스푸핑된 IP 주소를 사용하여 방대한 양의 TCP 핸드셰이크 요청을 사용합니다.

대부분의 공격이 볼륨 기반이지만, '저속 및 느림' DDoS 공격도 존재하여 소량의 안정적인 요청 스트림을 보내서 오랜 기간 동안 눈에 띄지 않게 성능을 저하시킬 수 있습니다. 저속 및 느림 공격은 스레드 기반 웹 서버를 타겟으로 하여 데이터가 정상 사용자에게 매우 느리게 전송되지만 타임아웃 오류를 일으키기에는 충분히 느리지 않은 상태로 유지됩니다. 저속 및 느림 공격에 사용되는 도구로는 Slowloris, R.U.D.Y., Sockstress 등이 있습니다.

2. 교차 사이트 요청 위조(CSRF)

 CSRF 공격은 웹사이트가 사용자의 브라우저를 신뢰하는 것을 악용합니다. 공격자는 로그인한 사용자가 링크를 클릭하거나 페이지를 방문하게 유도하여 사용자의 지식 없이 다른 로그인된 웹사이트에서 악의적인 행동을 수행합니다.

성공적인 CSRF 공격에서는 공격자가 피해자 사용자에게 의도치 않게 행동하도록 유도합니다. 예를 들어, 이는 사용자의 계정에서 이메일 주소를 변경하거나 비밀번호를 변경하거나 자금을 이체하는 것일 수 있습니다. 행동의 성격에 따라 공격자는 사용자의 계정을 완전히 제어할 수 있게 될 수 있습니다. 만약 손상된 사용자가 애플리케이션 내에서 특권 역할을 가지고 있다면, 공격자는 애플리케이션의 모든 데이터와 기능을 완전히 제어할 수 있는 기회를 가질 수 있습니다. CSRF 공격이 가능하려면 세 가지 주요 조건이 충족되어야 합니다:

  1. 관련 행동: 공격자가 유도하려는 애플리케이션 내의 행동이 존재해야 합니다. 이는 권한 있는 행동(예: 다른 사용자의 권한 수정) 또는 사용자 특정 데이터에 대한 모든 행동(예: 사용자의 비밀번호 변경)일 수 있습니다.
  2. 쿠키 기반 세션 처리: 행동은 하나 이상의 HTTP 요청을 발행하는 것을 포함하며, 애플리케이션은 요청을 한 사용자를 식별하기 위해 세션 쿠키만을 의존해야 합니다. 세션을 추적하거나 사용자 요청을 검증하기 위한 다른 메커니즘이 없습니다.
  3. 예측 불가능한 요청 매개변수 없음: 행동을 하는 요청에는 공격자가 결정하거나 추측할 수 없는 매개변수 값이 포함되지 않아야 합니다. 예를 들어, 사용자의 비밀번호를 변경하도록 유도할 때, 함수가 기존 비밀번호 값을 알아야 한다면 취약하지 않습니다.

예를 들어, 애플리케이션에 사용자가 자신의 계정에서 이메일 주소를 변경할 수 있는 기능이 있다고 가정해 보겠습니다. 사용자가 이 행동을 수행할 때, 다음과 같은 HTTP 요청을 생성합니다:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE

email=wiener@normal-user.com

이것은 CSRF에 필요한 조건을 충족합니다:

  1. 사용자 계정의 이메일 주소를 변경하는 행동은 공격자에게 흥미로운 행동입니다. 이 행동 이후 공격자는 일반적으로 비밀번호 재설정을 유도하고 사용자의 계정을 완전히 제어할 수 있습니다.
  2. 애플리케이션은 요청을 발행한 사용자를 식별하기 위해 세션 쿠키를 사용합니다. 사용자 세션을 추적하는 다른 토큰이나 메커니즘이 없습니다.
  3. 공격자는 행동을 하기 위해 필요한 요청 매개변수의 값을 쉽게 결정할 수 있습니다.

이러한 조건이 충족되면 공격자는 다음과 같은 HTML을 포함하는 웹 페이지를 구성할 수 있습니다:

<html>
    <body>
        <form action="https://vulnerable-website.com/email/change" method="POST">
            <input type="hidden" name="email" value="pwned@evil-user.net" />
        </form>
        <script>
            document.forms[0].submit();
        </script>
    </body>
</html>

피해자가 공격자의 웹 페이지를 방문하면 다음과 같은 일이 발생합니다:

  1. 공격자의 페이지가 취약한 웹사이트에 HTTP 요청을 트리거합니다.
  2. 사용자가 취약한 웹사이트에 로그인한 경우, 브라우저는 자동으로 세션 쿠키를 요청에 포함합니다(동일 출처 쿠키가 사용되지 않는 경우).
  3. 취약한 웹사이트는 요청을 정상적으로 처리하고 피해자 사용자가 요청한 것으로 간주하여 이메일 주소를 변경합니다.

 3. 크로스 사이트 스크립팅(XSS)

크로스 사이트 스크립팅(XSS)은 공격자가 사용자의 상호작용을 방해할 수 있는 웹 보안 취약점입니다. 이를 통해 공격자는 동일 출처 정책을 우회할 수 있으며, 이는 서로 다른 웹사이트를 분리하는 것을 목표로 합니다. 크로스 사이트 스크립팅 취약점은 일반적으로 공격자가 피해자 사용자로 가장하여 사용자가 수행할 수 있는 모든 행동을 수행하고 사용자의 데이터를 액세스할 수 있도록 허용합니다. 만약 피해자 사용자가 애플리케이션 내에서 특권 접근을 가진 경우, 공격자는 애플리케이션의 모든 기능과 데이터를 완전히 제어할 수 있습니다.

크로스 사이트 스크립팅은 취약한 웹사이트를 조작하여 사용자에게 악성 JavaScript를 반환하게 만듭니다. 악성 코드가 피해자의 브라우저에서 실행되면 공격자는 애플리케이션과의 상호작용을 완전히 침해할 수 있습니다. 크로스 사이트 스크립팅 공격에는 세 가지 주요 유형이 있습니다. 이들은 다음과 같습니다:

반사형 XSS: 악성 스크립트가 현재 HTTP 요청에서 오는 경우.

반사형 XSS는 가장 간단한 형태의 크로스 사이트 스크립팅입니다. 이는 애플리케이션이 HTTP 요청에서 데이터를 수신하고 그 데이터를 즉각적인 응답에 안전하지 않게 포함할 때 발생합니다.

다음은 반사형 XSS 취약점의 간단한 예입니다:

https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>

응용 프로그램이 데이터에 대한 다른 처리를 수행하지 않으므로 공격자는 다음과 같은 공격을 쉽게 구성할 수 있습니다:

https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

사용자가 공격자가 구성한 URL을 방문하면, 공격자의 스크립트가 사용자의 브라우저에서 실행되어 사용자의 애플리케이션 세션 맥락에서 실행됩니다. 이 시점에서 스크립트는 사용자가 액세스할 수 있는 모든 작업을 수행하고 모든 데이터를 검색할 수 있습니다.

저장형 XSS: 악성 스크립트가 웹사이트의 데이터베이스에서 오는 경우.

저장형 XSS(영구적 또는 2차 XSS라고도 함)는 애플리케이션이 신뢰할 수 없는 출처로부터 데이터를 수신하고 이후 HTTP 응답에 안전하지 않게 포함할 때 발생합니다.

문제가 되는 데이터는 HTTP 요청을 통해 애플리케이션에 제출될 수 있습니다. 예를 들어 블로그 게시물의 댓글, 채팅방의 사용자 별명 또는 고객 주문의 연락처 정보 등이 있습니다. 다른 경우에는 데이터가 다른 신뢰할 수 없는 출처로부터 도착할 수 있습니다. 예를 들어, SMTP를 통해 수신된 메시지를 표시하는 웹메일 애플리케이션, 소셜 미디어 게시물을 표시하는 마케팅 애플리케이션 또는 네트워크 트래픽에서 패킷 데이터를 표시하는 네트워크 모니터링 애플리케이션 등이 있습니다.

다음은 저장형 XSS 취약점의 간단한 예입니다. 메시지 게시판 애플리케이션은 사용자가 메시지를 제출할 수 있게 하며, 이는 다른 사용자에게 표시됩니다:

<p>안녕하세요, 이것은 제 메시지입니다!</p>

응용 프로그램이 데이터에 대한 다른 처리를 수행하지 않으므로 공격자는 다음과 같은 메시지를 쉽게 보낼 수 있습니다:

<p><script>/* Bad stuff here... */</script></p>

DOM 기반 XSS: 취약점이 클라이언트 측 코드에 존재하는 경우.

DOM 기반 XSS(또는 DOM XSS)는 애플리케이션에 신뢰할 수 없는 출처의 데이터를 안전하지 않게 처리하는 클라이언트 측 JavaScript가 포함되어 있을 때 발생합니다. 보통 이 데이터는 DOM에 다시 작성됩니다.

다음 예에서 애플리케이션은 입력 필드에서 값을 읽고 해당 값을 HTML 내 요소에 작성하는 JavaScript를 사용합니다:

var search = document.getElementById('search').value; var results = document.getElementById('results'); results.innerHTML = 'You searched for: ' + search;

공격자가 입력 필드의 값을 제어할 수 있다면, 자신이 실행하는 스크립트를 유발하는 악성 값을 쉽게 구성할 수 있습니다:

You searched for: <img src=1 onerror='/* Bad stuff here... */'>

전형적인 경우, 입력 필드는 HTTP 요청의 일부인 URL 쿼리 문자열 매개변수에서 채워져 공격자가 악성 URL을 사용하여 공격을 전달할 수 있게 됩니다.

4. SQL 인젝션 공격(SQLI)

SQL 인젝션(SQLi)은 공격자가 애플리케이션이 데이터베이스에 대해 수행하는 쿼리에 개입할 수 있는 웹 보안 취약점입니다. 이를 통해 공격자는 일반적으로 검색할 수 없는 데이터를 볼 수 있게 됩니다. 이는 다른 사용자에게 속하는 데이터나 애플리케이션이 액세스할 수 있는 기타 데이터가 포함될 수 있습니다. 많은 경우, 공격자는 이 데이터를 수정하거나 삭제할 수 있어 애플리케이션의 내용이나 동작에 지속적인 변경을 초래할 수 있습니다. 어떤 상황에서는 공격자가 SQL 인젝션 공격을 확대하여 기본 서버 또는 기타 백엔드 인프라를 손상시킬 수도 있습니다. 또한 서비스 거부 공격을 수행할 수 있게 됩니다.

성공적인 SQL 인젝션 공격은 비밀번호, 신용 카드 세부정보 및 개인 사용자 정보와 같은 민감한 데이터에 대한 무단 액세스를 초래할 수 있습니다. SQL 인젝션 공격은 수년간 많은 고위험 데이터 유출 사건에 사용되었습니다. 이는 평판 손상 및 규제 벌금의 원인이 되었습니다. 어떤 경우에는 공격자가 조직 시스템에 지속적인 백도어를 얻을 수 있어 장기간 동안 발견되지 않을 수 있습니다.

기본 SQL 인젝션: 애플리케이션의 로그인 양식이 다음 SQL 쿼리를 통해 사용자를 검증한다고 가정해 보겠습니다:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

애플리케이션이 사용자 입력을 제대로 정리하지 않으면, 공격자는 사용자 이름 또는 비밀번호 필드에 특별히 조작된 입력을 입력할 수 있습니다. 예를 들어:

' OR '1'='1

이렇게 하면 SQL 쿼리가 다음과 같이 변환됩니다:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

왜냐하면 '1'='1'은 항상 참이므로, 이 쿼리는 모든 사용자를 반환하여 무단 액세스로 이어질 수 있습니다.

쿼리 종료를 위한 주석 사용: 공격자는 SQL 주석 기호 -- 또는 /* */를 사용하여 쿼리 조건의 일부를 종료시켜 모든 데이터를 조회하는 쿼리를 생성할 수 있습니다. 예를 들어:

' OR 1=1 -- 

이렇게 하면 쿼리의 비밀번호 확인 부분이 주석 처리되어 보안 검사를 우회할 수 있습니다.

유니온 쿼리 인젝션: 공격자는 UNION 연산자를 사용하여 악성 쿼리를 원래 쿼리와 결합할 수 있습니다. 이로 인해 데이터베이스는 추가적인 민감한 정보를 반환할 수 있습니다. 예를 들어:

' UNION SELECT * FROM users WHERE '1' = '1

지연 시간 주입: 공격자는 데이터베이스의 응답을 지연시키는 명령을 삽입하여 애플리케이션의 SQL 인젝션 취약성을 테스트할 수 있습니다. 예를 들어, MySQL에서는:

' OR SLEEP(10) --

이 쿼리를 실행한 후 애플리케이션이 10초 동안 지연된다면, 이는 SQL 인젝션 공격에 취약하다는 것을 나타낼 수 있습니다.

중요한 웹 애플리케이션 방어 전략은 무엇인가요?

앞서 언급했듯이, 웹 애플리케이션은 다양한 수단과 유형으로 공격받습니다. 따라서 방어 전략 또한 다양하고 변화하고 있습니다. 시스템 취약점과 공격 방법이 지속적으로 업그레이드됨에 따라 현대 인터넷의 위협 상황은 매우 심각합니다. 특정 비즈니스 요구 사항을 충족하는 "칩" 보안 서비스 없이 기업, 단체 또는 개인은 공격받을 위험이 높습니다.

  1.  DDoS 보호: DDoS 보호는 악성 트래픽의 급증으로 서비스가 압도될 때 발생합니다. 실시간 네트워크 트래픽 모니터링을 기반으로 DDoS 공격이 감지되면 트래픽이 즉시 정화되고 필터링됩니다. DDoS 보호는 공격 프로필, 행동 패턴 분석, AI 지능 인식 및 기타 보호 알고리즘을 기반으로 사전 설정된 방어 전략을 제공하여 서버가 안정적으로 운영되도록 합니다.
  2. 웹 애플리케이션 방화벽(WAF): WAF는 웹 애플리케이션과 인터넷 간의 HTTP 트래픽을 필터링하고 모니터링하여 웹 애플리케이션의 보안을 보호합니다. 일반적으로 WAF는 교차 사이트 요청 위조, 크로스 사이트 스크립팅(XSS), 파일 포함 및 SQL 인젝션과 같은 다양한 공격으로부터 웹 애플리케이션을 보호합니다. 새로운 취약점이 너무 빠르고 조용하게 나타나기 때문에 WAF는 웹 시스템에 중요합니다. 거의 모든 시스템은 이를 자동으로 포착할 수 없습니다.
  3. 봇 관리(BOT 관리): 머신 러닝 및 기타 전문 탐지 방법을 사용하여 자동화된 트래픽과 인간 사용자를 구별하고 전자를 웹 애플리케이션에 접근하지 못하도록 방지합니다.
  4. 클라이언트 측 보안: 우리의 웹 애플리케이션이 의존하는 새로운 서드파티 JavaScript 종속성 및 서드파티 코드 변경을 확인하여 악성 프론트 엔드 취약점을 보다 빨리 포착하는 데 도움을 줍니다.
  5. 공격 표면 관리: 공격 표면 관리 도구를 사용하여 웹 페이지의 취약점을 매핑하고 테스트하며 잠재적인 보안 위험을 식별하고 이러한 위험의 존재를 수동으로 클릭하여 확인합니다.

텐센트 엣지원은 웹 애플리케이션에 대한 웹 공격을 어떻게 방지하나요?

엣지 보안 가속 플랫폼 EO(텐센트 엣지원, 이하 엣지원)는 여러 도시에 걸쳐 운영되는 글로벌 네트워크를 운영합니다. 이는 텐센트의 엣지 컴퓨팅 노드를 기반으로 하여 DDoS 보호, 웹 애플리케이션 방화벽, 봇 관리 및 기타 보안 솔루션을 포함한 가속 및 다양한 보안 서비스를 제공합니다. 이는 전자 상거래 및 소매, 금융 서비스, 콘텐츠 정보 및 게임 산업을 보호하여 사용자 경험을 향상시킵니다.

엣지원은 모든 데이터 센터에서 작동할 수 있어 공격을 원천에서 차단합니다. 그 기능은 웹사이트의 서비스와 성능을 보완하여, 이를 사용하면 서비스 속도를 높일 뿐만 아니라 더 많은 웹 공격으로부터 보호할 수 있습니다. 또한 모든 엣지원 서비스는 다양한 웹 인프라에 적합하며 대개 간단한 구성으로 시작할 수 있습니다.

더 자세한 내용을 보려면 가속 서비스 및 접근 보안 서비스, 또는 엣지원에 가입하세요. 현재 무료 체험이 진행 중이며, 여기를 클릭하십시오 또는 문의하십시오 더 많은 정보를 얻으세요.