웹 보안: 취약성 및 공격 방식에 대한 이해
웹 보안은 정보 보안에서 가장 중요한 부분 중 하나입니다. 웹 애플리케이션의 취약점을 악용한 공격은 빈번하게 발생하며, 이를 방지하기 위해 취약점을 이해하고 대응 방안을 마련하는 것이 필수적입니다. 이번 포스팅에서는 웹과 관련된 주요 취약성 및 공격 방식을 설명합니다.
1. 웹 취약성 가이드라인
웹 보안 취약점은 여러 기준과 가이드라인에 따라 정의됩니다. 주요 가이드라인은 다음과 같습니다:
- OWASP Top 10 (2021년 기준 최신)
- 가장 빈번하게 발생하는 웹 애플리케이션 취약점을 연구하여 목록화.
- 4년에 한 번 개정됨.
- NIST 기준 (웹 취약성 31개)
- 미국 국가 표준 기술 연구소가 제시한 기준.
- 주요통신기반시설 취약점 점검 가이드라인 (28개)
- 행정안전부에서 공개한 가이드라인 (2021년 이후 개정 없음).
- 행정안전부 SW 취약점 개발 가이드 (49개)
- 소프트웨어 개발과 관련된 보안 취약점 가이드 (2021년 기준 최신).
- 전자금융기반시설 취약점 점검 가이드 (48개)
- 금융보안원이 배포한 비공개 가이드라인 (2024년 기준 최신).
- 국정원 정보보안관리실태평가 (13개)
- 국정원이 제공하는 비공개 가이드라인 (2024년 기준 최신).
2. 대표적인 웹 공격 방식 12가지
2-1. SQL Injection (SQLi)
- 내용: 사용자가 입력한 데이터를 통해 SQL 쿼리를 조작하여 데이터베이스에 접근하거나 민감한 정보를 유출.
- 공격 예시:
- OR 1=1 조건으로 인해 인증 우회 발생.
- 싱글쿼터(')를 이용해 SQL 구문을 변조.
SELECT id, pw FROM users WHERE id='admin' OR 1=1--';
- 대응 방안:
- 사용자 입력값 검증.
- Prepared Statement, ORM 등 안전한 SQL 사용.
2-2. XSS (Cross-Site Scripting)
- 내용: 악성 스크립트를 주입하여 사용자 브라우저에서 실행되도록 유도.
- 종류:
- Stored XSS: 악성 스크립트가 서버에 저장되어 다수의 사용자에게 실행.
- Reflected XSS: 입력값이 즉시 반영되어 사용자 브라우저에서 실행.
- 공격 예시:
<script>alert("XSS")</script>
- 대응 방안:
- 사용자 입력값 필터링 및 인코딩.
- 콘텐츠 보안 정책(Content Security Policy) 적용.
2-3. 파일 업로드 및 다운로드
- 내용:
- Upload: 악성 스크립트를 업로드하여 서버에서 실행.
- Download: 경로 조작으로 민감한 파일 다운로드.
- 공격 예시:
- 업로드: .php 파일 업로드 후 웹셸 실행.
- 다운로드:
http://test.com/notice/file?down=../../../../etc/passwd
- 대응 방안:
- 파일 확장자 및 크기 제한.
- 업로드된 파일의 실행 권한 제한.
- 다운로드 경로 검증.
2-4. 정보 노출
- 내용: 웹 서버의 버전 정보, API 키, 디버깅 정보를 노출.
- 공격 예시:
- curl -v -X OPTIONS http://test.com/를 통해 서버 정보 획득.
- 대응 방안:
- 불필요한 헤더 제거.
- 디버깅 모드 비활성화.
2-5. 관리자 페이지 노출
- 내용: 관리자 페이지가 쉽게 노출되는 취약점.
- 공격 예시:
http://test.com/admin
- 대응 방안:
- 관리자 페이지 접근 제어 (IP 제한, 인증).
- URI를 난독화하거나 경로를 숨김.
2-6. 인증 우회
- 내용: 인증 프로세스를 우회하여 비인가 사용자 접근.
- 공격 예시:
- 인증서 복사 후 조작하여 인증 우회.
- 대응 방안:
- 인증 절차 강화 (OTP, 2FA).
- 서버에서 입력값 유효성 검증.
2-7. 파라미터 조작
- 내용: 파라미터 값을 변조하여 권한 없는 데이터 접근.
- 공격 예시:
http://test.com/board?id=3
- 대응 방안:
- 입력값 서버단 검증.
- 세션 및 권한 체크 로직 추가.
2-8. 디버깅 정보 노출
- 내용: 개발자 도구를 통해 하드코딩된 민감 정보 노출.
- 공격 예시:
- DB 접속 정보, 관리자 계정 정보 노출.
- 대응 방안:
- 디버깅 정보 최소화.
- 중요한 정보는 환경 변수에 저장.
2-9. 세션 재사용
- 내용: 만료된 세션을 재사용하여 인증 우회.
- 대응 방안:
- 세션 타임아웃 설정.
- 로그아웃 시 세션 삭제.
2-10. 불필요한 HTTP 메서드 사용
- 내용: PUT, DELETE와 같은 메서드를 통해 데이터 조작.
- 대응 방안:
- 허용된 메서드만 사용.
- 필요하지 않은 메서드는 서버에서 비활성화.
2-11. 브루트 포스 공격
- 내용: 무작위 대입으로 계정 정보 탈취.
- 대응 방안:
- 로그인 시도 횟수 제한.
- CAPTCHA 도입.
2-12. Command Injection
- 내용: 시스템 명령어를 주입하여 서버를 제어.
- 공격 예시:
http://test.com/command?input=ls;pwd
- 대응 방안:
- 사용자 입력값 검증.
- 시스템 명령어 사용 제한.
3. 보안 룰 작성 시 유의사항
- 정규표현식 사용 여부 확인:
- 예: GET1, GET2와 같은 변형 데이터 탐지.
- 탐지 로그 관리:
- 탐지된 공격 유형별 로그 분류.
- 로그 기반으로 공격 횟수 카운팅 및 분석.
웹 애플리케이션 보안을 강화하기 위해서는 취약점을 사전에 분석하고, 이를 방어할 수 있는 규칙과 솔루션을 마련해야 합니다.
*생성형 AI 활용한 클라우드&보안 전문가 양성캠프 과정의 교육내용 정리 자료입니다.
'IT 관련 > 보안' 카테고리의 다른 글
[새싹 성동 2기] 보안 컨설팅 실무(1) (0) | 2024.12.16 |
---|---|
[새싹 성동 2기] 보안관제 실무(4) - 로그관리와 공격 유형 (0) | 2024.12.16 |
[새싹 성동 2기] 보안관제 실무(3) - 관제장비 (0) | 2024.12.16 |
[새싹 성동 2기] 보안관제 실무(2) (0) | 2024.12.16 |
[새싹 성동 2기] 보안관제 실무(1) (1) | 2024.12.16 |