Kali Linux 에서 sqlmap 환경 초기화하기

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 Kali Linux 에서 sqlmap 환경을 초기화하고 검증하는 기본적인 단계를 배우게 됩니다. sqlmap은 SQL 인젝션 취약점을 탐지하고 악용하며 데이터베이스 서버를 장악하는 과정을 자동화하는 오픈 소스 침투 테스트 도구입니다. 웹 애플리케이션 보안 평가를 수행하려는 모든 사람에게 sqlmap을 올바르게 설정하고 상호 작용하는 방법을 이해하는 것은 매우 중요합니다. 설치를 확인하고, 광범위한 도움말 메뉴를 탐색하고, 다양한 상세 수준 (verbosity levels) 을 이해하고, 테스트 대상 URL 을 식별하게 됩니다.

Kali Linux 터미널 접속

이 단계에서는 sqlmap 및 기타 명령줄 도구와 상호 작용하는 기본 인터페이스인 Kali Linux 터미널에 접속합니다. 터미널은 명령을 실행하고 출력을 보는 강력한 환경을 제공합니다.

먼저 ~/project 디렉토리에 있는지 확인합니다. 이곳은 실습 환경의 기본 작업 디렉토리입니다.

cd ~/project

이제 아직 열려 있지 않다면 새 터미널 창을 열거나 기존 터미널에 있는지 확인합니다. labex@labex-vm:~/project$와 유사한 프롬프트가 표시되어야 합니다.

sqlmap --version으로 sqlmap 설치 확인하기

이 단계에서는 sqlmap의 버전을 확인하여 Kali Linux 환경에 올바르게 설치되고 접근 가능한지 검증합니다. 이는 도구가 사용할 준비가 되었는지 확인하는 빠른 방법입니다.

터미널에서 다음 명령을 실행합니다:

sqlmap --version

설치된 sqlmap 버전을 나타내는 다음과 유사한 출력을 보게 될 것입니다:

sqlmap version 1.x.x.x ## 또는 유사한 버전 번호

이 출력은 sqlmap이 설치되었고 명령줄에서 실행할 수 있음을 확인시켜 줍니다.

sqlmap -h로 메인 도움말 메뉴 살펴보기

이 단계에서는 sqlmap의 메인 도움말 메뉴를 살펴봅니다. 도움말 메뉴는 사용 가능한 모든 옵션과 해당 기능에 대한 포괄적인 개요를 제공하며, 도구를 효과적으로 사용하는 방법을 이해하는 데 필수적입니다.

메인 도움말 메뉴를 표시하려면 다음 명령을 실행합니다:

sqlmap -h

이 명령은 옵션, 카테고리 및 예제에 대한 긴 목록을 출력합니다. sqlmap의 기능을 전반적으로 파악하기 위해 출력을 스크롤합니다. 대상 지정, 요청 옵션, 최적화, 주입, 탐지 등과 같은 섹션을 볼 수 있습니다.

        _
 _ __  _ __| | __  ___  ___
| '_ \| '__| |/ / / __|/ __|
| |_) | |  |   <  \__ \\__ \
| .__/|_|  |_|\_\ |___/|___/
|_|

... (출력 생략) ...

Usage: python3 sqlmap [options]

Options:
  --version           Show program's version number and exit
  -h, --help          Show this help message and exit
  -v VERBOSE          Verbosity level: 0-6 (default 1)

  Target:
    At least one of these options has to be provided to define the
    target(s)

    -u URL, --url=URL   Target URL (e.g. "http://www.site.com/vuln.php?id=1")
    -g GOOGLEDORK       Process Google dork results as target URLs

... (출력 생략) ...

이 출력은 sqlmap과 함께 사용할 수 있는 다양한 매개변수를 이해하는 데 중요합니다.

-v 옵션으로 상세도 (Verbosity) 수준 이해하기

이 단계에서는 -v 옵션을 사용하여 sqlmap의 상세도 수준에 대해 알아봅니다. 상세도 수준은 sqlmap 실행 중에 표시되는 정보의 양을 제어하며, 디버깅이나 작업에 대한 더 자세한 통찰력을 얻는 데 매우 유용할 수 있습니다.

-v 옵션은 0(무음) 부터 6(디버그) 까지의 범위를 가집니다. 차이를 보기 위해 몇 가지를 시도해 보겠습니다.

먼저 낮은 상세도 수준 (예: 0) 을 시도합니다:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -v 0 --batch

sqlmap이 무음으로 실행되므로 출력이 거의 없음을 알 수 있습니다. 이 시연에서는 대화형 프롬프트를 피하기 위해 --batch 옵션이 추가되었습니다.

다음으로 더 높은 상세도 수준 (예: 3) 을 시도합니다:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -v 3 --batch

HTTP 요청, 응답 및 테스트 프로세스에 대한 자세한 정보를 포함하여 훨씬 더 많은 출력을 보게 될 것입니다. 이 수준은 sqlmap이 백그라운드에서 무엇을 하고 있는지 이해하는 데 자주 유용합니다.

        _
 _ __  _ __| | __  ___  ___
| '_ \| '__| |/ / / __|/ __|
| |_) | |  |   <  \__ \\__ \
| .__/|_|  |_|\_\ |___/|___/
|_|

... (출력 생략) ...

[HH:MM:SS] [INFO] starting @ HH:MM:SS /YYYY-MM-DD/
[HH:MM:SS] [INFO] fetched data: 'cat=1'
[HH:MM:SS] [INFO] testing connection to the target URL
[HH:MM:SS] [INFO] checking if the target is protected by some kind of WAF/IPS/IDS
[HH:MM:SS] [INFO] the target URL is not protected by any kind of WAF/IPS/IDS
[HH:MM:SS] [INFO] testing if the target URL is stable
[HH:MM:SS] [INFO] target URL is stable
[HH:MM:SS] [INFO] testing for GET parameter 'cat'
[HH:MM:SS] [INFO] GET parameter 'cat' is vulnerable.
... (출력 생략) ...

상세도 수준을 이해하면 표시되는 정보의 양을 제어할 수 있으며, 이는 침투 테스트 중 효율적인 분석에 중요합니다.

취약한 테스트 애플리케이션 URL 식별하기

이 단계에서는 sqlmap 테스트에 사용할 수 있는 공개적으로 사용 가능한 취약한 웹 애플리케이션 URL 을 식별합니다. 윤리적 해킹 및 학습 목적으로는 테스트 권한이 명시적으로 부여된 지정된 테스트 환경 또는 애플리케이션을 사용하는 것이 중요합니다.

이 실습에서는 대상 URL 로 http://testphp.vulnweb.com/listproducts.php?cat=1을 사용합니다. 이 URL 은 의도적으로 SQL 인젝션에 취약하며 Acunetix 에서 테스트 목적으로 제공합니다.

이 URL 을 간단히 기록해 두시면 됩니다. 향후 실습에서 이 URL 을 sqlmap과 함께 사용하여 다양한 SQL 인젝션 공격을 수행할 것입니다.

URL 은 다음과 같습니다: http://testphp.vulnweb.com/listproducts.php?cat=1

이 URL 에는 취약한 것으로 알려진 GET 매개변수 cat이 포함되어 있습니다. 이것이 이후 sqlmap 연습의 대상이 될 것입니다.

요약

이 실습에서는 Kali Linux 에서 sqlmap 환경을 성공적으로 초기화하고 검증했습니다. 터미널에 액세스하는 방법, sqlmap 버전을 확인하는 방법, 포괄적인 도움말 메뉴를 탐색하는 방법, 자세한 출력을 위한 상세도 수준의 중요성을 이해했습니다. 또한 향후 SQL 인젝션 연습의 대상이 될 공개적으로 사용 가능한 취약한 웹 애플리케이션 URL(http://testphp.vulnweb.com/listproducts.php?cat=1) 을 식별했습니다. 이러한 기초 단계는 침투 테스트 시나리오에서 sqlmap을 효과적으로 활용하는 데 중요합니다.