반응형
1. SSRF (Server-Side Request Forgery)
정의
SSRF는 공격자가 서버로 하여금 악의적인 요청을 외부 또는 내부 네트워크 리소스에 보내도록 유도하는 취약점입니다. 이 취약점은 주로 서버가 사용자의 입력을 신뢰하여 다른 리소스에 HTTP 요청을 보내는 기능을 가지고 있을 때 발생합니다.
공격 방식
공격자는 서버가 임의의 URL 또는 IP 주소로 요청을 보낼 수 있도록 조작합니다. 이를 통해 공격자는 내부 네트워크나 외부 시스템에 접근할 수 있습니다.
주요 특징
- 내부 네트워크로의 접근: 공격자가 외부에서 직접 접근할 수 없는 내부 시스템이나 네트워크에 서버를 이용해 접근할 수 있습니다.
- 외부 시스템 공격: 공격자는 서버를 중간자로 사용해 외부 서버에 악의적인 요청을 보낼 수도 있습니다.
- HTTP 요청을 포함한 다양한 프로토콜: SSRF는 HTTP뿐만 아니라 FTP, SMTP와 같은 다양한 프로토콜을 악용할 수 있습니다.
예시
- 서버가 사용자로부터 URL을 받아 그 URL의 내용을 가져오는 기능이 있을 때, 공격자가 http://localhost/admin과 같은 내부 URL을 입력해 내부 관리 페이지에 접근할 수 있습니다.
주요 목표
- 내부 서비스 및 리소스 노출
- 네트워크 스캐닝
- 외부 시스템 공격에 사용
2. LFI (Local File Inclusion)
정의
LFI는 공격자가 서버에서 로컬 파일을 불러오도록 유도하는 취약점입니다. 주로 웹 애플리케이션이 파일 경로를 동적으로 처리하는 과정에서 사용자 입력을 제대로 검증하지 않을 때 발생합니다.
공격 방식
공격자는 파일 경로를 조작하여 서버의 로컬 파일 시스템에 접근할 수 있습니다. 이때, 공격자는 서버의 중요한 파일이나 소스 코드에 접근할 수 있습니다.
주요 특징
- 로컬 파일 노출: 서버의 로컬 파일 시스템에 있는 중요한 파일을 불러오게 하여, 민감한 정보(예: /etc/passwd, 설정 파일, 소스 코드 등)를 노출시킵니다.
- 코드 실행 가능성: 경우에 따라 로컬 파일 포함 취약점을 악용하여 악의적인 파일을 실행하거나, 원격 코드를 포함시켜 서버에서 실행할 수도 있습니다.
- 경로 조작: 공격자는 경로 탐색(../)을 사용하여 서버의 루트 디렉토리나 민감한 파일에 접근할 수 있습니다.
예시
- PHP 코드에서 include($_GET['page']);와 같이 사용자의 입력을 파일 경로로 받아서 페이지를 불러오는 기능이 있을 때, 공격자가 page=../../../../etc/passwd와 같은 입력을 통해 서버의 passwd 파일을 불러올 수 있습니다.
주요 목표
- 민감한 파일 정보 노출
- 소스 코드 및 설정 파일 노출
- 코드 실행 및 권한 상승
SSRF와 LFI의 주요 차이점
항목SSRF (Server-Side Request Forgery)LFI (Local File Inclusion)
목적 | 서버를 통해 내부 또는 외부 리소스에 요청을 보냄 | 서버의 로컬 파일 시스템에서 파일을 불러옴 |
공격 범위 | 네트워크 내외부 리소스 (HTTP, FTP, SMTP 등) | 서버의 로컬 파일 시스템 |
공격자의 목표 | 내부 네트워크 접근, 외부 시스템 공격 | 민감한 파일 노출, 코드 실행 가능성 |
악용할 수 있는 입력 | URL, IP 주소 등 | 파일 경로, 파일명 |
주요 프로토콜 | HTTP, FTP, SMTP 등 다양한 프로토콜 | 파일 시스템 관련 기능 (주로 파일 경로 포함) |
악용 가능성 | 네트워크 스캐닝, 내부 리소스 접근, 외부 시스템 공격 | 민감한 정보 노출, 코드 실행 또는 원격 코드 포함 가능 |
요약
- SSRF는 서버를 이용해 공격자가 내부 또는 외부 네트워크로 요청을 보내는 것을 목표로 하는 취약점입니다. 주로 서버가 다른 리소스에 대한 요청을 처리할 때 발생하며, 내부 네트워크 리소스에 대한 비인가된 접근이 가능하게 됩니다.
- LFI는 서버의 로컬 파일을 포함하여 공격자가 파일을 읽거나 실행할 수 있도록 유도하는 취약점입니다. 주로 파일 경로 조작을 통해 민감한 서버 파일을 노출시키는 것이 목표입니다.
반응형
'다양한 TIP' 카테고리의 다른 글
multipart boundary 에 사용가능한 문자(feat. rfc 1521) (0) | 2024.10.11 |
---|---|
Warning Message 삭제방법(missing-braces, overloaded-virtual) (0) | 2024.09.02 |
온라인으로 sql 문법 확인하는 방법(sqlite, mariadb, postresql, mssql) (0) | 2024.08.26 |
댓글