[리팩토링] #27 웹 취약점

Hyungjun·2025년 3월 14일

Mission

구글링을 통해서 얻을 수 있는 다양한 취약점들이 존재한다.
존재하는 여러가지 취약점들 중 실제 실무에서 중요하게 다루는 취약점들에 대해 상세히 알아보도록 하자.

  1. 관리자 페이지 노출 취약점
  2. 디렉터리 나열 취약점
  3. 시스템 관리 취약점
  4. 불필요한 Method 허용 취약점

#1 관리자 페이지 노출 취약점

  1. 설명
    관리자 페이지가 공개적으로 노출되어 있으면 악의적인 사용자가 웹사이트의 관리 기능에 접근할 수 있다. 이를 통해 데이터 유출이나 시스템 손상 등의 보안 위협이 발생할 수 있다.

  2. 검색 키워드

  • inurl:admin intitle:login
  • inurl:master intitle:관리자
  • intitle:"admin panel"

관리자 페이지 URL이 특정 패턴으로 노출되며, 이 URL을 통해 쉽게 접근할 수 있어 위험하다.

  1. 대응방안
  • 관리 페이지에 강력한 인증 및 권한 부여 기능을 추가한다.
  • IP 화이트리스트를 사용하여 특정 IP에서만 접근 가능하도록 설정한다.
  • 관리자 페이지 URL을 변경하여 예측하기 어렵게 만든다.

#2 디렉터리 나열 취약점

  1. 설명
    서버가 디렉터리 내 파일 목록을 노출하는 경우, 공격자가 서버 구조를 이해하고 취약점을 악용할 수 있게 됩니다.

  2. 검색 키워드

  • intitle:"index of" "/venv"
  • intitle:"index of" "/.vscode"
  • intitle:"index of" "parent directory"

  1. 대응방안
  • 웹 서버 설정에서 디렉터리 목록 나열을 비활성화한다.
  • 인덱스 파일을 이용하여 디렉터리가 아닌 파일만 제공되도록 설정한다.

#3 시스템 관리 취약점

  1. 설명
    시스템 관리자가 사용하는 계정이나 기능이 적절히 보호되지 않으면, 공격자가 이러한 계정을 탈취하여 시스템을 제어할 수 있다.

  2. 검색 키워드

  • intitle:"index of" phpinfo.php
  • intitle:"index of" "admin-login.php"
  • intitle:"index of "sqlnet.log"
  • intext:"Pleas Login" inurl:"/remote/login"
  • intitle:"OpenVpn Status Monitor"

1) intitle:"index of" phpinfo.php
PHP 설정 정보를 표시하는 페이지

  • 서버 취약점 파악: PHP 버전, 로드된 확장 모듈, 서버 소프트웨어 등 세부 정보를 통해 해커는 알려진 취약점을 이용하여 서버를 공격할 수 있다. 예를 들어, 특정 PHP 버전에서 발견된 보안 결함을 악용할 수 있다.

  • 환경 정보 노출: 서버의 경로, 디렉터리 구조 및 환경 변수 등은 해커에게 서버 맵을 제공해 공격 계획을 세우는 데 유리하다.

  • 데이터베이스 접근: 로드된 모듈 정보가 데이터베이스 연결 기능을 포함하고 있을 경우, 해커는 데이터베이스에 접근하기 위한 정보를 더 쉽게 얻을 수 있다.

  • 악용할 수 있는 설정: 특정 PHP 설정(예: allow_url_fopen, display_errors 등)이 공개되면, 해커는 HTTP 요청을 조작하거나 원격 파일 포함(RFI) 공격을 시도할 수 있다.

    • allow_url_fopen
      설명: 이 설정이 On으로 되어 있으면, PHP가 URL을 통해 외부 파일을 포함하거나 읽을 수 있습니다.
      악용 가능성: 해커는 원격 파일 포함(RFI) 공격을 통해 악성 스크립트를 외부 서버에서 서버로 호출하고 실행할 수 있습니다.

    • display_errors
      설명: PHP 오류 메시지를 클라이언트에 표시하는 설정
      악용 가능성: 이 설정이 On일 경우, 서버에서 발생하는 오류 메시지에 시스템 경로, PHP 설정 정보 등을 포함하여 해커에게 유용한 정보를 제공할 수 있다. 이를 통해 해커는 추가 공격 방법을 구상할 수 있다.

    • session.cookie_httponly
      설명: 이 설정이 On이면 JavaScript에서 세션 쿠키를 접근할 수 없게 됩니다.
      악용 가능성: 이 설정이 Off인 경우, XSS(교차 사이트 스크립팅) 공격을 통해 해커가 세션 쿠키를 탈취할 수 있다.

    • session.use_trans_sid
      설명: 이 기능이 활성화되면, URL에 세션 ID가 자동으로 추가된다.
      악용 가능성: 세션 ID가 URL에 포함되면, 사용자가 이 링크를 클릭할 경우 해커가 세션 ID를 쉽게 탈취할 수 있어 세션 하이재킹 공격을 유도할 수 있다.

2) intitle:"index of "sqlnet.log"
sqlnet.log 파일은 Oracle 데이터베이스에서 생성되는 로그 파일로, 데이터베이스 클라이언트와 서버 간의 연결 및 인증 관련 정보를 기록한다.

  • 데이터베이스 공격
    로그 파일에서 사용자 이름과 IP 주소를 파악한 해커는 이를 기반으로 비밀번호 리셋 시도를 하거나 다른 사용자 계정을 타겟으로 삼을 수 있습니다.

  • 정확한 타겟 정보 제공:
    연결된 클라이언트의 IP 주소 정보는 해커가 특정 시스템을 공격할 때 타겟팅을 보다 쉽게 할 수 있도록 만들어 줍니다.

  • 인증 메커니즘 파악
    인증 방식에 대한 정보를 통해 해커는 시스템의 보안을 우회하기 위한 맞춤형 공격을 계획할 수 있습니다. 예를 들어, 약한 인증 방법을 이용하여 무단 접근을 시도할 수 있습니다.

  • 오류 분석
    오류 메시지를 통해 해커는 시스템에서 어떤 점이 취약한지 파악하고 잠재적인 공격 경로를 찾을 수 있습니다.

  • 세션 하이재킹
    활성화된 세션 정보와 타임스탬프를 통해 해커가 세션 하이재킹을 시도할 수 있는 기회를 제공할 수 있습니다.

  1. 대응방안
    웹 서버에 응용프로그램 설치 시 임시 생성되는 파일은 설치가 완료되면 즉시 삭제한다.
    웹 서버 소스상에 설정이 잘못된 것은 없는지, 시스템 보안 설정이 미비한 지 점검하여 해당 시스템에 가장 알맞게 설정한다.
    정기적으로 웹서버의 불필요 파일을 검색하여 제거한다.

#4 불필요한 Method 허용 취약점

  1. 설명
    HTTP 메서드(GET, POST, PUT, DELETE 등) 중 불필요한 메서드가 서버에 허용되면 공격자가 해당 메서드를 이용해 시스템 공격을 시도할 수 있다.

  2. 검색 키워드

  • intitle:"index of" intext:"web.config.txt"
  • intitle:"index of" "nginx.conf.txt"
  • intitle:"index of" intext:"web.xml"

1) intitle:"index of" intext:"web.config.txt"
web.config 파일은 ASP.NET 애플리케이션에서 사용되는 설정 파일로, 데이터베이스 연결 문자열, 인증 방식, 보안 설정 등이 포함되어 있다.
IIS의 경우 불필요한 Method를 비활성화하기 위해서 ‘requestFiltering’ 설정을 추가해야 한다.

2) intitle:"index of" "nginx.conf.txt"
Nginx 웹 서버의 주요 구성 파일로, Nginx의 동작을 정의하는 다양한 설정이 포함되어 있다.
ngnix의 경우 불필요한 Method를 비활성화하기 위해서 ‘limit_except’ 설정을 추가해야 한다.

  1. 대응방안
  • 웹 서버 설정에서 불필요한 HTTP 메서드를 비활성화한다.
  • API 엔드포인트에서 사용할 메서드를 명확히 정의하고, 필요한 메서드만 허용한다.
profile
Cloud Security / DevSecOps / AWS

0개의 댓글