웹 취약점 점검 항목(2편) / 11~20번 항목

지난 웹 취약점 점검 항목(1편)에서 작성된 1~10번 항목에 이어 이번 포스팅 글에서는 11번에서부터 20번 항목까지의 기술 포스팅을 작성하겠습니다.

지난글: 웹 취약점 점검 항목(1편) / 1~10번 항목 | Tech Hyeonker

* 근거: 주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세가이드(2021)

목차

11. 크로스 사이트 스크립팅(XS)

점검 내용:

크로스 사이트 스크립팅(XSS)은 웹 애플리케이션에서 사용자의 입력을 통해 악성 스크립트를 삽입하는 공격을 의미합니다. 공격자가 삽입한 스크립트는 다른 사용자들에게 전달되어 실행될 수 있으며, 이로 인해 사용자의 브라우저나 세션 정보가 노출될 수 있습니다.

점검 목적:

  • 사용자 보호: XSS 취약점을 식별하여 사용자의 개인 정보와 세션 정보를 보호합니다.
  • 웹 애플리케이션 안전성 강화: 악성 스크립트가 삽입되는 것을 방지하여 웹 애플리케이션의 안전성을 강화합니다.

보안위협:

XSS 공격은 다음과 같은 위험을 초래할 수 있습니다:

  • 개인 정보 유출: 사용자의 브라우저에서 실행되는 스크립트로 인해 개인 정보가 노출될 수 있음
  • 세션 탈취: 공격자가 사용자의 세션 쿠키 등을 탈취하여 사용자 계정을 침해할 수 있음

대상:

웹 애플리케이션에서 사용자 입력이 출력되는 모든 부분 (웹 페이지, URL 매개변수, 쿠키, HTTP 헤더 등)

판단기준:

양호 (Good):

  • 모든 사용자 입력이 안전하게 이스케이프 처리되어 출력되는 경우

취약 (Vulnerable):

  • 사용자 입력이 이스케이프 처리되지 않고 그대로 출력되는 경우

조치방법:

  1. 이스케이프 처리: 사용자 입력을 출력하기 전에 이스케이프 처리하여 스크립트 실행을 방지합니다.
  2. 입력 검증: 입력 값의 형식을 검증하여 악성 스크립트가 삽입되지 않도록 합니다.
  3. 콘텐츠 보안 정책: Content Security Policy (CSP)를 사용하여 허용된 스크립트만 실행되도록 설정합니다.

예시 구문 (XSS 취약점):

가정: 웹 애플리케이션에서 사용자 입력을 이스케이프 처리하지 않고 출력하는 경우를 가정합니다.

<div><?php echo $_GET['user_input']; ?></div>

예시 구문 (XSS 방지):

가정: 웹 애플리케이션에서 사용자 입력을 이스케이프 처리하여 출력하는 경우를 가정합니다.

<?php
$user_input = htmlspecialchars($_GET['user_input'], ENT_QUOTES, 'UTF-8');
?>
<div><?php echo $user_input; ?></div>

위의 예시 코드에서는 XSS 취약점과 XSS 방지 방법을 나타내고 있습니다.

12. 약한 문자열 강도(BF)

점검 내용:

약한 문자열 강도란 사용자의 비밀번호나 인증 토큰 등의 중요한 정보가 충분한 강도로 암호화되지 않아 해커가 쉽게 노출시킬 수 있는 상태를 의미합니다. 약한 문자열 강도는 공격자에게 사용자 계정에 접근하거나 시스템을 침해하는 기회를 제공할 수 있습니다.

점검 목적:

  • 사용자 보호: 약한 문자열 강도를 식별하여 사용자의 중요 정보를 안전하게 보호합니다.
  • 보안 강화: 강력한 암호화를 통해 시스템의 안전성을 강화하고 해킹 시도를 방지합니다.

보안위협:

약한 문자열 강도는 다음과 같은 위험을 초래할 수 있습니다:

  • 계정 침해: 악의적인 공격자가 약한 비밀번호를 통해 사용자 계정에 접근할 수 있음
  • 정보 유출: 중요 정보가 충분히 강력하게 암호화되지 않아 해커에게 노출될 수 있음

대상:

사용자 비밀번호, 인증 토큰, 중요한 정보 등 모든 종류의 중요한 문자열

판단기준:

양호 (Good):

  • 강력한 암호화 기법을 사용하여 중요한 문자열이 안전하게 저장되는 경우

취약 (Vulnerable):

  • 중요한 문자열이 충분한 강도의 암호화 없이 저장되거나 전송되는 경우

조치방법:

  1. 강력한 암호화: 중요한 문자열을 강력한 암호화 알고리즘을 사용하여 저장하거나 전송합니다.
  2. 암호 정책 강화: 사용자에게 강력한 암호를 요구하고 정기적으로 변경을 권장합니다.
  3. 2단계 인증: 중요한 정보에 2단계 인증을 적용하여 보안을 강화합니다.

예시 구문 (약한 문자열 강도 취약점):

가정: 웹 애플리케이션에서 사용자 비밀번호를 평문으로 저장하는 경우를 가정합니다.

$password = $_POST['user_password'];
$query = "INSERT INTO users (password) VALUES ('$password')"; // 취약점 발생: 비밀번호가 약한 강도로 저장됨

예시 구문 (약한 문자열 강도 방지):

가정: 웹 애플리케이션에서 사용자 비밀번호를 강력한 암호화 기법을 사용하여 저장하는 경우를 가정합니다.

$password = password_hash($_POST['user_password'], PASSWORD_BCRYPT);
$query = "INSERT INTO users (password) VALUES ('$password')"; // 안전한 방식으로 비밀번호가 저장됨

위의 예시 코드에서는 약한 문자열 강도 취약점과 방지 방법을 나타내고 있습니다.

13. 불충분한 인증(IA)

점검 내용:

불충분한 인증은 사용자가 적절한 인증 절차를 거치지 않고도 시스템에 접근하거나 특정 기능을 사용할 수 있는 취약점을 의미합니다. 이는 공격자에게 무단 접근의 가능성을 열어두고 중요한 데이터나 기능의 노출을 초래할 수 있습니다.

점검 목적:

  • 사용자 보호: 불충분한 인증 취약점을 식별하여 무단 접근을 방지하고 중요한 기능과 데이터를 보호합니다.
  • 시스템 보안 강화: 적절한 인증 절차를 통해 시스템의 안전성을 강화하고 불충분한 인증으로부터의 위험을 최소화합니다.

보안위협:

불충분한 인증은 다음과 같은 위험을 초래할 수 있습니다:

  • 무단 접근: 사용자 인증 없이 시스템에 접근할 수 있는 가능성을 열어둠
  • 권한 침해: 적절한 권한 없이 중요한 기능이나 데이터에 접근할 수 있는 가능성을 제공함

대상:

시스템 로그인, 접근 권한 관리, 중요한 기능 및 데이터 등 모든 종류의 인증 절차

판단기준:

양호 (Good):

  • 모든 접근 및 기능에 적절한 인증 절차가 적용되어 무단 접근이 불가능한 경우

취약 (Vulnerable):

  • 적절한 인증 없이 접근이 가능하거나 중요한 기능이나 데이터에 접근 가능한 경우

조치방법:

  1. 강화된 인증: 민감한 기능이나 데이터에 접근하기 위해서는 추가적인 보안 인증을 요구합니다.
  2. 세션 관리: 유효한 로그인 세션이나 토큰을 통해 사용자의 인증 상태를 확인하고 관리합니다.
  3. 접근 제어: 사용자의 역할과 권한에 따라 접근을 제어하고 불충분한 권한으로부터 보호합니다.

예시 구문 (불충분한 인증 취약점):

가정: 웹 애플리케이션에서 로그인 없이 중요한 데이터에 접근 가능한 경우를 가정합니다.

$resource_id = $_GET['resource_id'];
$query = "SELECT * FROM resources WHERE id = $resource_id"; // 취약점 발생: 로그인 없이 중요한 데이터에 접근 가능함

예시 구문 (불충분한 인증 방지):

가정: 웹 애플리케이션에서 적절한 로그인 인증을 거쳐야 중요한 데이터에 접근할 수 있는 경우를 가정합니다.

$user_id = $_SESSION['user_id'];
$resource_id = $_GET['resource_id'];
$query = "SELECT * FROM resources WHERE id = $resource_id AND owner_id = $user_id"; // 안전한 방식으로 인증이 필요한 접근을 제한함

위의 예시 코드에서는 불충분한 인증 취약점과 방지 방법을 나타내고 있습니다.

14. 취약한 패스워드 복구(PR)

점검 내용:

취약한 패스워드 복구 점검은 사용자의 패스워드를 잊어버렸을 때, 복구 절차가 취약한 상태를 확인하는 것을 의미합니다. 취약한 패스워드 복구 절차는 공격자에게 다른 사용자의 계정을 무단으로 복구하거나 임의의 패스워드를 설정하는 기회를 제공할 수 있습니다.

점검 목적:

  • 사용자 보호: 취약한 패스워드 복구 절차를 식별하여 사용자의 계정 보호를 강화합니다.
  • 보안 강화: 안전한 패스워드 복구 절차를 통해 공격자의 무단 접근을 방지하고 시스템의 보안성을 향상시킵니다.

보안위협:

취약한 패스워드 복구는 다음과 같은 위험을 초래할 수 있습니다:

  • 무단 접근: 공격자가 다른 사용자의 계정을 복구하여 무단으로 접근할 수 있음
  • 임의 패스워드 설정: 공격자가 임의의 패스워드를 설정하여 계정을 탈취할 수 있음

대상:

패스워드 복구 절차, 보안 질문 및 답변 설정 등 모든 종류의 패스워드 관련 기능

판단기준:

양호 (Good):

  • 안전한 패스워드 복구 절차가 적용되어 무단 접근이 불가능한 경우

취약 (Vulnerable):

  • 취약한 패스워드 복구 절차로 인해 무단 접근 또는 임의 패스워드 설정이 가능한 경우

조치방법:

  1. 정보 확인: 사용자에게 본인 확인을 위한 추가적인 정보나 인증 방식을 요구합니다.
  2. 임계값 설정: 잘못된 복구 시도 횟수 등의 임계값을 설정하여 공격을 방지합니다.
  3. 보안 질문 보완: 간단하거나 예측 가능한 보안 질문 대신 안전한 보안 질문을 사용합니다.

예시 구문 (취약한 패스워드 복구 취약점):

가정: 웹 애플리케이션에서 본인 확인 없이 패스워드를 초기화하는 경우를 가정합니다.

$user_id = $_POST['user_id'];
$new_password = $_POST['new_password'];
$query = "UPDATE users SET password = '$new_password' WHERE id = $user_id"; // 취약점 발생: 본인 확인 없이 패스워드가 초기화됨

예시 구문 (취약한 패스워드 복구 방지):

가정: 웹 애플리케이션에서 본인 확인을 거쳐야만 패스워드를 초기화하는 경우를 가정합니다.

$user_id = $_POST['user_id'];
$security_question = $_POST['security_question'];
$security_answer = $_POST['security_answer'];

// 본인 확인
if (verify_security_question($user_id, $security_question, $security_answer)) {
    $new_password = $_POST['new_password'];
    $query = "UPDATE users SET password = '$new_password' WHERE id = $user_id"; // 안전한 방식으로 본인 확인 후 패스워드가 초기화됨
}

위의 예시 코드에서는 취약한 패스워드 복구 취약점과 방지 방법을 나타내고 있습니다.

15. 크로스 사이트 리퀘스트 변조(CF)

점검 내용:

크로스 사이트 리퀘스트 변조(CSRF)는 사용자가 의도하지 않은 요청을 실수로 실행하도록 유도하는 공격입니다. 공격자는 사용자의 인증정보를 이용하여 사용자의 명의로 악의적인 요청을 보내거나 데이터를 조작할 수 있습니다.

점검 목적:

  • 사용자 보호: CSRF 공격을 방지하여 사용자의 개인정보와 계정을 보호합니다.
  • 시스템 안정성 유지: 악의적인 요청으로부터 시스템을 보호하고 데이터 무결성을 유지합니다.

보안위협:

크로스 사이트 리퀘스트 변조는 다음과 같은 위험을 초래할 수 있습니다:

  • 무단 동작: 사용자의 인증을 이용하여 의도하지 않은 요청을 수행시킴
  • 데이터 변조: 사용자의 명의로 데이터를 변경하거나 조작할 수 있음

대상:

웹 애플리케이션의 모든 페이지와 기능

판단기준:

양호 (Good):

  • 적절한 CSRF 토큰을 사용하여 모든 중요한 액션에 대해 인증된 요청만 허용하는 경우

취약 (Vulnerable):

  • CSRF 토큰이 부적절하게 사용되어 무단 요청이 가능한 경우

조치방법:

  1. CSRF 토큰 사용: 모든 폼과 액션에 대해 CSRF 토큰을 사용하여 요청의 유효성을 검증합니다.
  2. 동일 출처 정책: 동일한 출처 원칙을 준수하여 외부 사이트로부터의 요청을 차단합니다.
  3. 선택적 동작 수행: 중요한 액션을 수행하기 전에 사용자의 추가적인 확인을 요구합니다.

예시 구문 (CSRF 취약점):

가정: 웹 애플리케이션에서 CSRF 토큰 없이 중요한 액션이 실행되는 경우를 가정합니다.

<form action="http://example.com/change_password" method="POST">
    <input type="hidden" name="new_password" value="newpass123">
    <!-- 취약점 발생: CSRF 토큰 없이 중요한 액션이 실행됨 -->
</form>

예시 구문 (CSRF 방지):

가정: 웹 애플리케이션에서 CSRF 토큰을 사용하여 중요한 액션을 실행하는 경우를 가정합니다.

<form action="http://example.com/change_password" method="POST">
    <input type="hidden" name="csrf_token" value="a3d1f8e2">
    <input type="hidden" name="new_password" value="newpass123">
    <!-- 안전한 방식으로 CSRF 토큰을 사용하여 중요한 액션이 실행됨 -->
</form>

위의 예시 코드에서는 CSRF 취약점과 방지 방법을 나타내고 있습니다.

16. 세션 예측(SE)

점검 내용:

세션 예측은 공격자가 사용자의 세션 ID를 추측하여 무단으로 다른 사용자의 세션을 탈취하는 공격을 의미합니다. 세션 예측 공격은 세션 관리의 취약점으로 인해 발생할 수 있으며, 이는 사용자의 프라이버시와 보안을 위협합니다.

점검 목적:

  • 사용자 보호: 세션 예측 공격을 방지하여 사용자의 세션 정보를 보호합니다.
  • 시스템 안정성 유지: 안전한 세션 관리를 통해 시스템의 안정성을 유지합니다.

보안위협:

세션 예측은 다음과 같은 위험을 초래할 수 있습니다:

  • 무단 접근: 공격자가 다른 사용자의 세션을 탈취하여 무단 접근 가능
  • 개인정보 노출: 공격자가 사용자의 세션을 탈취하여 개인정보를 노출 가능

대상:

세션 관리 및 세션 ID 생성 기능

판단기준:

양호 (Good):

  • 예측 불가능한 세션 ID를 사용하여 세션 예측 공격을 방지하는 경우

취약 (Vulnerable):

  • 예측 가능한 세션 ID를 사용하여 세션 예측 공격을 용이하게 하는 경우

조치방법:

  1. 랜덤한 세션 ID: 예측 불가능한 랜덤한 세션 ID를 생성하여 사용합니다.
  2. 세션 유효시간: 세션의 유효시간을 적절하게 설정하여 공격자가 세션을 추적하기 어렵게 합니다.
  3. 추가 보안 계층: IP 주소, 사용자 에이전트 등의 정보를 활용하여 세션을 보호합니다.

예시 구문 (세션 예측 취약점):

가정: 웹 애플리케이션에서 예측 가능한 세션 ID를 사용하여 세션 관리하는 경우를 가정합니다.

$session_id = $_COOKIE['session_id'];
$user_id = get_user_id_from_session($session_id);
// 취약점 발생: 예측 가능한 세션 ID로 인해 세션 예측 공격이 용이함

예시 구문 (세션 예측 방지):

가정: 웹 애플리케이션에서 예측 불가능한 랜덤한 세션 ID를 사용하여 세션 관리하는 경우를 가정합니다.

$session_id = generate_random_session_id();
$user_id = get_user_id_from_session($session_id);
// 안전한 방식으로 랜덤한 세션 ID를 사용하여 세션 관리됨

위의 예시 코드에서는 세션 예측 취약점과 방지 방법을 나타내고 있습니다.

17. 불충분한 인가(IN)

점검 내용:

불충분한 인가란 인증된 사용자가 권한을 가지지 않은 기능이나 자원에 접근할 수 있는 취약점을 의미합니다. 이는 악의적인 사용자가 시스템 내에서 무단으로 허가되지 않은 작업을 수행할 수 있는 기회를 제공할 수 있습니다.

점검 목적:

  • 사용자 보호: 불충분한 인가 취약점을 식별하여 사용자의 보안을 강화합니다.
  • 권한 관리 강화: 권한 부여와 관리를 통해 시스템의 안정성을 유지합니다.

보안위협:

불충분한 인가는 다음과 같은 위험을 초래할 수 있습니다:

  • 무단 접근: 사용자가 권한이 없는 자원이나 기능에 접근 가능
  • 데이터 유출: 불충분한 인가로 인해 민감한 데이터가 노출 가능

대상:

시스템의 권한 관리 및 접근 제어 기능

판단기준:

양호 (Good):

  • 모든 접근 요청에 대해 적절한 인가 검증이 이루어지며, 권한이 없는 접근 시 차단되는 경우

취약 (Vulnerable):

  • 일부 접근 요청에 대해 불충분한 인가 검증이 이루어져 권한이 없는 접근이 가능한 경우

조치방법:

  1. 인가 검증: 모든 접근 요청에 대해 인가 검증을 수행하여 권한이 없는 접근을 방지합니다.
  2. 세분화된 권한: 사용자별로 세분화된 권한을 부여하여 필요한 기능만 접근 가능하도록 합니다.
  3. 접근 제어 리스트: 접근 제어 리스트(ACL)를 활용하여 허가된 사용자만 접근할 수 있도록 설정합니다.

예시 구문 (불충분한 인가 취약점):

가정: 웹 애플리케이션에서 관리자가 아닌 사용자도 관리자 페이지에 접근할 수 있는 경우를 가정합니다.

if ($user_role != 'admin') {
    // 관리자 페이지에 접근할 수 있는 권한이 없음에도 불구하고 접근을 허용함
    display_admin_panel();
}

예시 구문 (불충분한 인가 방지):

가정: 웹 애플리케이션에서 관리자 페이지에 접근하기 위해서는 관리자 권한이 필요한 경우를 가정합니다.

if ($user_role == 'admin') {
    // 관리자 페이지에 접근할 수 있는 권한을 가지고 있을 경우에만 접근 허용
    display_admin_panel();
}

위의 예시 코드에서는 불충분한 인가 취약점과 방지 방법을 나타내고 있습니다.

18. 불충분한 세션 만료(SC)

점검 내용:

불충분한 세션 만료는 사용자의 세션이 적절한 시간에 만료되지 않아 공격자가 오랜 시간 동안 미사용된 세션을 이용하여 무단으로 시스템에 접근할 수 있는 취약점을 의미합니다. 이러한 취약점은 사용자의 프라이버시와 보안을 저해할 수 있습니다.

점검 목적:

  • 사용자 보호: 불충분한 세션 만료 취약점을 해결하여 사용자의 세션 정보를 보호합니다.
  • 세션 관리 강화: 적절한 세션 만료 메커니즘을 도입하여 시스템의 안정성을 유지합니다.

보안위협:

불충분한 세션 만료로 인해 다음과 같은 위험이 발생할 수 있습니다:

  • 무단 접근: 사용자가 오랜 기간 동안 미사용된 세션을 이용하여 무단 접근 가능
  • 개인정보 노출: 세션이 만료되지 않아 공격자가 다른 사용자의 개인정보를 노출 가능

대상:

세션 관리 메커니즘, 세션 만료 설정

판단기준:

양호 (Good):

  • 세션은 일정 시간 동안 미사용 시 자동으로 만료되며, 만료된 세션은 재사용되지 않음

취약 (Vulnerable):

  • 세션 만료 메커니즘이 부적절하게 설정되어 세션이 오랜 기간 동안 유지되는 경우

조치방법:

  1. 세션 타임아웃 설정: 세션은 일정 시간 미사용 시 자동으로 만료되도록 타임아웃을 설정합니다.
  2. 경고 메시지: 세션이 만료되기 직전에 사용자에게 경고 메시지를 표시하여 로그아웃하도록 유도합니다.
  3. 활동 감지: 사용자의 활동이 감지되지 않을 경우 세션을 자동으로 로그아웃시키도록 설정합니다.

예시 구문 (불충분한 세션 만료 취약점):

가정: 웹 애플리케이션에서 세션이 미사용되어도 만료되지 않는 경우를 가정합니다.

// 세션 만료를 고려하지 않고 세션 데이터를 사용함
$user_id = $_SESSION['user_id'];

예시 구문 (불충분한 세션 만료 방지):

가정: 웹 애플리케이션에서 일정 시간 미사용 시 세션을 자동으로 만료시키는 경우를 가정합니다.

// 세션 만료를 고려하여 세션 데이터를 사용함
if (is_session_valid()) {
    $user_id = $_SESSION['user_id'];
}

위의 예시 코드에서는 불충분한 세션 만료 취약점과 방지 방법을 설명하고 있습니다.

19. 세션 고정(SF)

점검 내용:

세션 고정은 공격자가 특정 사용자의 세션을 탈취하여 무단으로 시스템에 접근하는 취약점을 나타냅니다. 이는 사용자의 인증 정보를 악용하여 권한을 획득하거나 사용자의 프라이버시를 침해할 수 있습니다.

점검 목적:

  • 사용자 보호: 세션 고정 취약점을 예방하여 사용자의 개인정보와 보안을 강화합니다.
  • 세션 관리 강화: 적절한 세션 관리 메커니즘을 도입하여 시스템의 안정성을 유지합니다.

보안위협:

세션 고정으로 인해 다음과 같은 위험이 발생할 수 있습니다:

  • 무단 접근: 공격자가 세션을 탈취하여 특정 사용자로서 시스템에 접근 가능
  • 개인정보 유출: 세션을 탈취한 공격자가 다른 사용자의 정보를 노출 가능

대상:

세션 관리 메커니즘, 사용자 인증 및 세션 생성, 세션 관련 모든 요소

판단기준:

양호 (Good):

  • 세션 식별자는 로그인 시마다 새롭게 생성되며, 이전 세션과 관련이 없음

취약 (Vulnerable):

  • 세션 식별자가 로그인 전후로 일정하게 유지되어 세션 고정 취약점이 발생할 수 있음

조치방법:

  1. 랜덤 세션 식별자: 로그인 시마다 랜덤한 세션 식별자를 생성하여 세션 고정을 방지합니다.
  2. 세션 만료: 로그인 후 일정 시간이 지나면 세션을 자동으로 만료시킵니다.
  3. 사용자 확인: 세션 생성 시 사용자 정보를 활용하여 세션을 확실히 구분합니다.

예시 구문 (세션 고정 취약점):

가정: 웹 애플리케이션에서 세션 식별자가 항상 일정한 경우를 가정합니다.

// 로그인 시 세션 식별자를 고정값으로 설정함
$_SESSION['user_id'] = 'admin';

예시 구문 (세션 고정 방지):

가정: 웹 애플리케이션에서 로그인 시마다 랜덤한 세션 식별자를 생성하여 세션 고정을 방지하는 경우를 가정합니다.

// 로그인 시 랜덤한 세션 식별자를 생성하여 세션을 시작함
$_SESSION['user_id'] = generate_random_string();

위의 예시 코드에서는 세션 고정 취약점과 방지 방법을 상세히 설명하고 있습니다.

20. 자동화 공격(AU)

점검 내용:

자동화 공격은 공격자가 자동화된 스크립트나 도구를 사용하여 시스템을 대상으로 공격하는 것을 나타냅니다. 이러한 공격은 시스템의 취약점을 이용하거나 대량의 요청을 통해 서비스 거부(Denial of Service, DoS) 공격을 시도할 수 있습니다.

점검 목적:

  • 시스템 보호: 자동화 공격을 예방하여 시스템의 안정성과 가용성을 보호합니다.
  • 자동화 공격 방어: 적절한 방어 메커니즘을 도입하여 시스템의 안전성을 강화합니다.

보안위협:

자동화 공격으로 인해 다음과 같은 위험이 발생할 수 있습니다:

  • 시스템 악용: 공격자가 자동화된 공격 스크립트를 이용하여 시스템을 악용할 수 있습니다.
  • 서비스 거부: 대량의 자동화된 요청으로 인해 시스템의 가용성이 저하될 수 있습니다.

대상:

시스템 보안, 네트워크 보안, 웹 애플리케이션 등

판단기준:

양호 (Good):

  • 적절한 자동화 공격 방어 메커니즘이 구축되어 있으며, 공격 시도가 차단됨

취약 (Vulnerable):

  • 자동화 공격을 예방하기 위한 적절한 대비책이 부족한 경우

조치방법:

  1. CAPTCHA 사용: 자동화된 요청을 차단하기 위해 CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)를 도입합니다.
  2. IP 차단: 공격 시도가 감지되면 해당 IP 주소를 차단하여 추가 공격을 방지합니다.
  3. 비정상적 행위 탐지: 자동화 공격의 특징적인 행위를 감지하여 차단합니다.

예시 구문 (자동화 공격 취약점):

가정: 웹 애플리케이션에서 로그인 시도를 자동화된 스크립트로 반복하는 경우를 가정합니다.

# 자동화된 스크립트로 로그인 시도 반복
for i in range(100):
    login(username, password)

예시 구문 (자동화 공격 방어):

가정: 웹 애플리케이션에서 CAPTCHA를 사용하여 자동화된 로그인 시도를 방지하는 경우를 가정합니다.

<!-- CAPTCHA를 사용한 로그인 양식 -->
<form action="login.php" method="post">
    <input type="text" name="username" placeholder="사용자명">
    <input type="password" name="password" placeholder="비밀번호">
    <div class="captcha">
        <img src="captcha_image.jpg" alt="CAPTCHA 이미지">
        <input type="text" name="captcha_input" placeholder="CAPTCHA 코드">
    </div>
    <button type="submit">로그인</button>
</form>

위의 예시 코드에서는 자동화 공격 취약점과 방어 방법을 상세히 설명하고 있습니다.

이것으로 이번 포스팅 글에서는 11번부터 20번 웹 취약점 점검 항목에 따른 상세 개요와 판단기준, 점검 목적, 조치 방법, 예시 구문까지 알아보았습니다.
다음 포스팅 글에서는 마지막편으로 이어 21번 부터 28번 웹 취약점 점검 항목에 대해 상세히 기술하겠습니다.
감사합니다.

[Reference]
1. KISA 한국인터넷진흥원>지식플랫폼>법령·가이드라인>가이드라인>보안취약점 및 침해사고 대응
2. Guide to Web Application Penetration Testing — TechMagic

[관련글] 
1. 취약점 | Tech Hyeonker

[이전글]
1. 웹 취약점 점검 항목(1편) / 1~10번 항목 | Tech Hyeonker

댓글 남기기