포트폴리오 ↗
루키즈 5기 · 일지›온데 개발Day 10 / 46

본격 취약점 진단을 위한 공격 메커니즘 이해: 웹 해킹 및 SQL Injection 인증 우회 기법 학습

·읽는 시간 약 4분
#security#web-hacking#sql-injection#burp-suite
목차 7개 단원
  1. ·서론
  2. 01웹 해킹의 본질과 방식의 변화
  3. 02웹 해킹 필수 도구: 웹 프록시(Web Proxy)와 Burp Suite
  4. 03기본 개념 이해
  5. 04SQL Injection 메커니즘 및 인증 우회 원리 분석
  6. 05오늘의 주요 학습 내용
  7. 06다음 단계: SQLi 심화 및 웹 취약점 학습 계획

서론

"취약점을 제대로 진단하려면 먼저 공격 방식부터 알아야 합니다. '공격을 알아야 방어할 수 있다'는 생각으로, 진단을 시작하기 전에 웹 해킹의 공격 방식과 SQL Injection 인증 우회 기법을 배웠습니다."

오늘은 인프런 강의를 통해 웹 해킹의 공격 경로와 Burp Suite 프록시 도구 사용법을 익히고, SQL Injection 인증 우회 메커니즘의 기초를 익혔습니다. 온데 기능 개발은 잠시 두고, 이후 수동 진단에 바로 쓸 공격 원리를 먼저 쌓는 날입니다.

1. 웹 해킹의 본질과 방식의 변화

웹 서비스의 보안 허점을 이용하는 웹 해킹을 막으려면 공격자가 시스템에 어떻게 들어오는지부터 알아야 합니다. 인프런 수업을 통해 웹 해킹의 기초와 공격 경로를 배웠습니다.

  • 웹 서비스가 주요 공격 경로인 이유: 네트워크 방화벽은 외부 서비스용 HTTP(80), HTTPS(443) 포트를 열어둘 수밖에 없습니다. 공격자에게 이 웹 서비스는 내부망으로 들어갈 수 있는 주요 경로가 됩니다.
  • 웹 해킹이 발생하는 주요 원인:
    1. 입력값 검증 부재 (SQL Injection, XSS 등)
    2. 취약한 인증 및 접근 통제 (권한 상승, 우회)
    3. 중요 정보 및 에러 메시지 과도 노출
    4. 서버 및 프레임워크 자체의 설정 오류 및 설계 결함

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. 오늘의 주요 학습 내용

  1. 공격자 관점의 사전 학습: 무작정 진단을 수행하기 전, 취약점이 생기는 공격 원리와 패킷 조작 방식을 이해함.
  2. 프록시 도구 사용: Burp Suite의 Intercept 및 Repeater 기능을 활용한 패킷 제어 흐름 익힘.
  3. SQL Injection 기초 정리: 인라인 및 주석 종료 방식을 이용한 논리 구조 변조 및 인증 우회 메커니즘 파악.

6. 다음 단계: SQLi 심화 및 웹 취약점 학습 계획

인프런 강의 진도에 맞춰, 이후 진단·방어에 바로 쓰려고 아래 항목을 이어서 학습할 예정입니다.

  1. SQL Injection 심화: 데이터 병합을 이용한 UNION-Based 공격, 참/거짓 반응 기반의 BLIND-Based 데이터 탈취 및 Prepared Statement 기반 시큐어 코딩 실습
  2. OS Command Injection: 웹 서버 운영체제 명령어를 주입하는 원리 분석 및 Reverse-Shell 공격과 방어 적용
  3. XXE Injection: XML 외부 엔티티 참조 취약점 원리 파악 및 취약 환경 시큐어 코딩
  4. XSS (Cross Site Scripting): DOM/Reflected/Stored XSS 공격 유형 분석 및 세션 하이재킹 대응 실습
  5. CSRF (Cross Site Request Forgery): 사이트 간 요청 위조 원리 분석 및 CSRF Token 동작 원리 상세 실습
온데 개발단계 2 · Day 6–14 · 5 / 9일지 전체 →
  1. Day 06인프라 설계 정리 및 개발 속도를 위한 방식 변경
  2. Day 07프론트엔드 아키텍처 개선 및 백엔드 통합 시작
  3. Day 08프론트 Mock 데이터 제거와 백엔드 전체 모듈 통합
  4. Day 09실전 연동을 위한 API 표준화, BOLA 보안 취약점 개선 및 클라우드 인프라 개선
  5. Day 10본격 취약점 진단을 위한 공격 메커니즘 이해: 웹 해킹 및 SQL Injection 인증 우회 기법 학습
  6. Day 11실시간 DB 재고 달력 동기화, 권한(RBAC) 보안 가드 보완 및 로컬 Mock S3(MinIO) 인프라 구축
  7. Day 12백엔드 코어 데이터베이스 개편, 결제 파이프라인 연결 및 SQL Injection 심화·CSRF 다층 방어 정리
  8. Day 13메인 브랜치 통합, Nginx 배포 패키징, 플랫폼 헬스체크(Health Check) 설정 및 웹 보안 진단 준비
  9. Day 14진단 대상(온데) 마무리 후 웹 취약점 자동 진단 플랫폼 기획: 오픈소스(ZAP·Semgrep) 분석 및 3대 MVP 시나리오 확정