파일업로드 편집하기
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
− | '''파일업로드''' | + | '''파일업로드'''란 파일 데이터를 하류 노드에서 상류 노드로 전송하는 것을 말한다. 전송할 때는 파일 전송 프로토콜(FTP)을 사용한다. |
− | |||
==구조== | ==구조== | ||
− | [[파일:파일업로드구조.PNG| | + | [[파일:파일업로드구조.PNG|1000픽셀|섬네일|가운데|'''파일업로드 구조''']] |
− | + | ==라이브러리== | |
− | |||
===com.oreilly.servlet=== | ===com.oreilly.servlet=== | ||
[[파일:Cos.jar사이트.PNG|700픽셀|섬네일|가운데|'''com.oreilly.servlet 다운로드 사이트]] | [[파일:Cos.jar사이트.PNG|700픽셀|섬네일|가운데|'''com.oreilly.servlet 다운로드 사이트]] | ||
87번째 줄: | 85번째 줄: | ||
==취약점== | ==취약점== | ||
− | * '''피해 범위''' : 웹사이트에 악성 스크립트를 이용하여 해당 서버에서 시스템 쉘 명령을 실행하여 시스템의 구조를 파악할 수 있다. | + | * '''피해 범위''' : 웹사이트에 악성 스크립트를 이용하여 해당 서버에서 시스템 쉘 명령을 실행하여 시스템의 구조를 파악할 수 있다. 웹쉘(Web Shell)을 통해 공격을 진행하며 백도어(Backdoor)를 업로드해 사용자 인증없이 서버나 다른 계정에 접속 가능하게 만들어 치명적인 결과를 만들어낼 수 있다.<ref>Luuii , 〈[https://tar-cvzf-studybackup-tar-gz.tistory.com/54 백도어(Backdoor)]〉, 《티스토리》, 2017-11-27</ref> |
* '''공격조건''' : 일단 당연하게도 파일이 업로드 가능한 환경에서 일어나며 파일이 업로드된 디렉토리의 경로를 알아야한다. 또한 디렉토리 경로를 알았다면 업로드된 디렉토리에 대한 실행 권한이 있어야 공격이 가능하다. | * '''공격조건''' : 일단 당연하게도 파일이 업로드 가능한 환경에서 일어나며 파일이 업로드된 디렉토리의 경로를 알아야한다. 또한 디렉토리 경로를 알았다면 업로드된 디렉토리에 대한 실행 권한이 있어야 공격이 가능하다. | ||
* '''원인''' : 웹 서비스를 이용하여 서버측의 명령을 실행할 수 있는 악의적인 목적의 스크립트 파일인 웹셀을 실행할 수 있다. php나 jsp는 서버측에서 동적인 처리를 위하여 사용하는 언어인데 php나 jsp를 활용해 데이터베이스와 통신할 수 있게 만들어준다. 이렇게 할 수 있는 원인은 php나 jsp 언어를 사용하면 리눅스 시스템 명령을 실행할 수 있기 때문이다.<ref>기르르, 〈[https://girrr.tistory.com/99 파일 업로드/다운로드 취약점 - 업로드]〉, 《티스토리》, 2020-04-08</ref> | * '''원인''' : 웹 서비스를 이용하여 서버측의 명령을 실행할 수 있는 악의적인 목적의 스크립트 파일인 웹셀을 실행할 수 있다. php나 jsp는 서버측에서 동적인 처리를 위하여 사용하는 언어인데 php나 jsp를 활용해 데이터베이스와 통신할 수 있게 만들어준다. 이렇게 할 수 있는 원인은 php나 jsp 언어를 사용하면 리눅스 시스템 명령을 실행할 수 있기 때문이다.<ref>기르르, 〈[https://girrr.tistory.com/99 파일 업로드/다운로드 취약점 - 업로드]〉, 《티스토리》, 2020-04-08</ref> | ||
− | * '''대응방법''' : 시큐어 코딩을 하고 취약점 패치를 진행해야한다. 대표적으로 악성 스크립트에 포함될 수 있는 키워드나 명령어에 대한 문장을 필터링할 수 있게 만들고 업로드 파일의 확장자 및 실행권한을 제한하는 방법이 있다. 항상 검증된 웹셀만을 올려야 하며 | + | * '''대응방법''' : 시큐어 코딩을 하고 취약점 패치를 진행해야한다. 대표적으로 악성 스크립트에 포함될 수 있는 키워드나 명령어에 대한 문장을 필터링할 수 있게 만들고 업로드 파일의 확장자 및 실행권한을 제한하는 방법이 있다. 항상 검증된 웹셀만을 올려야 하며 웹쉘 취약점 점검 이후 후속 조치를 통해 업로드 했던 웹셀은 반드시 삭제 해야한다. 업로드 기능이 불필요할 경우 개발단계에서 완전히 제거해야하며 소스코드단에서 편의흫 위해 주석처리하는 등 지양해야한다. 파일 업로드 기능이 필요한 경우에는 서버측에서 파일명을 검사해야한다. 업로드되어 있는 저장되는 파일의 타입, 크기, 개수, 실행 권한을 제한 하고 업로드 되어 저장되는 파일은 외부에서 식별 되지 않아야한다. 프레임워크의 종류를 고려하여 목적에 부합하지 않는 파일은 필터링한다. |
{{각주}} | {{각주}} | ||
109번째 줄: | 107번째 줄: | ||
* [[FTP]] | * [[FTP]] | ||
* [[업로드]] | * [[업로드]] | ||
− | + | {{솔루션|토막글}} | |
− | {{솔루션| |