일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- Whois #정보보안교육 #Ajou
- Memory Virtualization
- Pwnable
- Allocation Starategy
- webhacking
- HackCTF
- python
- 운영체제
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- Whois #AjouUniv #정보보안교육 #Pwnable
- Dreamhack
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- ftz
- 스케줄링
- 코딩도장
- Variable Partition
- systemhacking
- AjouUniv #Whois #Reversing
- AjouUniv #Whois #정보보안교육 #Pwnable
- Whois #정보보안교육 #AjouUniv #Pwnable
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- N0Named
- Whois #정보보안교육 #webhacking.kr
- 아주대학교 #Whois #정보보안교육 #4주차
- 아주대학교
- 사이버보안학과
- hackerschool
- AjouUniv #Whois #정보보안교육
- AjouUniv #SuniNatas #Web
- Today
- Total
chipkkang9's story
File Vulnerability(LFI, RFI) 파일 취약점 본문
File Upload Vulnerability (파일 업로드 취약점)
- 웹 서비스를 통해 이용자의 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점으로, 이용자가 업로드될 파일의 이름을 임의로 정할 수 있을 때 발생한다.
- 공격자는 악성스크립트를 서버에 전달하며, 악의적인 역할을 하는 페이지에서 악성 코드가 실행되도록 하는 취약점이다. 이때, 악성 스크립트가 삽입되는 위치가 공격대상의 서버에 위치하면 LFI(Local File Inclusion), 원격지에 위치하면 RFI(Remote File Inclusion)으로 이름붙여진다.
- 일반적으로 RFI, LFI 취약점이 있는지 확인하려면 파라미터 입력 부분에 ../를 넣어 확인하는 방법을 사용한다.
ex) 파일 이름에 이용자가 입력한 문자열을 그대로 사용하거나, 이용자의 이메일, 닉네임 등을 포함시키는 등의 소스 코드 패턴이 위험
- 파일 업로드를 허용하는 대개의 서비스는 보안을 위해 특정 디렉토리에만 업로드 허용한다.
(이러한 제한이 없다면, 악의적인 이용자가 웹 서버의 소스코드나 서버에 있는 중요 시스템 파일을 덮어 쓸 위험이 있음)
- Path Traversal
업로드에 존재하는 제약을 우회하여, 임의 디렉토리에 파일을 업로드할 수 있는 취약점
- 악성 파일 업로드
이용자가 파일을 업로드할 때, 이를 제대로 검사하지 않아 발생하는 취약점
LFI(Local File Inclusion)
LFI(Local File Inclusion) 취약점은 웹 브라우저를 통해 서버에 파일을 포함시키는 취약점이다.이 취약점은 include할 페이지 경로가 적절히 필터링되지 않고 디렉토리 변경 명령어들의 삽입을 허용할 때 일어난다.대부분의 LFI 취약점은 URL을 통해 이루어지는데, 이는 보통 개발자가 GET Method 사용을 선호하기 때문이다.
RFI(Remote File Inclusion)
RFI(Remote File Inclusion) 취약점은 공격자가 악성 스크립트를 서비스 서버에 전달하여 해당 페이지를 통하여 전달한 악성코드가 실행되도록 하는 것이다. 위 LFI 취약점과 다른 점은, 자신의 악성 코드를 원격으로 삽입할 수 있다는 점이다.
웹 셸
웹 서버는 .php, .jsp, .asp와 같은 확장자 파일을 **CGI(Common Gateway Interface)**로 실행하고, 그 결과를 이용자에게 반환한다.
ex) .php, .php3, .phtml이 정규표현식 **“.+\.ph(p[3457]?|t|tml)$”**을 만족하면, x-httpd-php로 핸들링하게한다. 따라서 공격자가 임의의 php 소스 파일을 .php 확장자로 업로드하고, GET 요청을 보낼 수 있다면 CGI에 의해 해당 코드가 실행되도록 할 수 있다.
악의적인 웹 리소스
웹 브라우저는 파일의 확장자나 응답의 content-type에 따라 요청을 다양하게 처리한다.
ex) 요청한 파일의 확장자가 .html이거나, 반환된 content-type 헤더가 text/html일 경우 응답은 HTML 엔진으로 처리된다.
따라서 만약 공격자가 서버에 exploit.html을 업로드하고, 이에 접근하는 URL이 **https://hello/uploads/exploit.html**이라면, 브라우저는 이를 HTML로 해석한다. exploit.html에 악의적인 스크립트를 삽입하면, XSS 공격으로 이어질 수 있다.
File Download Vulnerability (파일 다운로드 취약점)
웹 서비스를 통해 서버의 파일 시스템에 존재하는 파일을 내려 받는 과정에서 발생하는 보안 취약점으로, 이용자가 다운로드할 파일의 이름을 임의로 정할 수 있을 때 발생한다.
예방법
File Upload Vulnerability
업로드 디렉토리를 웹 서버에서 직접 접근할 수 없도록 하거나, 업로드 디렉토리에서는 CGI가 실행되지 않도록 해야 하고 업로드된 파일 이름을 그대로 사용하지 않고 basepath와 같은 함수를 통해 파일 이름을 검증한 후 사용해야 한다. 또한, 허용 확장자르 명시해 그 외 확장자는 업로드될 수 없도록 해야 한다.
File Download Vulnerability
요청된 파일 이름을 basepath와 같은 함수를 통해 검증하거나, 파일 이름과 1:1 매핑되는 키를 만들어 이용자로부터 파일 이름이 아닌 키를 요청하도록 해야 한다.
'Hacking > Web' 카테고리의 다른 글
SQL Injection 취약점 (0) | 2022.02.11 |
---|---|
Burp Suite를 사용하는 이유 (0) | 2022.02.09 |
[Whois 정보보안교육] CORS, CSP 정리 (0) | 2021.09.20 |
[Whois 정보보안교육] Lord of SQLInjection Review (0) | 2021.09.13 |
[Whois 정보보안교육] REST API의 GET, POST, PUT, DELETE (0) | 2021.09.11 |