파일 업로드

justugi·2024년 5월 18일

웹 취약점 진단

목록 보기
8/19

주의사항 : 이 포스팅은 개인 학습 및 교육적 목적으로 작성되었으며, 제공하는 정보를 악용하여 불법적인 행위를 하는 것은 엄격히 금지되어 있습니다. 웹 취약점 진단은 해당 웹사이트의 소유자의 명시적인 허가 없이는 수행해서는 안되며, 웹 취약점을 발견하였을 경우 즉시 해당 웹사이트의 소유자나 관리자에게 알려야 합니다.

파일 업로드

: 파일 첨부를 할 수 있는 웹에 악성 스크립트 파일(웹 쉘/jsp, php, asp 등)을 업로드 후 외부에서 실행하여 해당 시스템을 제어할 수 있는 취약점으로, 시스템 내부 명령어 실행 및 디렉토리 열람, 웹 서버 변조가 가능하다.

웹 쉘(Web Shell)

: 웹 페이지를 통해 shell을 사용하는 것을 의미한다. 보통 shell은 telnet, ssh 등 단말에 접속할 수 있는 프로토콜을 이용하여 접속하는데, 웹 쉘은 웹 페이지에서 서버에게 명령을 내리는 인터페이스 역할을 한다. 웹 쉘은 업로드 취약점을 통해 시스템에 악성 코드를 업로드하고 실행되어 시스템에 명령을 실행하거나 데이터를 탈취하는 방식으로 동작할 수 있다.

점검 절차

: 서버 측에 스크립트 파일이 업로드 가능하면 취약한 것으로 판단한다. 업로드 가능한 확장자 종류는 일반적으로 asp, php, jsp가 있으나 확장자 변조를 통해 다양한 우회 기법이 존재한다. 특히 IIS 웹서버의 세미콜론(;) 파싱 버그는 가장 흔하게 사용되는 기법 중 하나이다.

  1. 게시글에 스크립트 파일을 첨부하여 업로드 시도한다.
  2. 업로드 파일이 필터링 될 시, 웹 프록시나 확장자 변조 등을 통해 우회한다.
  3. 업로드 성공 시 파일의 경로를 파악한다.
  4. 업로드 파일 저장 경로에 접속 후 악성코드가 실행되는지 확인한다.

보안 대책

  1. 파일 확장자 검증 : 허용된 형식과 확장자의 파일만 업로드 되도록 설정한다.
  2. 실행 권한 제거 : 웹 서버에서 저장되는 파일이나 업로드 디렉토리 실행 권한을 제거한다.
  3. 저장 경로 제한 : 업로드 파일을 외부에서 접근 불가능한 경로(DB)에 저장한다.
  4. 파일 업로드 장소 분리 : 파일 업로드 서버를 웹 서버와 물리적으로 분리한시킨다.
  5. 랜덤 파일명 생성 : 저장되는 파일 이름을 난수화하여 저장한다.

출처
https://m.blog.naver.com/limjongmin15/40162020980
https://blog.muabow.com/247
https://m.blog.naver.com/limjongmin15/40162086756

profile
IT 보안, 관심 있는 것을 공부합니다.

0개의 댓글