W7 File Vunerability

hyuun01·2022년 11월 16일
0

WebHacking

목록 보기
11/12

0. 파일 취약점

: 파일을 업로드하거나 다운로드 할 때 발생하는 취약점

  • 업로드와 다운로드 과정에서 발생하는 취약점으로 구분됨

1. 파일 업로드 취약점

: 공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점

  • 파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생
  • 원하는 시스템 커맨드를 실행하는 원격 코드 실행 취약점을 유발할 수 있음
  • 이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생

1) Path Traversal 취약점

  • 보통 보안을 위해 특정 디렉토리에만 업로드를 허용
  • 이러한 제약을 우회하여, 임의 디렉토리에 파일을 업로드할 수 있는 취약점
  • 악의적인 이용자가 웹 서버의 소스 코드나 서버에 있는 중요 시스템 파일을 덮어 쓸 위험

2) 악성 파일 업로드 취약점

  • 이용자가 파일을 업로드할 때, 이를 제대로 검사하지 않아서 발생하는 취약점

웹 셸

: 임의 시스템 명령어를 실행해주는 웹 리소스

  • 웹 서버는 .php, .jsp, .asp와 같은 확장자의 파일을 Common Gateway Interface(CGI)로 실행하고, 그 결과를 이용자에게 반환
  • 공격자가 임의의 php 소스 파일을 .php 확장자로 업로드, GET 요청 보냄
    -> CGI에 의해 해당 코드가 실행되도록 할 수 있음

악의적인 웹 리소스

  • 웹 브라우저는 파일의 확장자나 응답의 Content-Type에 따라 요청을 다양하게 처리
    • 요청한 파일의 확장자가 .html 이거나, 반환된 Content-Type 헤더가 text/html일 경우
      -> 응답은 HTML 엔진으로 처리됨
    • 파일의 확장자가 .png, .jpg등의 이미지 확장자이거나, Content-Type이 image/png일 경우
      -> 이미지로 렌더링됨
  • .html 파일에 악의적인 스크립트를 삽입해 업로드하면 웹은 이를 html로 해석
    -> Cross-Site-Scripting (XSS) 공격

3) 예방책

  • 업로드 디렉토리를 웹 서버에서 직접 접근할 수 없도록 해야
  • 업로드 디렉토리에서는 CGI가 실행되지 않도록 해야
  • 업로드된 파일 이름을 그대로 사용하지 않고 basepath와 같은 함수를 통해 파일 이름을 검증한 후 사용해야
  • 허용할 확장자를 명시해 그 외 확장자는 업로드될 수 없도록 해야
  • 동적 리소스의 확장자를 제한하
  • AWS, Azure, GCP 등의 정적 스토리지를 이용
    -> 서버의 파일 시스템을 이용하지 않기 때문에 파일 업로드 취약점이 웹 서버 공격으로 이어지는 것을 예방


2. 파일 다운로드 취약점

: 웹 서비스의 파일 시스템에 존재하는 파일을 다운로드 하는 과정에서 발생하는 보안 취약점

  • 공격자는 웹 서비스의 파일 시스템에 존재하는 임의 파일을 다운로드 받을 수 있음
  • 설정 파일, 패스워드 파일, 데이터 베이스 백업 본, .... 을 다운로드
    -> 민감한 정보를 탈취O, 2차 공격 수행O
  • 이용자가 다운로드할 파일의 이름을 임의로 정할 수 있을 때 발생

1) Path Traversal을 이용한 파일 다운로드 취약점

: 파일 이름을 직접 입력 받아 임의 디렉토리에 있는 파일을 다운로드 받을 수 있는 취약점

2) 예방책

  • 요청된 파일 이름을 basepath과 같은 함수를 통해 검증
  • 파일 이름과 1:1 맵핑되는 키를 만들어 이용자로부터 파일 이름이 아닌 키를 요청하도록 해야

0개의 댓글