Hackbar 를 활용한 보안 테스트 방법

Beginner

소개

이 랩에서는 웹 애플리케이션 보안 테스트를 위해 사이버 보안 전문가들이 사용하는 강력한 브라우저 확장 프로그램인 Hackbar 를 소개합니다. Hackbar 를 설치하고 구성하는 방법과 일반적인 보안 취약점을 테스트하기 위해 해당 기능을 사용하는 방법을 배우게 됩니다. 이 랩을 마치면 보안 테스트의 기본 사항을 이해하고 가장 널리 사용되는 보안 테스트 도구 중 하나를 실질적으로 경험하게 될 것입니다.

Hackbar 확장 프로그램 설치

이 단계에서는 Firefox 브라우저에 Hackbar 확장 프로그램을 설치합니다. Hackbar 는 HTTP 요청을 분석하고 조작하는 데 도움이 되는 보안 테스트 도구입니다.

브라우저 확장 프로그램 이해

브라우저 확장 프로그램은 브라우징 경험을 사용자 정의하는 작은 소프트웨어 프로그램입니다. Hackbar 와 같은 보안 확장 프로그램은 브라우저 내에서 직접 보안 테스트를 위한 특수 도구를 추가합니다.

Firefox 브라우저 설치

먼저, Firefox 가 시스템에 설치되어 있는지 확인합니다.

sudo apt update
sudo apt install firefox -y

명령이 완료되면 Firefox 가 설치되었거나 이미 존재한다는 출력이 표시됩니다.

Hackbar 확장 프로그램 설치

이제 Hackbar 확장 프로그램을 설치합니다.

  1. 응용 프로그램 메뉴에서 Firefox 아이콘을 클릭하거나 터미널에서 다음 명령을 실행하여 Firefox 브라우저를 엽니다.
firefox &
  1. Firefox 에서 주소 표시줄에 다음 URL 을 입력하여 확장 프로그램 페이지로 이동합니다.
https://addons.mozilla.org/en-US/firefox/addon/hackbar/
  1. "Add to Firefox" 버튼을 클릭합니다.

  2. 나타나는 확인 대화 상자에서 "Add"를 클릭하여 설치를 확인합니다.

  3. 설치 후 Hackbar 가 Firefox 에 추가되었다는 알림이 표시됩니다.

설치 확인

Hackbar 가 제대로 설치되었는지 확인하려면 다음을 수행합니다.

  1. Firefox 도구 모음에서 Hackbar 아이콘을 찾습니다 (일반적으로 작은 "HB" 아이콘으로 표시됨).

  2. 아이콘을 클릭하여 Hackbar 패널을 엽니다. 주소 표시줄 아래에 다양한 보안 테스트 옵션이 있는 도구 모음이 표시되어야 합니다.

  3. 아이콘이 보이지 않으면 메뉴 버튼 (오른쪽 상단 모서리의 가로선 3 개) 을 클릭하고 "Add-ons and themes"를 선택한 다음 "Extensions"를 클릭하여 Hackbar 가 나열되어 있는지 확인합니다.

Hackbar 인터페이스 이해

Hackbar 인터페이스는 여러 섹션으로 구성됩니다.

  • URL 필드: 현재 URL 을 보고 수정할 수 있는 곳
  • Method Selection (메서드 선택): GET, POST 및 기타 HTTP 메서드 중에서 선택
  • Load URL (URL 로드): 현재 페이지 URL 을 Hackbar 에 로드
  • Execute (실행): 수정된 요청을 보냄
  • Encoding/Decoding Tools (인코딩/디코딩 도구): 데이터를 변환하기 위한 다양한 옵션

다양한 메뉴 옵션을 클릭하여 사용 가능한 기능을 확인하면서 인터페이스를 잠시 살펴보십시오.

Hackbar 가 보안 테스트에 중요한 이유

Hackbar 를 통해 보안 전문가는 다음을 수행할 수 있습니다.

  • 실시간으로 HTTP 요청 수정
  • SQL injection (SQL 주입) 취약점 테스트
  • 다양한 형식으로 데이터 인코딩 및 디코딩
  • 쿠키 및 헤더 조작
  • Cross-Site Scripting (XSS, 크로스 사이트 스크립팅) 취약점 테스트

이 랩을 통해 이러한 기능을 사용하여 기본적인 보안 테스트를 수행하는 방법을 배우게 됩니다.

기본 URL 조작 및 인코딩

이 단계에서는 보안 테스트의 기본 기술인 URL 조작 및 인코딩/디코딩 작업을 위해 Hackbar 를 사용하는 방법을 배웁니다.

테스트 웹사이트 실행

실습을 위해 간단한 테스트 웹사이트를 설정합니다. 새 터미널을 열고 다음을 실행합니다.

mkdir -p ~/project/test-website
cd ~/project/test-website

이제 간단한 양식이 있는 기본 HTML 파일을 만듭니다.

cat > index.html << EOF
<!DOCTYPE html>
<html>
<head>
    <title>Test Website</title>
</head>
<body>
    <h1>Login Form</h1>
    <form action="login.php" method="GET">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username"><br><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password"><br><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>
EOF

이 페이지를 호스팅하기 위해 간단한 HTTP 서버를 시작해 보겠습니다.

python3 -m http.server 8080

서버가 포트 8080 에서 실행 중임을 나타내는 출력이 표시됩니다.

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

테스트 웹사이트 접속

새 Firefox 창을 열고 (서버는 터미널에서 계속 실행되도록 둡니다) 다음으로 이동합니다.

http://localhost:8080

사용자 이름과 비밀번호 필드가 있는 간단한 로그인 양식이 표시됩니다.

Hackbar 를 사용하여 URL 조작

이제 Hackbar 를 사용하여 URL 을 조작해 보겠습니다.

  1. Hackbar 아이콘을 클릭하여 Hackbar 패널을 엽니다.

  2. "Load URL (URL 로드)" 버튼을 클릭하여 현재 URL 을 Hackbar 에 로드합니다.

  3. Hackbar 의 URL 필드에 http://localhost:8080이 표시됩니다.

  4. 경로를 추가하여 URL 을 수정해 봅니다. 예를 들어:

    • http://localhost:8080/index.html로 변경
    • "Execute (실행)"을 클릭하여 요청을 보냅니다.
  5. 테스트 자격 증명 (예: 사용자 이름: "admin", 비밀번호: "password") 으로 로그인 양식을 채우고 로그인 버튼을 클릭합니다.

  6. 주소 표시줄에서 URL 을 확인합니다. 다음과 같이 표시됩니다.

    http://localhost:8080/login.php?username=admin&password=password
    
  7. 페이지는 "Not Found (찾을 수 없음)" 오류를 표시할 가능성이 높습니다 (login.php 가 없기 때문). 하지만 URL 구조에 관심이 있습니다.

  8. Hackbar 를 다시 열고 "Load URL (URL 로드)"을 클릭하여 이 새 URL 을 로드합니다.

URL 매개변수 조작

보안 테스트에는 종종 URL 매개변수 조작이 포함됩니다.

  1. Hackbar 에서 로그인 URL 이 포함된 URL 필드를 찾습니다.

  2. 사용자 이름 매개변수를 변경해 봅니다.

    • username=adminusername=admin'으로 변경
    • "Execute (실행)"을 클릭하여 요청을 보냅니다.

이 간단한 변경은 작은따옴표 문자를 추가합니다. 이는 SQL injection (SQL 주입) 취약점을 테스트하는 일반적인 기술입니다.

Hackbar 를 사용한 인코딩 및 디코딩

Hackbar 는 다양한 인코딩/디코딩 옵션을 제공합니다.

  1. Hackbar 에서 "Encoding (인코딩)" 메뉴를 클릭하여 사용 가능한 옵션을 확인합니다.

  2. URL 인코딩을 시도합니다.

    • test space & special과 같이 특수 문자가 있는 텍스트를 URL 필드에 입력합니다.
    • 인코딩하려는 텍스트를 선택합니다.
    • "Encoding (인코딩)" 메뉴에서 "URL encode (URL 인코딩)"를 선택합니다.
    • 선택한 텍스트가 URL 인코딩 형식으로 변환됩니다.
  3. Base64 인코딩을 시도합니다.

    • hackbar test와 같은 텍스트를 URL 필드에 입력합니다.
    • 인코딩하려는 텍스트를 선택합니다.
    • "Encoding (인코딩)" 메뉴에서 "Base64 encode (Base64 인코딩)"를 선택합니다.
    • 선택한 텍스트가 Base64 형식으로 변환됩니다.
  4. 디코딩을 시도합니다.

    • 인코딩된 텍스트를 선택합니다.
    • "Encoding (인코딩)" 메뉴에서 적절한 디코딩 옵션 (URL decode (URL 디코딩) 또는 Base64 decode (Base64 디코딩)) 을 선택합니다.
    • 텍스트가 원래 형식으로 다시 변환됩니다.

이러한 인코딩/디코딩 기능은 웹 애플리케이션에서 보안 취약점을 테스트할 때 필수적입니다. 이를 통해 다양한 형식으로 데이터를 조작할 수 있습니다.

테스트 서버 중지

이 단계를 완료했으면 Python HTTP 서버가 실행 중인 터미널로 돌아가 Ctrl+C를 눌러 중지합니다.

기본 보안 테스트 기술

이 단계에서는 Hackbar 를 사용하여 기본적인 보안 테스트를 수행하는 방법을 배웁니다. 취약한 실습 환경을 설정하고 일반적인 보안 취약점을 테스트합니다.

취약한 실습 환경 설정

윤리적인 보안 테스트 실습을 위해 간단한 취약한 PHP 애플리케이션을 설정합니다. 먼저, 필요한 파일을 만들어 보겠습니다.

cd ~/project/test-website

이제 간단한 취약한 PHP 파일을 만듭니다.

cat > login.php << EOF
<?php
  // This is an intentionally vulnerable script for educational purposes only
  
  // Get the username from GET parameter
  \$username = isset(\$_GET['username']) ? \$_GET['username'] : '';
  \$password = isset(\$_GET['password']) ? \$_GET['password'] : '';
  
  echo "<h1>Login Results</h1>";
  
  // Vulnerable to SQL injection (DO NOT USE THIS IN PRODUCTION!)
  echo "<div>SQL query that would be executed:</div>";
  echo "<pre>SELECT * FROM users WHERE username = '\$username' AND password = '\$password'</pre>";
  
  // Check for SQL injection attempts
  if (strpos(\$username, "'") !== false || strpos(\$password, "'") !== false) {
    echo "<p style='color:red'>SQL Injection detected! In a real application, this might exploit a vulnerability.</p>";
  }
  
  // XSS vulnerability demonstration
  echo "<div>Welcome back, " . \$username . "!</div>";
?>
EOF

취약한 애플리케이션을 실행하기 위해 PHP 개발 서버를 시작해 보겠습니다.

php -S localhost:8080

서버가 실행 중임을 나타내는 출력이 표시됩니다.

PHP 7.x.x Development Server started at ...
Listening on http://localhost:8080
Document root is /home/labex/project/test-website

SQL Injection (SQL 주입) 테스트

SQL Injection (SQL 주입) 은 공격자가 사용자 입력을 통해 SQL 쿼리를 조작할 수 있는 일반적인 취약점입니다. 이를 테스트해 보겠습니다.

  1. Firefox 를 열고 테스트 애플리케이션으로 이동합니다.

    http://localhost:8080/
    
  2. 사용자 이름으로 "admin"을 입력하고 비밀번호로 "password"를 입력한 다음 "Login (로그인)"을 클릭합니다.

  3. 실행될 SQL 쿼리를 보여주는 페이지로 리디렉션됩니다.

    SELECT * FROM users WHERE username = 'admin' AND password = 'password'
    
  4. 이제 기본적인 SQL injection (SQL 주입) 공격을 시도해 보겠습니다. Hackbar 아이콘을 클릭하여 엽니다.

  5. "Load URL (URL 로드)"을 클릭하여 현재 URL 을 Hackbar 에 로드합니다.

  6. URL 필드에서 username 매개변수를 찾아 다음과 같이 수정합니다.

    username=admin' OR '1'='1
    

    전체 URL 은 다음과 같이 표시됩니다.

    http://localhost:8080/login.php?username=admin' OR '1'='1&password=password
    
  7. "Execute (실행)"을 클릭하여 수정된 요청을 보냅니다.

  8. 응답을 확인합니다. SQL injection (SQL 주입) 감지 메시지와 수정된 SQL 쿼리가 표시됩니다.

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

이는 SQL injection (SQL 주입) 이 쿼리 로직을 잠재적으로 수정할 수 있음을 보여줍니다. 실제 취약한 애플리케이션에서는 인증을 우회할 수 있습니다.

Cross-Site Scripting (XSS, 크로스 사이트 스크립팅) 테스트

Cross-Site Scripting (XSS, 크로스 사이트 스크립팅) 은 공격자가 클라이언트 측 스크립트를 웹 페이지에 삽입할 수 있는 또 다른 일반적인 취약점입니다. 이를 테스트해 보겠습니다.

  1. Hackbar 를 열고 "Load URL (URL 로드)"을 클릭하여 현재 URL 을 로드합니다.

  2. username 매개변수를 수정하여 간단한 JavaScript 경고를 포함합니다.

    username=<script>alert('XSS')</script>
    
  3. "Encode (인코딩)" → "URL encode selection (URL 인코딩 선택)"을 클릭하여 스크립트를 URL 인코딩합니다. URL 의 특수 문자를 인코딩해야 하므로 필요합니다.

  4. 인코딩된 URL 은 다음과 같이 표시됩니다.

    http://localhost:8080/login.php?username=%3Cscript%3Ealert%28%27XSS%27%29%3C%2Fscript%3E&password=password
    
  5. "Execute (실행)"을 클릭하여 수정된 요청을 보냅니다.

  6. 애플리케이션이 XSS 에 취약한 경우 "XSS"라는 JavaScript 경고 팝업이 표시됩니다. 우리의 간단한 PHP 스크립트는 적절한 위생 처리 없이 username 매개변수를 직접 출력하여 이 취약점을 보여줍니다.

Hackbar 의 추가 기능 사용

Hackbar 는 보안 테스트에 유용한 몇 가지 다른 기능을 제공합니다.

HTTP 헤더 조작

  1. Hackbar 에서 "Headers (헤더)" 탭을 클릭합니다.

  2. "User-Agent (사용자 에이전트)" 또는 "Referer (리퍼러)"와 같은 사용자 지정 헤더를 추가하여 애플리케이션이 다른 클라이언트 정보를 처리하는 방식을 테스트할 수 있습니다.

  3. 사용자 지정 헤더를 추가합니다.

    • "Add Custom Header (사용자 지정 헤더 추가)"를 클릭합니다.
    • Name (이름) 에 User-Agent를 입력합니다.
    • Value (값) 에 HackbarTester/1.0을 입력합니다.
    • "Add/Update Header (헤더 추가/업데이트)"를 클릭합니다.
  4. "Execute (실행)"을 클릭하여 수정된 헤더로 요청을 보냅니다.

쿠키 조작

  1. Hackbar 에서 "Cookies (쿠키)" 탭을 클릭합니다.

  2. 여기에서 기존 쿠키를 보고 수정하거나 새 쿠키를 추가할 수 있습니다.

  3. 새 쿠키를 추가해 봅니다.

    • Name (이름) 에 test_cookie를 입력합니다.
    • Value (값) 에 hackbar_value를 입력합니다.
    • "Add/Update Cookie (쿠키 추가/업데이트)"를 클릭합니다.
  4. "Execute (실행)"을 클릭하여 수정된 쿠키로 요청을 보냅니다.

보안 테스트 윤리 및 모범 사례

다음과 같은 중요한 윤리적 지침을 기억하십시오.

  1. 자신이 소유하거나 테스트할 명시적인 권한이 있는 시스템에서만 보안 테스트를 수행합니다.
  2. 모든 결과를 문서화하고 취약점을 책임감 있게 보고합니다.
  3. 보안 테스트 도구를 사용하여 해를 끼치거나 무단 데이터에 액세스하지 마십시오.
  4. 항상 법적 규정 및 윤리적 기준을 준수하십시오.

테스트 서버 중지

이 단계를 완료했으면 PHP 서버가 실행 중인 터미널로 돌아가 Ctrl+C를 눌러 중지합니다.

요약

이 랩에서는 보안 테스트를 위한 강력한 브라우저 확장 프로그램인 Hackbar 를 사용하는 방법을 배웠습니다. 다음을 포함한 기본적인 기술을 습득했습니다.

  1. Firefox 에서 Hackbar 확장 프로그램을 설치하고 구성합니다.
  2. Hackbar 를 사용하여 URL 및 매개변수를 조작합니다.
  3. 인코딩 및 디코딩 기술을 적용합니다.
  4. SQL Injection (SQL 주입) 및 XSS 와 같은 일반적인 웹 취약점을 테스트합니다.
  5. 보안 테스트의 윤리적 고려 사항을 이해합니다.

이러한 기술은 웹 애플리케이션 보안 테스트의 기초를 형성합니다. 사이버 보안 여정을 계속 진행하면서 이러한 기본 사항을 기반으로 보다 진보된 보안 테스트 기술을 개발할 수 있습니다. 보안 테스트는 항상 적절한 권한을 가지고 관련 법률 및 규정을 준수하여 윤리적으로 수행해야 함을 기억하십시오.