웹 보안 이론 3
CSRF
개념
- 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 수행.
- 사용자가 인증된 상태에서 공격자가 준비한 악의적인 링크 또는 스크립트를 실행.
- 해당 웹사이트는 이를 사용자의 요청으로 인식하고 공격자가 원하는 작업을 수행.
디렉토리 리스팅
개념
- 웹 서버 설정 오류로 인해 웹 사이트의 디렉토리 구조와 파일 목록이 노출되는 취약점.
- 공격자는 이를 통해 웹 사이트의 민감한 정보에 접근하여 악용.
(예: 소스코드, 백업파일, 설정파일)
위험성
- 민감한 정보 노출
- 소스코드, 백업파일, 설정파일 등이 노출되어 공격자가 웹 사이트의 작동 방식을 파악하고 취약점을 찾아 악용.
- 악성 코드 업로드
- 업로드 가능한 디렉토리를 찾아 악성 코드를 업로드하고 실행.
- 웹 사이트 변조
- 웹 사이트의 파일을 변조하여 내용을 변경하거나 악성 코드를 삽입.
- 데이터 유출
- 데이터베이스 연결 정보 등이 포함된 설정 파일로 인해 민감한 데이터가 유출될 위험.
방어 방법
- 웹 서버 설정
- 디렉토리 리스팅을 비활성화.
- Apache:
.htaccess
파일에Options -Indexes
추가. - Nginx:
nginx.conf
파일에autoindex off;
추가.
- Apache:
- 디렉토리 리스팅을 비활성화.
- 디렉토리 인덱스 파일
- 각 디렉토리에
index.html
또는index.php
와 같은 파일을 생성.
- 각 디렉토리에
- 접근 제어
- 민감한 디렉토리에 대한 접근 제한.
- 정기적인 보안 점검
- 웹 서버와 디렉토리의 보안 상태를 주기적으로 점검.
헤더 구조
개념
- HTTP 메시지에 포함된 추가 정보로 웹 클라이언트와 서버 간 통신에 사용.
- 헤더는 콘텐츠 표시 및 보안을 유지하는 데 중요한 역할을 함.
헤더 형식
- 필드 이름 : 값
종류
- 요청 헤더
- 응답 헤더
기능
- 캐싱 정책 지정
- 예:
no-cache
,max-age
.
- 예:
- 연결 관리 방법 지정
- 예:
keep-alive
,close
.
- 예:
- 메시지 생성 날짜와 시간 정보 제공
웹쉘
개념
- 공격자가 서버를 원격으로 제어할 수 있도록 설계된 악성 스크립트.
- PHP, ASP, JSP 등으로 작성.
- 웹 서버에 업로드되어 시스템 명령어 실행, 파일 업로드 및 다운로드, 데이터베이스 조작 등을 수행.
종류
- 단순 웹쉘
- 파일 업로드, 명령어 실행 등 기본적인 기능 제공.
- 암호화된 웹쉘
- 탐지를 어렵게 하기 위해 암호화된 형태.
- 루트킷 웹쉘
- 시스템에 숨어 탐지를 어렵게 만드는 웹쉘.
- C&C 웹쉘
- 공격자와 명령제어 서버 간 통신 기능을 포함.
공격 방법
- 파일 업로드
- 파일 업로드 취약점을 이용해 웹쉘 업로드 후 실행.
- SQL 삽입
- 데이터베이스에 웹쉘 코드를 삽입하여 실행.
- 원격 파일 포함
- 원격 파일 포함 취약점을 악용하여 외부 서버에 있는 웹쉘을 실행.
- 취약한 플러그인 및 애플리케이션
- 설치된 취약한 플러그인이나 애플리케이션을 통해 웹쉘 업로드.
방어 방법
- WAF (웹 애플리케이션 방화벽)
- 웹쉘 탐지 및 차단.
- 보안 업데이트
- 서버와 애플리케이션의 최신 보안 패치 적용.
- 파일 업로드 제한
- 업로드 파일 유형과 크기 검증.
- 입력 검증
- 모든 사용자 입력 값을 철저히 검증.
- 정기적인 보안 감사
- 시스템 및 서버에 대한 정기 점검.
- 모니터링 및 로깅
- 서버의 활동을 모니터링하고 이상 활동 로그를 분석.
탐지 및 분석
- 파일 무결성 검사
- 중요한 파일의 무결성을 주기적으로 검사하여 변경 사항 감지.
- 로그 분석
- 비정상적인 파일 업로드 및 명령 실행 로그 분석.
- 보안 도구 활용
- 웹쉘 탐지 도구를 사용해 서버에서 악성 스크립트 검색.
- 수동 분석
- 의심스러운 파일을 직접 분석하여 웹쉘 여부 확인.