Post

[Web Security] 파일 업로드 공격

[Web Security] 파일 업로드 공격

웹 애플리케이션 개발/운영 환경에서 공격자가 실행 가능한 언어로 작성된 공격 프로그램을 업로드한 후 원격 해당 파일에 접근하여 실행시키는 취약점이다.

1. 파일 업로드 해킹 방법

1) 공격자가 실행 가능한 언어로 작성된 공격 프로그램을 업로드

  • 업로드 기능 이용
  • 개발/운영 환경 : JAVA / .NET / PHP
    • JAVA 환경에서 실행 가능한 언어로 작성된 파일 : .jsp 등
    • .NET 환경에서 실행 가능한 언어로 작성된 파일 : .asp 등
    • PHP 환경에서 실행 가능한 언어로 작성된 파일 : .php 등
  1. .asp 환경임을 확인 image

2) 업로드한 악성 파일을 실행

  • 업로드 한 파일은 서버측 업로드 전용 폴더를 만들어 놓았을 때 보통 해당 폴더에 저장됨
  • 공격자는 업로드 파일 위치한 경로명(폴더 이름)을 알아내고, URL 직접 접근을 통해 실행함

실습을 위해 백신을 꺼야함! 악성 파일임을 확인하고 바로 삭제시키기 때문 -> 실습이 끝나면 바로 백신 켜기!!!

  1. GitHub에 공개된 webshell 파일 다운 image image

웹 쉘(Webshell) : 서버에서 명령어를 실행할 수 있는 악성코드 파일

2. 파일 업로드 취약점

1) 취약성 및 위험성

  • 애플리케이션의 개발, 운영 환경과 동일한 언어로 작성된 악성 파일을 웹 서버 측에 업로드
  • 원격으로 해당 파일에 접근하여 실행시키는 취약점
  • 작성된 공격 파일의 기능에 따라 다양한 위험 존재
  • Websehll 등의 파일을 이용한 시스템 장악 목적

2) 진단 방법

  • 게시판에 첨부파일 기능을 이용하여 가능 여부 확인
    • 게시판에 글쓰기 권한과 파일 첨부 기능이 있는지 확인한 후 확장자가 jsp/php/asp/cgi 등의 파일들이 업로드 가능한지 확인
  1. 다운 받은 cmd.asp 파일 업로드 테스트 image

  2. 특정 확장자만 업로드 가능 image

3. 우회 기법

1) 대소문자 우회 공격

  • 확장자를 비교할 경우 대소문자를 무시한 문자열 비교를 해야 함
  • 대소문자 혼합도 시스템에서는 인식하기 때문에 모든 가능한 문자 조합에 대한 필터링 필요
  • Ex) “.aSp”, “.Jsp”, “.phP”, “.eXe” 등등
  1. .aSp 확장자로 업로드 시도 image

  2. 대소문자 우회 공격 실패 image

2) 확장자 연장 우회 공격

  • 확장자 필터링을 조건문자 (‘.’)를 기준으로 앞쪽부터 유효한 파일인지 필터링하게 되면 공격 받을 수 있음
  • 확장자 필터링을 조건문자 (‘.’)를 기준으로 맨 마지막부터 해야 함
  • Ex) attack.txt.asp
  1. txt를 확장자로 인식하고 업로드 되도록 공격 image

  2. 확장자 연장 우회 공격 성공 확장자를 구분짓는 조건문자 (‘.’) 를 왼쪽부터 검사해서 txt를 확장자로 인식 한 것 -> 우측부터 검사하도록 해야 함! image

3) 특수문자 우회 공격

  • 종단문자를 이용한 우회 공격
  • Ex) “%00”, “%ZZ”, “%09”, “%13” -> %가 들어갔다는 것은 URL 인코딩으로 판단 가능
  1. URL Incode 확인 image

  2. %00이 Null인 것 확인 image

  3. %00이 Null 값(종단)을 의미하므로 cmd.asp 가 되는 것이다. image

  4. 업로드 성공 image

This post is licensed under CC BY 4.0 by the author.