웹 공격은 데이터 도용, 서비스 중단, 사용자 속임수 또는 기타 악의적인 목적으로 웹사이트, 네트워크 서비스 또는 웹 애플리케이션을 목표로 하는 악성 활동을 의미합니다. 디지털 시대에 사이버 보안은 기업과 개인 사용자 모두가 무시할 수 없는 중요한 문제로 떠올랐습니다. 웹 공격 방법이 계속 진화함에 따라 일반적인 웹 공격을 이해하고 방어하는 것이 특히 중요해졌습니다. 궁극적인 목표는 웹 애플리케이션의 원활한 운영을 유지하여 기업과 사용자가 네트워크 손상, 데이터 도난 및 비윤리적인 경쟁 행위를 예방할 수 있도록 하는 것입니다.
웹 애플리케이션은 공격자의 목표, 대상 조직의 작업 성격 및 웹 애플리케이션의 특정 보안 취약점에 따라 다양한 공격 유형 및 방법에 직면할 수 있습니다. 일반적인 공격 유형에는 다음이 포함됩니다:
분산 서비스 거부(DDoS)는 일반적인 사이버 공격 방법입니다. 그 목적은 서버를 요청으로 과부하 시켜 정상 사용자의 들어오는 요청을 서비스하지 못하도록 하는 것입니다. DDoS 공격은 여러 가지 방식으로 분류될 수 있지만, 일반적으로 세 가지 유형으로 나눕니다:
대부분의 공격이 볼륨 기반이지만, '저속 및 느림' DDoS 공격도 존재하여 소량의 안정적인 요청 스트림을 보내서 오랜 기간 동안 눈에 띄지 않게 성능을 저하시킬 수 있습니다. 저속 및 느림 공격은 스레드 기반 웹 서버를 타겟으로 하여 데이터가 정상 사용자에게 매우 느리게 전송되지만 타임아웃 오류를 일으키기에는 충분히 느리지 않은 상태로 유지됩니다. 저속 및 느림 공격에 사용되는 도구로는 Slowloris, R.U.D.Y., Sockstress 등이 있습니다.
CSRF 공격은 웹사이트가 사용자의 브라우저를 신뢰하는 것을 악용합니다. 공격자는 로그인한 사용자가 링크를 클릭하거나 페이지를 방문하게 유도하여 사용자의 지식 없이 다른 로그인된 웹사이트에서 악의적인 행동을 수행합니다.
성공적인 CSRF 공격에서는 공격자가 피해자 사용자에게 의도치 않게 행동하도록 유도합니다. 예를 들어, 이는 사용자의 계정에서 이메일 주소를 변경하거나 비밀번호를 변경하거나 자금을 이체하는 것일 수 있습니다. 행동의 성격에 따라 공격자는 사용자의 계정을 완전히 제어할 수 있게 될 수 있습니다. 만약 손상된 사용자가 애플리케이션 내에서 특권 역할을 가지고 있다면, 공격자는 애플리케이션의 모든 데이터와 기능을 완전히 제어할 수 있는 기회를 가질 수 있습니다. CSRF 공격이 가능하려면 세 가지 주요 조건이 충족되어야 합니다:
예를 들어, 애플리케이션에 사용자가 자신의 계정에서 이메일 주소를 변경할 수 있는 기능이 있다고 가정해 보겠습니다. 사용자가 이 행동을 수행할 때, 다음과 같은 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에 필요한 조건을 충족합니다:
이러한 조건이 충족되면 공격자는 다음과 같은 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>
피해자가 공격자의 웹 페이지를 방문하면 다음과 같은 일이 발생합니다:
크로스 사이트 스크립팅(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을 사용하여 공격을 전달할 수 있게 됩니다.
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 인젝션 공격에 취약하다는 것을 나타낼 수 있습니다.
앞서 언급했듯이, 웹 애플리케이션은 다양한 수단과 유형으로 공격받습니다. 따라서 방어 전략 또한 다양하고 변화하고 있습니다. 시스템 취약점과 공격 방법이 지속적으로 업그레이드됨에 따라 현대 인터넷의 위협 상황은 매우 심각합니다. 특정 비즈니스 요구 사항을 충족하는 "칩" 보안 서비스 없이 기업, 단체 또는 개인은 공격받을 위험이 높습니다.
엣지 보안 가속 플랫폼 EO(텐센트 엣지원, 이하 엣지원)는 여러 도시에 걸쳐 운영되는 글로벌 네트워크를 운영합니다. 이는 텐센트의 엣지 컴퓨팅 노드를 기반으로 하여 DDoS 보호, 웹 애플리케이션 방화벽, 봇 관리 및 기타 보안 솔루션을 포함한 가속 및 다양한 보안 서비스를 제공합니다. 이는 전자 상거래 및 소매, 금융 서비스, 콘텐츠 정보 및 게임 산업을 보호하여 사용자 경험을 향상시킵니다.
엣지원은 모든 데이터 센터에서 작동할 수 있어 공격을 원천에서 차단합니다. 그 기능은 웹사이트의 서비스와 성능을 보완하여, 이를 사용하면 서비스 속도를 높일 뿐만 아니라 더 많은 웹 공격으로부터 보호할 수 있습니다. 또한 모든 엣지원 서비스는 다양한 웹 인프라에 적합하며 대개 간단한 구성으로 시작할 수 있습니다.
더 자세한 내용을 보려면 가속 서비스 및 접근 보안 서비스, 또는 엣지원에 가입하세요. 현재 무료 체험이 진행 중이며, 여기를 클릭하십시오 또는 문의하십시오 더 많은 정보를 얻으세요.