해킹 공부: 웹 해킹의 기초 5가지를 배워보세요
_____A: 웹 해킹은 웹 애플리케이션·서버·네트워크 등 웹 환경의 취약점을 이용해 비인가 접근·데이터 탈취·조작 등을 시도하는 행위입니다. 목표는 정보 노출, 서비스 중단(DoS), 권한 상승, 악성코드 배포 등이며, 보안 업계에선 이를 발견·수정해 시스템을 강화하는 ‘화이트 해킹’도 포함합니다.
2. Q: SQL 인젝션(SQL Injection)이란?
A: 사용자가 입력한 값이 제대로 검증되지 않은 채 데이터베이스 쿼리에 삽입되어 공격자가 임의의 SQL 문을 실행하는 취약점입니다.
예) 로그인 폼에서
• 정상 입력: SELECT * FROM users WHERE id = 'admin' AND pw = 'pass';
• 공격 입력: ’ OR ’1’=’1
→ SELECT * FROM users WHERE id = ‘’ OR ’1’=’1’ AND pw = ‘’ OR ’1’=’1’;
결과: 항상 참이 되어 인증 우회.
방어책:
1) Prepared Statement(파라미터 바인딩)
2) 입력값 검증(화이트리스트)
3) 최소 권한의 DB 계정 사용
4) 에러 메시지 노출 제한
3. Q: XSS(Cross-Site Scripting)이란?
A: 악성 스크립트(JS 등)를 웹 페이지에 삽입해 다른 사용자의 브라우저에서 실행시키는 공격입니다.
유형:
• Stored XSS(영구 저장) – 게시판, 댓글 등에 코드 영구 삽입
• Reflected XSS(반사) – URL 파라미터를 이용해 즉시 실행
피해: 세션 탈취, 쿠키 탈취, 피싱 유도, 악성코드 배포 등
방어책:
1) 출력 시 이스케이프(HTML 엔티티 변환)
3) 입력값 검증 및 필터링
4) HTTPOnly/secure 쿠키 설정
4. Q: CSRF(Cross-Site Request Forgery)이란?
A: 사용자가 로그인된 상태에서 공격자가 만든 페이지·링크를 클릭하도록 유도해 사용자의 권한으로 원치 않는 요청을 실행하게 하는 공격입니다.
예) 은행 이체 폼을 숨긴 img 태그나 자동 실행 폼으로 전송
방어책:
1) CSRF 토큰(폼 토큰) 사용
2) Referer/Origin 검증
3) SameSite 쿠키 속성 설정
4) 중요 동작 시 re-login(재인증)
5. Q: 디렉터리 트래버설(Directory Traversal)이란?
A: URL 파라미터에 “../” 등 상대 경로 조작 문자를 삽입해 웹 서버의 허용되지 않은 파일(비밀번호 파일, 로그, 설정 파일 등)에 접근·다운로드하는 공격입니다.
예) GET /download?file=../../etc/passwd
방어책:
1) 파일명 화이트리스트(허용된 이름만 처리)
2) 전체 경로로 변환 후 서브스트링 검사
3) OS별 경로 구분자 정규화
4) 웹서버별 가상 루트(root) 외 접근 차단
—
이 다섯 가지 기초 개념을 이해하고, 모의 해킹 환경에서 실습하며 방어 기법을 적용해 보세요. 보안은 예방·탐지·대응의 사이클을 반복해 강화됩니다.
아래 다섯 가지 기초 개념을 차례로 살펴보면서 각 취약점이 어떻게 발생하고, 공격자가 이를 어떻게 이용하며, 방어를 위해 어떤 조치를 취해야 하는지 알아보겠습니다.
1. HTTP 프로토콜과 웹 애플리케이션 구조 이해 웹 해킹의 첫걸음은 클라이언트(브라우저)와 서버 간에 주고받는 HTTP 요청(Request)·응답(Response)의 구조를 이해하는 것입니다.
- HTTP 메시지 구조: 메서드(GET, POST 등), 헤더(Host, Cookie, User-Agent 등), 본문(Body) - URL 파라미터와 폼 데이터: 쿼리스트링(?key=value), 폼 인코딩(application/x-www-form-urlencoded, multipart/form-data) - 세션 및 쿠키: 서버는 세션ID를 쿠키에 저장해 사용자 상태를 관리 이런 기본을 알아야 요청을 조작(manipulation)하거나 정상적인 흐름을 변형해 취약점을 찾는 것이 가능합니다.
2. SQL 인젝션(SQL Injection) 웹 애플리케이션이 사용자 입력을 그대로 데이터베이스 쿼리에 포함시킬 때 발생하는 취약점입니다.
- 발생 원인: 입력값 검증·필터링 부재, 쿼리 문자열을 문자열 결합으로 처리 - 공격 방식: 로그인 폼에 `admin' OR '1'='1` 같은 페이로드를 입력해 인증 우회 또는 데이터를 탈취 - 예시 사용자가 입력한 `id`를 그대로 쿼리에 삽입할 때 ```sql SELECT * FROM users WHERE id = '사용자입력'; ``` → `사용자입력`에 `anything' OR '1'='1`을 넣으면 모든 레코드를 반환 - 방어 방법 * Prepared Statement(파라미터라이즈드 쿼리) 사용 * 입력값 화이트리스트 검증 및 길이 제한 * 최소 권한 원칙(데이터베이스 계정에 불필요한 권한 제한)
3. 크로스사이트 스크립팅(XSS, Cross-Site Scripting) 공격자가 악성 스크립트를 웹 페이지에 주입해 다른 사용자의 브라우저에서 실행하게 만드는 기법입니다.
- 분류 * 반사형(Reflected XSS): 요청 파라미터가 즉시 응답에 반영될 때 * 저장형(Stored XSS): DB 등에 악성 스크립트가 저장되어 다수 사용자에게 전파 * DOM 기반(DOM-based XSS): 클라이언트 스크립트가 URL fragment 등을 직접 처리할 때 - 피해 사례: 세션 쿠키 탈취, 피싱·정상 기능 변조, 키로깅 - 방어 방법 * 출력 시 HTML 이스케이프(특수문자 변환) * Content Security Policy(CSP) 적용 * 입력값 검사와 함께 가능하면 사용자 입력을 HTML이 아닌 템플릿 변수로 처리
4. 인증·세션 관리 취약점 제대로 검증되지 않은 인증 로직이나 세션 관리를 통해 공격자가 다른 사용자의 권한을 탈취할 수 있습니다.
- 세션 하이재킹(Session Hijacking): 세션ID를 탈취해 유효 세션으로 접근 - 세션 고정(Session Fixation): 공격자가 미리 생성한 세션ID를 피해자에게 사용하도록 유도 - 비밀번호 무차별 대입(Brute Force)·사전 공격(Dictionary Attack): 짧거나 예측 가능한 비밀번호 이용 - 방어 방법 * 로그인 성공 시 세션ID 재생성(세션 고정 방지) * 쿠키에 HttpOnly, Secure, SameSite 속성 설정 * 다단계 인증(MFA) 도입 및 강력한 비밀번호 정책 시행
5. 크로스사이트 요청 위조(CSRF, Cross-Site Request Forgery) 사용자가 신뢰하는 사이트에 로그인된 상태에서, 공격자가 조작한 웹 요청을 사용자의 권한으로 실행하게 만드는 공격입니다.
- 공격 시나리오: 공격자는 피해자의 브라우저를 통해 은행 이체, 계정 정보 변경 등 민감한 동작을 수행 - 방어 방법 * CSRF 토큰(폼 토큰)을 모든 상태 변경 요청에 포함하고, 서버에서 검증 * SameSite 쿠키 속성을 `Strict` 또는 `Lax`로 설정해 외부 요청 시 쿠키 전송 차단 * 중요 요청은 Referer 헤더 체크(정상 도메인이 아닐 경우 차단) ––– 이 다섯 가지 기초 개념을 충분히 숙지하고, 각 취약점을 직접 모의 실습 환경(로컬 혹은 CTF 플랫폼)에서 반복적으로 연습해 보세요.
개념을 이해하는 것만으로는 부족하고, 실제로 공격 페이로드를 만들어 보고, 웹 애플리케이션 방어 메커니즘을 우회해 보는 경험이 웹 해킹 역량을 키우는 지름길입니다.
작성자:
박지민 [비회원]
| 작성일자: 11개월 전
2025-07-22 08:11:53
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 148 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.