SQLi-sqlmap이란?
[공지사항] 본 블로그에 포함된 모든 정보는 교육 목적으로만 제공됩니다.
[데이터베이스 설계 및 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
테이블에서 username
과 password
컬럼의 데이터를 추출합니다.
🛡️SQL 인젝션 대응 방안
SQL 인젝션을 예방하기 위해 다음과 같은 방안을 적용할 수 있습니다.
입력 검증
사용자 입력을 철저히 검증하여 악의적인 SQL 코드를 차단합니다.
준비된 문(Prepared Statements)
SQL 쿼리를 실행할 때, 매개변수를 별도로 처리하여 SQL 인젝션을 방지합니다.
ORM 사용
객체 관계 매핑(Object-Relational Mapping) 도구를 사용하여 직접적인 SQL 쿼리 작성을 최소화합니다.
최신 보안 패치 적용
데이터베이스 관리 시스템과 웹 애플리케이션의 최신 보안 패치를 적용하여 알려진 취약점을 차단합니다.
최소 권한 원칙
데이터베이스 사용자 계정에 최소한의 권한만 부여하여, SQL 인젝션이 성공하더라도 피해를 최소화합니다.
🛠️결론
SQLMap은 SQL 인젝션 취약점을 자동으로 탐지하고 악용할 수 있는 강력한 도구입니다.
하지만, SQL 인젝션 공격의 위험성을 줄이기 위해서는 적절한 보안 조치를 적용하는 것이 필수적입니다.
입력 검증, 준비된 문 사용, 최신 보안 패치 적용 등 다양한 대응 방안을 통해 웹 애플리케이션의 보안을 강화할 수 있습니다.
댓글남기기