정보보안(산업)기사

9일차 : 웹 애플리케이션 취약점 심화

mamdragors 2026. 2. 25. 10:07

9일차 학습 범위인 **웹 애플리케이션 취약점 심화(PART 03 SEC 08-05~14)**는 웹 해킹의 실전 기술들과 이를 방어하기 위한 **시큐어 코딩(Secure Coding)**의 핵심 원칙을 다룹니다.

어제 배운 인젝션이 '데이터'를 노리는 공격이었다면, 오늘은 **'파일'**과 '서버 권한' 자체를 노리는 공격들을 학습합니다.


1. 웹 애플리케이션 취약점 (SEC 08-05~10)

  • OS Command Injection: 웹 파라미터를 통해 서버 운영체제의 명령어를 실행하는 공격입니다.
    • 예: ; rm -rf / 또는 | cat /etc/passwd 등을 입력값에 삽입.
  • 파일 업로드(File Upload) 취약점: 악성 스크립트(WebShell)를 서버에 업로드하여 원격으로 서버를 제어하는 공격입니다. 실기 시험에서 가장 위험도가 높은 공격으로 꼽힙니다.
    • 방어: 확장자 화이트리스트 검사, 파일명 변경 보관, 실행 권한 제거.
  • 파일 다운로드 & 경로 추적(Path Traversal): ../ 문자를 이용해 상위 디렉터리로 이동하여 /etc/passwd 같은 민감한 파일을 다운로드하는 공격입니다.
  • 파일 삽입(File Inclusion): 서버 측 코드에 외부 파일을 포함시키는 공격입니다.
    • LFI (Local): 서버 내부에 있는 파일을 실행.
    • RFI (Remote): 외부 서버(http://...)에 있는 악성 코드를 불러와 실행.

2. 세션 관리 및 기타 취약점 (SEC 08-11~13)

  • 불충분한 세션 관리: 세션 타임아웃이 너무 길거나, 로그아웃 후에도 세션이 유효한 경우, 또는 세션 ID가 추측 가능한 경우 발생합니다.
  • 정보 누출: 서버의 에러 메시지(500 에러 등)를 통해 DB 정보나 서버 경로가 노출되는 취약점입니다.
    • 대응: 사용자에게는 추상적인 에러 메시지만 보여주어야 함.

3. 개발 보안관리: 시큐어 코딩 (SEC 08-14)

실기 주관식에서 **"보안 약점과 보안 취약점의 차이"**나 **"입력값 검증 단계"**를 묻는 경우가 많습니다.

  • 시큐어 코딩 7대 요항목:
    1. 입력 데이터 검증 및 표현 (SQLi, XSS 등 방지)
    2. 보안 기능 (인증, 권한, 암호화)
    3. 시간 및 상태 (병렬 처리 오류)
    4. 에러 처리 (정보 누출 방지)
    5. 코드 오류 (널 포인터 역참조 등)
    6. 캡슐화 (중요 정보 노출)
    7. API 오용

🔍 실기형 핵심 체크리스트

  1. 파일 업로드 취약점의 궁극적 대응: 업로드된 파일이 저장되는 디렉터리의 실행 권한(Execute)을 제거하는 것입니다.
  2. WebShell(웹셸)이란?: 웹 스크립트(asp, php, jsp) 형식으로 작성되어 서버 명령어를 실행할 수 있게 해주는 악성 프로그램입니다.
  3. Path Traversal 방어: 입력값에서 .., /, \ 같은 경로 제어 문자를 필터링해야 합니다.

✍️ 오늘의 1분 인출 연습:

  1. 웹을 통해 서버 운영체제 명령어를 실행시키는 공격 명칭은?
  2. 공격자가 서버를 제어하기 위해 업로드하는 악성 스크립트 파일을 무엇이라 부르는가?
  3. 상위 디렉터리로 이동하기 위해 사용하는 특수 문자의 조합은?

오늘은 PART 03 SECTION 08-05~14를 정독하세요. 특히 파일 업로드 방어 기법 3가지는 실기 서술형 단골이니 꼭 외워두시기 바랍니다. 내일은 웹 서버(Apache 등) 자체의 취약점과 로그 분석을 공부하겠습니다! 궁금한 점이 생기면 언제든 물어봐 주세요.