Vulnerability Analysis 3

2024. 4. 20. 14:14CERT

목차

  • File Download Vulnerability
  • Important Information Disclosure Vulnerability in Source Code
  • Open Web Bulletin Vulnerability

 

File Download Vulnerability

 

정의

  • 파일 다운로드 시 허용된 경로 외 다른 경로의 파일에 접근하여 공격자가 임의의 위치에 있는 파일을 열람하거나 다운받는 것을 허용하는 취약점을 말한다.

보안 위협

  • 해당 취약점이 존재할 경우 공격자는 파일 다운로드 시 애플리케이션의 파라미터 값을 조작하여 웹 사이트의 중요한 파일(DB 커넥션 파일, 애플리케이션 파일 등) 또는 웹 서버 루트에 있는 중요한 설정 파일(passwd, shadow 등)을 다운받을 수 있음
  • cgi, jsp, php 등 파일 다운로드 기능을 제공해주는 애플리케이션에서 입력되는 경로를 검증하지 않는 경우 임의의 문자(../.. 등)나 주요 파일명의 입력을 통해 웹 서버의 홈 디렉토리를 벗어나서 임의의 위치에 있는 파일을 열람하거나 다운받는 것이 가능함

점검 대상 및 판단 기준

  • 대상: 웹 애플리케이션 소스코드, 웹 서버, 웹 방화벽 
  • 판단기준 
    • 양호 : 다운로드 파일이 저장된 디렉토리 이외에 접근이 불가능한 경우 
    • 취약 : 다운로드 파일이 저장된 디렉토리 이외에 접근이 가능한 경우 
  • 조치방법: 다운로드 시 허용된 경로 이외의 디렉터리와 파일에 접근할 수 없도록 구현

점검 방법

  • Step 1) 웹 사이트에 cgi, jsp, php 등의 애플리케이션을 이용하여 파일을 다운받는 페이지가 있는지 조사

 

  • Step 2) 웹 사이트에서 파일 다운로드 시 요청(Request) 정보에 파일 경로를 웹 서버(웹 사이트 포함) 중요 파일(winnt\win.ini, /etc/passwd 등)의 상대 경로(../)로 치환한 후 전송했을 때 해당 경로 파일들을 다운로드 가능한지 확인
  • ex) ../../../../../../../../../../../../etc/passwd ../../../../../../../../../../../../winnt/win.ini ../../../../../../../../../../../../boot.ini

 

  • Step 3) "Step 2"에서 파일 다운로드가 불가능한 경우 변조한 파일 경로를 아래의 인코딩(또는 치환, 종단문자추가)을 적용하여 재전송 후 다운로드 가능한지 확인

대응 방안

 

$ chmod 700 /etc/passwd // 접근할 필요가 없는 파일에 일반 사용자가 접근 못하도록 권한 설정

  • 시스템 내 중요 파일 및 디렉토리 권한을 사용자가 접근하지 못하도록 설정
import os
from django.shortcuts import render


def get_info(request):
   request file = request.POST.get(‘request_file’)
   (filename, file_ext) = os.path.splitext(request_file)
   file_ext = file_ext.lower()


   # 외부 입력값으로 받은 파일 이름은 검증하여 사용
   if file_ext not in [‘.txt’, ‘.csv’];
      return render(request, ‘/error.html’, {‘error’:’파일을 열 수 없습니다.‘})


   # 파일 명에서 경로 조작 문자열을 필터링 한다.
   filename = filename.replace(‘.’, “)
   filename = filename.replace(‘.’, “)
   filename = filename.replace(‘\\’, “)


   try:
      with open(filename + file_ext) as f:
          data = f.read()
   except:
      return render(
           request, “/error.html”, {“error”: “파일이 존재하지 않거나 열 수 없는 파일입니다..”}
     }


return render(requst, ‘/success.html’, {‘data’:data})

KISA에서 발행한 Python_시큐어코딩_가이드

  • 시큐어 코딩을 통해 경로 조작 문자열 필터링

 

 

Important Information Disclosure Vulnerability in Source Code

정의

  • 소스코드 주석문에 민감한 정보(개인 정보, 시스템 정보 등)이 포함되어 있는 경우, 외부공격자에 의해 해당 정보가 노출될 수 있는 취약점

보안 위협

  • 내부에서 주로 쓰는 점검용 IP 라든가, 기타 사용자 주요 정보등이 노출되어 사회공학공격, 백도어 등과 같은 2차 피해가 발생할 수 있다.

점검 방법

  • 웹 페이지에서 소스보기를 통해 민감한 정보 존재여부 확인 가) 로그인 등 중요정보가 포함될 것으로 의심이 되는 웹 페이지 소스보기 수행 

대응 방안

  • 홈페이지 소스코드에는 디버깅 목적으로 주석 ID, 패스워드, 시스템 관련정보 등 보안관련 정보가 남지 않도록 개발완료 후 제거 필요

 

Open Web Bulletin Vulnerability

정의

  • 교육기관에서는 웹서버 구축 시 금전적, 시간적인 부담으로 인해 공개용게시판(제로보드, 테크노트 등)을 많이 이용하고 있으며, 공개용 게시판을 사용할 경우, 오픈 소스로 구성된 게시판이기에 각종 취약점이 외부에 공개된 취약점을 지니고 있으며, 이에 대한 보안 패치가 제대로 이루어지지 않은 게시판을 의미한다.

보안 위협

  • SQL 인젝션으로 인한 계정 정보 유출 및 웹쉘 코드 삽입으로 인한 홈페이지 해킹을 통해 웹서버 원격제어, 홈페이지 변조, 데이터베이스 정보 유출 등의 2차 피해를 당할 수 있다.

점검 방법

  • 웹서버에서 운영 중인 공개용 게시판을 검색

 

  • 공개용 게시판을 이용해야할 경우 운영 중인 게시판이 최신 버전임을 점검

 

대응 방안 

  • 웹서버에는 공개용 웹 게시판 사용을 지양
  • 부득이 사용해야 할 경우 보안 취약점이 존재하지 않도록 보안 패치 또는 최신 버전의 제품으로 설치한다.
  • 정기적으로 게시판 배포 사이트에 방문하여 보안 취약점 정보를 확인
    • 게시판 재설치 시 기존 데이터가 삭제될 수 있으므로 백업 작업을 수행한 후에 재설치가 요구된다.

'CERT' 카테고리의 다른 글

웹 셸  (0) 2024.05.27
Vulnerability Analysis 4  (0) 2024.05.22
Vulnerability Analysis 2  (0) 2024.03.30
Vulnerability Analysis 1  (2) 2024.03.26
Shodan  (0) 2024.03.09