반응형
SQL 인젝션

 

SQL 인젝션은 웹 애플리케이션의 입력값을 조작하여 악의적인 SQL 구문을 삽입,

데이터베이스에 비정상적인 접근을 시도하는 공격 방법입니다.

이를 통해 공격자는 민감한 데이터 탈취, 데이터베이스 수정,

관리 권한 획득 등의 피해를 발생시킬 수 있습니다.

 

국내 은행사의 개인정보 탈취사건,

대형 어플의 개인정보 유출 등도 이에 해당합니다.

 

이번 실습에서는 SQL 인젝션을 통해 로그인 우회 및 데이터 탈취를 시도하고,

이를 방어하는 방법을 학습합니다.

1. 실습 환경 구축

SQL 인젝션을 실습하기 위해 안전한 환경을 구축하는 방법을 설명합니다.

1.1 가상 머신 설치

개념 설명

가상 머신(Virtual Machine)은 하나의 컴퓨터에서 여러 운영체제를 실행할 수 있게 해주는 소프트웨어입니다. 이를 통해 실제 시스템을 손상시키지 않고 다양한 실험을 할 수 있습니다.

설정 방법

  1. VirtualBox를 다운로드하고 설치합니다.
  2. Ubuntu ISO 이미지를 다운로드합니다.
  3. VirtualBox에서 새로운 가상 머신을 생성하고 Ubuntu를 설치합니다.

 

버츄얼박스 (VirtualBox)와 칼리 리눅스 (Kali Linux)를 이용한 모의해킹 실습 환경 구축 가이드

오늘은 모의해킹 실습 환경을 구축하는 방법에 대해 소개하려고 합니다. 이번 글에서는 VirtualBox와 칼리 리눅스(Kali Linux)를 사용합니다. 1. VirtualBox 설치 먼저, VirtualBox를 설치해야 합니다. 우리가

jdcyber.tistory.com

1.2 LAMP 스택 설치

개념 설명

LAMP 스택은 웹 서버를 구축하기 위한 필수 소프트웨어의 조합으로, Linux, Apache, MySQL, PHP로 구성됩니다.

각 구성 요소 설명 및 기능

  1. Linux: 운영체제(OS)로, LAMP 스택의 기본 플랫폼을 제공합니다.
  2. Apache: 웹 서버 소프트웨어로, 클라이언트로부터 HTTP 요청을 처리하고 응답을 보냅니다.
  3. MySQL: 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터를 저장하고 관리합니다.
  4. PHP: 서버 사이드 스크립트 언어로, 동적인 웹 페이지를 생성합니다.

설치 방법

  1. 터미널을 열고 다음 명령어를 실행합니다:
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql

1.3 DVWA 설치

개념 설명

DVWA(Damn Vulnerable Web Application)는 의도적으로 취약점을 포함하고 있어 보안 연습에 사용되는 웹 애플리케이션입니다.

설치 방법

  1. DVWA를 다운로드하고 Apache 웹 루트 디렉토리로 이동합니다:
sudo apt install git
git clone https://github.com/digininja/DVWA.git /var/www/html/dvwa
sudo chown -R www-data:www-data /var/www/html/dvwa

    2. MySQL에서 DVWA 데이터베이스를 설정합니다:

sudo mysql -u root -p
CREATE DATABASE dvwa;
CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';
FLUSH PRIVILEGES;
exit;

    3. DVWA 설정 파일을 수정합니다:

sudo nano /var/www/html/dvwa/config/config.inc.php

설정 파일 내용:

$_DVWA = array();
$_DVWA[ 'db_server' ] = 'localhost';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'password';

    4. Apache 서버를 재시작합니다:

sudo systemctl restart apache2

2. Lord of SQL Injection 실습

2.1 사이트 소개

 

Lord of SQLInjection

 

los.rubiya.kr

 

개념 설명

Lord of SQL Injection은 다양한 SQL 인젝션 문제를 제공하여 실습할 수 있는 웹사이트입니다.

접속 방법

  1. 브라우저에서 Lord of SQL Injection에 접속합니다.
  2. 제공된 문제를 하나씩 풀어가며 SQL 인젝션을 연습합니다.

2.2 예시 문제 해결

시나리오 설명

SQL 인젝션은 사용자가 입력한 데이터를 이용해 악의적인 SQL 쿼리를 실행하는 공격 방법입니다. 이번 실습에서는 로그인 우회 공격을 시도합니다.

 

로그인 폼에 ' OR '1'='1을 입력하여 SQL 인젝션 시도

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

모든 사용자 계정에 접근할 수 있습니다.


3. SQL 인젝션 방어 방법

3.1 입력값 검증

개념 설명

사용자 입력값을 철저히 검증하여 악의적인 데이터를 걸러냅니다.

방어 방법

숫자 입력 필드에는 숫자만 입력되도록 검증합니다:

if (!is_numeric($_POST['id'])) {
    die("Invalid ID");
}

3.2 Prepared Statements 사용

개념 설명

SQL 인젝션 공격을 방어하는 가장 효과적인 방법 중 하나는 'Prepared Statements'를 사용하는 것입니다. Prepared Statements는 SQL 쿼리를 안전하게 실행할 수 있게 해주며, 사용자 입력을 쿼리의 일부로 직접 삽입하지 않고 별도로 처리합니다.

Prepared Statements의 작동 원리

  • 쿼리 분리: 사용자의 입력을 쿼리 구조에서 분리합니다. 이렇게 하면 입력값이 쿼리의 구조를 변경할 수 없으므로, 악의적인 쿼리 실행이 방지됩니다.
  • 파라미터 바인딩: 사용자 입력을 쿼리에 파라미터로 전달합니다. 이 파라미터는 데이터베이스에 의해 안전하게 처리되어 쿼리에 포함됩니다.

방어 방법

PHP에서 Prepared Statements를 사용하는 예시:

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

이웃 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형
반응형

오늘은 모의해킹 실습 환경을 구축하는 방법에 대해 소개하려고 합니다.
이번 글에서는 VirtualBox와 칼리 리눅스(Kali Linux)를 사용합니다.

1. VirtualBox 설치

먼저, VirtualBox를 설치해야 합니다.

우리가 모의 해킹 실습을 위한 가상 환경을 만들어 줄 도구입니다.

VirtualBox의 최신 버전을 다운로드하기 위해 VirtualBox 공식 웹사이트

https://www.virtualbox.org/

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash New July 18th, 2023VirtualBox 7.0.10 released! Oracle today released a 7.0 maintenance release which improves stability and fixes regressions. See the Changelog for details. New July 18th, 2023VirtualBox 6.1.46 release

www.virtualbox.org


웹사이트에서는 여러 운영체제를 위한 다운로드 옵션이 제공됩니다.

본인의 운영체제에 맞는 버전을 다운로드하고 설치하세요.


2. 칼리 리눅스 ISO 다운로드

칼리 리눅스는 모의해킹 및 펜 테스팅에 가장 널리 사용되는 운영체제 중 하나입니다.

칼리 리눅스의 공식 웹사이트 (https://www.kali.org/)에서 ISO 이미지를 다운로드하세요.

 

저는 맥북 M1이라 아래 파일을 설치했습니다.

 

3. VirtualBox에서 칼리 리눅스

가상 머신 생성

VirtualBox를 실행하고 "새로 만들기" 버튼을 클릭하여 가상 머신을 생성합니다.

이름, 타입(리눅스), 버전(Debian 64-bit)을 설정하고, 나머지 설정을 변경합니다 (아래)

메모리(RAM): 칼리 리눅스의 공식 문서에 따르면 최소 2GB의 RAM이 권장됩니다.

그러나 여유가 있다면 4GB 또는 그 이상을 할당하는 것이 좋습니다.

가상 머신의 성능을 향상시키고 여러 프로그램을 동시에 실행하는 데 도움이 됩니다.

 

CPU 코어: 사용 가능한 CPU 코어의 수에 따라 다르지만,

일반적으로 가상 머신에 2개의 코어를 할당하는 것이 좋습니다.

이는 가상 머신의 성능을 향상시키고, 동시에 여러 작업을 수행하는 데 도움이 됩니다.

 

하드 디스크 공간: 칼리 리눅스를 설치하고 업데이트하려면 최소 20GB의 공간이 필요합니다.

그러나 추가의 소프트웨어나 데이터를 저장하려는 경우 더 많은 공간을 할당하는 것이 좋습니다.

 

4. 칼리 리눅스 ISO를 가상 머신에 연결

생성한 가상 머신을 선택하고 설정으로 이동하세요.

"저장소" 메뉴에서 "빈" CD 아이콘을 클릭하고,

우측에 있는 CD 아이콘을 클릭하여 다운로드한 칼리 리눅스 ISO 파일을 선택하세요.

 

5. 칼리 리눅스 설치

가상 머신을 시작하면 칼리 리눅스 설치 환경이 실행됩니다.

설치 언어, 지역, 키보드 구성 등을 설정하고, 가이드에 따라 설치를 진행하세요.

설치가 완료되면 칼리 리눅스를 실행할 수 있습니다.

1. 외부 네트워크 (NAT) 설정

NAT(Network Address Translation)은

가상 머신이 인터넷에 접속할 수 있도록 해주는 네트워크 설정입니다.

VirtualBox에서 해당 가상 머신을 선택하고 '설정'으로 이동합니다.

'네트워크'를 선택하고 '어댑터 1' 탭에서

'네트워크 연결'을 'NAT'로 설정합니다.

이렇게 하면 가상 머신은 호스트 시스템을 통해 인터넷에 접근할 수 있게 됩니다.

 

2. 내부 사설망 네트워크 설정

내부 사설망은 여러 가상 머신 간의 네트워크 통신을 가능하게 합니다.

'네트워크'를 선택하고 '어댑터 2' 탭으로 이동합니다.

'어댑터 사용' 체크박스를 선택하고 '네트워크 연결'을 '내부 네트워크'로 설정합니다.

'네트워크 이름'에는 고유한 이름을 입력하시면 됩니다.

같은 내부 네트워크에 연결하려는 모든 가상 머신은 동일한 네트워크 이름을 사용해야 합니다.

설정이 끝났다면 '확인'을 클릭하여 변경 사항을 저장합니다.

 

root@kali:~# vi /etc/network/interfaces

root@kali:~# service networking restart

 

이제 모의해킹 환경을 위해 외부 네트워크 (NAT)와 내부 사설망 네트워크가 모두 설정되었습니다.

이제 인터넷 연결과 가상 머신 간의 네트워크 연결이 모두 가능해졌습니다.

이 설정들은 모의해킹 실습에 필수적인 요소로, 다양한 네트워크 환경에서의 테스트를 가능하게 합니다.


 

만일 비밀번호를 분실하였다면 아래 글을 참조해주세요

https://jdcyber.tistory.com/57

 

칼리 리눅스 Kli Linux 패스워드 분실 (비밀번호 찾기, 재설정, 변경)

Kali Linux를 설치하고 작업을 하고 있는데 저처럼 어느 날 갑자기 비밀번호가 틀리나고 나오거나 아니면 Root 패스워드를 까먹으셨을 때 아래 방법을 통해 찾아보시기 바랍니다. ​ 아래 내용을 진

jdcyber.tistory.com


궁금하신 사항은 댓글에 남겨주세요

댓글에 남겨주신 내용

추후 정리해서 올려드리겠습니다

이웃 신청하시면 업로드 시 알려드릴게요!

-

조금이라도 도움이 되셨다면

공감&댓글 부탁드리겠습니다

감사합니다!

반응형

+ Recent posts