본격 취약점 진단을 위한 공격 메커니즘 이해: 웹 해킹 및 SQL Injection 인증 우회 기법 학습
목차 7개 단원
서론
"취약점을 제대로 진단하려면 먼저 공격 방식부터 알아야 합니다. '공격을 알아야 방어할 수 있다'는 생각으로, 진단을 시작하기 전에 웹 해킹의 공격 방식과 SQL Injection 인증 우회 기법을 배웠습니다."
오늘은 인프런 강의를 통해 웹 해킹의 공격 경로와 Burp Suite 프록시 도구 사용법을 익히고, SQL Injection 인증 우회 메커니즘의 기초를 익혔습니다. 온데 기능 개발은 잠시 두고, 이후 수동 진단에 바로 쓸 공격 원리를 먼저 쌓는 날입니다.
1. 웹 해킹의 본질과 방식의 변화
웹 서비스의 보안 허점을 이용하는 웹 해킹을 막으려면 공격자가 시스템에 어떻게 들어오는지부터 알아야 합니다. 인프런 수업을 통해 웹 해킹의 기초와 공격 경로를 배웠습니다.
- 웹 서비스가 주요 공격 경로인 이유: 네트워크 방화벽은 외부 서비스용 HTTP(80), HTTPS(443) 포트를 열어둘 수밖에 없습니다. 공격자에게 이 웹 서비스는 내부망으로 들어갈 수 있는 주요 경로가 됩니다.
- 웹 해킹이 발생하는 주요 원인:
- 입력값 검증 부재 (SQL Injection, XSS 등)
- 취약한 인증 및 접근 통제 (권한 상승, 우회)
- 중요 정보 및 에러 메시지 과도 노출
- 서버 및 프레임워크 자체의 설정 오류 및 설계 결함
2. 웹 해킹 필수 도구: 웹 프록시(Web Proxy)와 Burp Suite
"웹 브라우저의 검증을 과신하지 말고, 오직 프록시를 거쳐 나가는 요청과 응답을 검증해야 한다."
클라이언트와 서버 사이에서 패킷을 중계하는 웹 프록시의 동작 방식을 배웠습니다. 브라우저에서 자바스크립트로 입력값을 제한해도 프록시 도구로 패킷을 가로채면 우회할 수 있음을 이해하고, 실습 도구인 Burp Suite의 기본 기능을 익혔습니다.
- Proxy (Intercept): 브라우저와 서버 간의 패킷을 중간에 가로채서(Intercept) 사용자가 직접 요청 값을 조작하는 기능
- Repeater (
Ctrl + R): 가로챈 패킷의 입력값을 자유롭게 수정하여 서버의 반응을 반복적으로 테스트하고 재전송하는 기능 - 기타 모듈: 무작위 대입을 위한 Intruder 및 인코딩/디코딩을 지원하는 Decoder 등
3. 기본 개념 이해
강의 가이드에 따라 Apache, PHP, MySQL 기반의 로컬 실습 환경(APM)을 다루며 웹 서버와 데이터베이스 간의 연동 방식을 파악했습니다.
- 실습 데이터베이스 분석: 강의에서 제공된 취약점 테스트용 데이터베이스 구조를 살펴보며, 웹 애플리케이션에서 입력값이 검증 없이 쿼리문과 결합할 때 발생하는 위험성을 분석했습니다.
- Magic Quotes 설정의 이해: 과거에 싱글 쿼터(
') 등을 자동 이스케이프(\') 처리하여 SQL Injection을 방어하려던magic_quotes_gpc설정의 개념과, 현대 보안 환경에서의 한계점을 학습했습니다.
4. SQL Injection 메커니즘 및 인증 우회 원리 분석
SQL Injection은 사용자 입력값이 적절한 필터링 없이 개발자가 작성한 미완성 SQL 구문과 문자열로 결합(Concatenation)되면서, 데이터베이스 엔진이 이를 명령어로 오인하여 실행할 때 발생합니다.
① 로그인 페이지 인증 우회 (Authentication Bypass) 원리
- 타깃 계정의 아이디를 알고 있는 경우 (주석 활용):
- 아이디 입력창에
admin'#또는admin' --와 같은 구문을 주입하면, 서버 내부 쿼리에서 패스워드를 검증하는 뒷부분(AND pw='...')이 통째로 주석 처리되어 비밀번호를 몰라도 로그인이 성공하는 원리입니다.
- 아이디 입력창에
- 아이디를 모르는 경우 (항상 참인 조건 주입):
- 입력창에
' or 1=1#을 주입하면,WHERE id='' OR 1=1구조가 되어 전체 조건식이 무조건 참(True)이 됩니다. 이 경우 데이터베이스 결과셋의 가장 최상위 레코드(보통 관리자 계정)로 인증이 우회되는 메커니즘을 배웠습니다.
- 입력창에
② 특정 인증 페이지 및 비밀글 우회 원리 (In-line & Terminating)
게시글 조회나 비밀번호 확인 창에서 식별자(idx)가 지정되어 있더라도, 패스워드 입력란에 ' or '1'='1 (인라인 방식) 또는 ' or 1=1# (터미네이팅 방식)을 주입하면 연산자 우선순위(AND가 OR보다 먼저 연산됨)에 의해 전체 쿼리가 참으로 왜곡되어 인증을 우회할 수 있음을 파악했습니다.
5. 오늘의 주요 학습 내용
- 공격자 관점의 사전 학습: 무작정 진단을 수행하기 전, 취약점이 생기는 공격 원리와 패킷 조작 방식을 이해함.
- 프록시 도구 사용: Burp Suite의 Intercept 및 Repeater 기능을 활용한 패킷 제어 흐름 익힘.
- SQL Injection 기초 정리: 인라인 및 주석 종료 방식을 이용한 논리 구조 변조 및 인증 우회 메커니즘 파악.
6. 다음 단계: SQLi 심화 및 웹 취약점 학습 계획
인프런 강의 진도에 맞춰, 이후 진단·방어에 바로 쓰려고 아래 항목을 이어서 학습할 예정입니다.
- SQL Injection 심화: 데이터 병합을 이용한
UNION-Based공격, 참/거짓 반응 기반의BLIND-Based데이터 탈취 및 Prepared Statement 기반 시큐어 코딩 실습 - OS Command Injection: 웹 서버 운영체제 명령어를 주입하는 원리 분석 및 Reverse-Shell 공격과 방어 적용
- XXE Injection: XML 외부 엔티티 참조 취약점 원리 파악 및 취약 환경 시큐어 코딩
- XSS (Cross Site Scripting): DOM/Reflected/Stored XSS 공격 유형 분석 및 세션 하이재킹 대응 실습
- CSRF (Cross Site Request Forgery): 사이트 간 요청 위조 원리 분석 및 CSRF Token 동작 원리 상세 실습
- Day 06인프라 설계 정리 및 개발 속도를 위한 방식 변경
- Day 07프론트엔드 아키텍처 개선 및 백엔드 통합 시작
- Day 08프론트 Mock 데이터 제거와 백엔드 전체 모듈 통합
- Day 09실전 연동을 위한 API 표준화, BOLA 보안 취약점 개선 및 클라우드 인프라 개선
- Day 10본격 취약점 진단을 위한 공격 메커니즘 이해: 웹 해킹 및 SQL Injection 인증 우회 기법 학습
- Day 11실시간 DB 재고 달력 동기화, 권한(RBAC) 보안 가드 보완 및 로컬 Mock S3(MinIO) 인프라 구축
- Day 12백엔드 코어 데이터베이스 개편, 결제 파이프라인 연결 및 SQL Injection 심화·CSRF 다층 방어 정리
- Day 13메인 브랜치 통합, Nginx 배포 패키징, 플랫폼 헬스체크(Health Check) 설정 및 웹 보안 진단 준비
- Day 14진단 대상(온데) 마무리 후 웹 취약점 자동 진단 플랫폼 기획: 오픈소스(ZAP·Semgrep) 분석 및 3대 MVP 시나리오 확정