백엔드 공부 메모/네트워크

웹 공격 기술(2) - 웹 서버 설정/설계 미비로 인한 취약성

볼륨조절불가 2024. 3. 9. 14:28
728x90

 

 

* 해당 게시글은 <그림으로 배우는 Http&Network Basic>을 읽고 정리하면서 공부하기 위해 메모하듯 작성하는 글입니다.

 

 


 

 

강제 브라우징(Forced Browsing)

  • 웹 서버의 공개 디렉토리에 있는 파일 중, 공개 의도가 없는 파일이 열람되게 하는 취약성
  • 영향
    • 고객 정보 등 중요 정보 누설
    • 본래 액세스 권한이 있는 사용자에게만 표시하는 정보 누설
    • 어디에서도 링크되지 않은 파일 누설
공개하고 싶지 않은 파일의 URL을 숨기는 보안 대책의 경우, 해당 URL을 알게 되면 파일 열람 가능

강제 브라우징이 발생 가능한 경우

  • 디렉토리 내용 일람
    • 디렉토리 이름을 지정함으로써 파일 목록이 표시되고 파일명 확인 가능
  • 추측하기 쉬운 파일명, 디렉토리명
  • 백업 파일 
    • 편집 프로그램 등에서 자동 생성하는 백업 파일은 실행 권한이 없어 소스 코드가 표시되는 경우 존재
  • 인증 후에만 표시되어야만 하는 파일
    • 인증이 필요한 웹페이지에서 이용되는 파일의 URL을 직접 지정해 바로 액세스 가능

강제 브라우징 예시

  • 볼륨조절불가의 비공개 글은 볼륨조절불가와 친구를 맺고 있는 사람만이 열람 가능
  • 비공개 글의 이미지가 아래와 같은 태그로 이루어져 있다고 가정
    • <img src="http://exam.com/img/aasdfaslkkl.jpg">
  • 해당 이미지의 URL을 알 수만 있다면 URL에 직접 액세스해 이미지를 확인 가능
    • 글에만 액세스 권한이 설정되어 있고, 이미지에는 액세스 권한이 설정되어 있지 않기 때문에 이미지는 누구나 확인 가능

 

 


 

 

부적절한 에러 메시지 처리

  • 공격자에게 유익한 정보가 웹 애플리케이션의 에러 메시지에 포함된다는 취약성
  • 에러 메시지 유형
    • 웹 애플리케이션에 의한 에러 메시지
    • 데이터베이스 등의 시스템에 의한 에러 메시지

사례1 - 웹 애플리케이션에 의한 에러 메시지

  • 로그인 페이지에서 인증 기능의 인증 에러가 발생하는 상황
    • 입력한 메일 주소와 패스워드의 조합이 잘못되었을 때 에러 메시지를 표시
  • 공격자가 임의의 메일 주소를 입력하는 경우, 에러 메시지를 통해 DB에 저장된 메일 주소 추론 가능
    • "메일 주소가 등록되어 있지 않습니다" 라는 메시지를 통해 공격자가 입력한 메일 주소가 없음을 확인할 수 있음
    • "패스워드가 틀렸습니다" 라는 메시지를 통해 공격자가 입력한 메일 주소가 존재함을 확인 가능
  • 공격자가 추론할 수 없도록 너무 구체적인 에러 메시지를 제공하지 않아야 함
    • "인증 오류입니다" 정도로 제공하는 편이 좋음

사례2 - 데이터베이스 등의 시스템에 의한 에러 메시지

  • 사이트에서 정보를 검색하는 데 오류가 발생하는 상황
  • 이때 에러 메시지를 부적절하게 처리하여 문제가 발생
    • 검색할 때 예상치 못한 문자열을 입력받아 오류가 생길 때, 아무 처리도 안 하는 경우 데이터베이스의 에러가 표시되는 경우 존재
    • 이를 통해 서버의 데이터베이스가 MySQL인지 다른 DB인지를 공격자가 파악할 수 있음
    • 그리고 DB에 접근하기 위한 프로그래밍 문법(SQL 쿼리 등)이 표시되기도 하는데, 이 경우 SQL 인젝션 등으로 악용될 수 있음
<시스템이 출력하는 오류>

PHP나 ASP 등의 스크립트 에러
데이터베이스나 미들웨어의 오류
웹 서버 에러
  • 에러 메시지가 공격 힌트로 이용되지 않도록, 각 시스템의 설정에 의한 상세한 에러 메시지를 제한하거나 커스텀 에러 메시지를 이용하면 좋음

 

 

오픈 리다이렉트(Open Redirect)

  • 지정한 임의의 URL로 리다이렉트하는 기능
  • 리다이렉트되는 곳의 URL에 악의가 있는 웹사이트가 지정된 경우 유저가 그 웹사이트로 유도되는 취약성 발생

사례 - 파라미터로 지정한 URL에 리다이렉트하는 웹 애플리케이션

  • 공격자가 의도한 URL로 고친 링크를 유저가 클릭하도록 유도
    • 공격자가 준비한 링크: http://example.com?redirect=http://hackr.jp
  • 유저는 example.com을 기대하고 공격자의 링크를 클릭했지만, 웹 애플리케이션의 기능에 의해 공격자가 의도한 URL인 hackr.jp로 접속하게 됨
  • 이처럼, 유저가 신뢰하는 웹 사이트에 오픈 리다이렉트 기능이 있으면 공격자가 이를 악용해 피싱 사기 범죄를 저지를 가능성 존재
728x90