File Upload Vulnerability
-공격자의 파일을 웹 서비스의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점
-파일 시스템 상 임의 경로에 원하는 파일을 업로드하거나 악성 확장자를 갖는 파일을 업로드할 수 있을 때 발생
(이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생)
-원하는 시스템 커맨드를 실행하는 원격 코드 실행 취약점을 유발
-파일 업로드 취약점은 Path Traversal과 악성 파일 업로드로 분류
-파일 업로드를 허용하는 대개의 서비스는 보안을 위해 특정 디렉터리에만 업로드를 허용가능
만약 제한이 없다면, 악의적인 이용자가 웹 서버의 소스 코드나 서버에 있는 중요 시스템 파일을 덮어 쓸 위험이 있음!!
* Path Traversal 취약점: 업로드에 존재하는 이러한 제약을 우회하여, 임의 디렉터리에 파일을 업로드할 수 있는 취약점
. : 현재 디렉리
.. : 상위 디렉터리
File Download Vulnerability
-웹 서비스의 파일 시스템에 존재하는 파일을 다운로드 하는 과정에서 발생하는 보안 취약점
-공격자는 웹 서비스의 파일 시스템에 존재하는 임의 파일을 다운로드 받을 수 있음
-설정 파일, 패스워드 파일, 데이터 베이스 백업 본 등을 다운로드 하여 민감한 정보를 탈취할 수 있고 2차 공격을 수행가능
Common Gateway Interface(CGI)
: 동적인 컨텐츠를 처리하기 위해서 웹 서버와 php 같은 외부의 프로그램에 사이에서 인터페이스를 제공하는 프로토콜
업로드 취약점을 막기 위해서, 개발자는 업로드 디렉터리를 웹 서버에서 직접 접근할 수 없도록 하거나, 업로드 디렉터리에서는 CGI가 실행되지 않도록 해야 하고 업로드된 파일 이름을 그대로 사용하지 않고 basepath와 같은 함수를 통해 파일 이름을 검증한 후 사용해야 하며 허용할 확장자를 명시해 그 외 확장자는 업로드될 수 없도록 해야 한다.
다운로드 취약점을 막기 위해서, 요청된 파일 이름을 basepath과 같은 함수를 통해 검증하거나 파일 이름과 1:1 맵핑되는 키를 만들어 이용자로부터 파일 이름이 아닌 키를 요청하도록 해야 한다.
<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
(A) (B)
</FilesMatch>
'소학회 > Dreamhack' 카테고리의 다른 글
| [Dreamhack] ServerSide: SSRF (2) | 2023.11.21 |
|---|---|
| [Dreamhack_워게임] image-storage 문제풀이 (2) | 2023.11.18 |
| [Dreamhack]ServerSide: Command Injection (0) | 2023.11.14 |
| [Dreamhack_워게임] simple_sqli 문제풀이 (0) | 2023.11.10 |
| [Dreamhack_워게임] Carve Party 문제풀이 (0) | 2023.11.10 |