본문 바로가기
IT_정보보안/침해대응 & CERT 프로젝트

29. 침해대응&CERT (7) : 웹 취약점 실습_2

by jys275 2024. 7. 27.

 

취약한 파일 존재 취약점

 

 

해당 취약점의 경우는 일단 취약한 파일을 분류하는 기준, 범위에 대한 고민을 시작해야한다.

 

예를 들어, 일반적인 입장에서는 로그 파일, 백업 파일 등이 취약한 파일이라고 생각할 수 있지만,

실제 취약점 진단, 모의 해킹에서는 내부 문서, 로그 파일, 백업 파일, 압축 파일 등 모두 취약한 파일로 간주하다 보니,

 

서로 생각하고 있는 범위가 다를 수 있는 것이다.

 

즉, 이러한 이유로 추후에 불필요한 감정 소모 등 여러 문제가 생길 여지가 있기 때문에, 취약점 진단이나 모의 해킹을 진행하기 전에

해당 부분에 대한 범위를 서로 간의 합의를 통해서 정확하게 지정하고, 진행하는 것들이 필요하다.

 

정의
웹 서버에 의도하지 않은 파일들(내부 문서, 백업파일, 로그파일, 압축파일 등)이 존재할 경우, 
파일명을 통해 유추하고, 직접 요청하여 공격에 필요한 여러 정보를 획득할 수 있는 취약점을 의미한다.

 

- 내부 문서

의미 그대로 임직원 또는 권한을 보유하고 있는 사용자에게만 접근이 허용되어야한다.

 

- 백업 파일

보통 IP주소, 포트 번호, 계정 정보 등의 중요 정보를 담고 있을 확률이 높다.

이러한 이유로 금융회사 기준으로 권장하는 방법은 별도로 보관하도록 명시하고 있다.

 

- 로그 파일

로그 내에는 실제 사용자가 접속한 기록, IP주소, 포트 번호 등을 포함할 수 있다.

 

- 압축 파일

보통 여러 개의 파일을 합축하기 때문에, 압축을 하는 과정에서

중간에 중요한 파일이 같이 압축되어 보관되는 경우들도 생길 수 있다.

 

백업 파일(backup.zip, index.php.bak), 로그 파일(access.log, error.log, sqlnet.log),
설정 파일(config.php, web.config, application.yml), 디버그 파일(debug.log, phpinfo.php),
테스트 파일(test.php, example.html) 등의 취약한 파일들은 서버 정보, 애플리케이션 구조,
보안 설정, 민감한 데이터 등을 제공할 수 있다.

 

점검방안

  1. 웹서버의 가상 디렉터리로 이동하여, 취약한 파일로 취급될 수 있는 파일들의 확장자명을 기반으로 
  2. 파일을 찾아 불필요한 정보가 포함 되었는지 확인한다.
  3. php 언어로 개발한 웹서버의 경우 phpinfo.php가 존재하는지 점검한다.

대응방안

  1. 웹서버는 개발과 운영 환경을 분리하여 운영 환경에서 소스 코드 수정 또는 테스트 목적의 임시 파일을 생성하지 않도록 한다.
    해당 대응방안 같은 경우 전자금융감독 규정에도 명시되어있는 내용이기에, 사실상 법적 요구사항이다.
    즉, 디폴트로 지켜야하는 항목이지만, 그렇지 않은 경우들도 생각보다 많이 존재한다.
  2. 웹 서버의 디렉터리에 존재하는 기본 설치 파일, 임시 및 백업 파일을 조사하여 웹 사용자가 접근하지 못하도록 조치한다.
  3. 정기적으로 웹서버의 불필요 파일을 검색하여 제거한다.

 

취약한 파일 존재 취약점 - 실습

 

 

intitle:"index of" "backup.zip"

 

intitle:"index of" "wp-config.php.old" | "wp-config.php.backup”
워드프레스 설정 파일(데이터베이스 연결 정보, 인증 키 등 포함)을 찾는다.

 

inurl:"/horde/test.php”
서버의 환경 설정, 디버깅 정보, 경로 정보, 환경 변수 값 등

보안에 매우 취약한 정보를 포함하고 있는 것을 관찰할 수 있다.

 

 


 

 

계정 관리 취약점

 

 

정의
회원가입 시에 안전한 패스워드 규칙이 적용되지 않아, 취약한 패스워드로 회원 가입이 가능할 경우,

Brute Force(무차별 대입공격)을 통해 패스워드가 누출 될 수 있는 취약점을 의미한다.

점검방안

  1. 로그인 페이지에서 추측 가능한 계정(master, webmaster, admin, administrator, root, 
    manager, test, masterweb 등)으로 로그인을 시도한다.

대응방안

  1. 사용자가 취약한 패스워드를 사용할 수 없도록 패스워드 생성규칙을 강제 할 수 있는 로직을 적용한다.

 

계정 관리 취약점 - 실습

 

 

inurl: "/admin" intitle:"Admin Login”
아래와 같은 로그인 페이지가 만약 특정 생성 규칙도 제한되어 있지 않고, 

추측 가능한 취약한 아이디 및 패스워드로 로그인이 가능할 경우, 무차별 대입공격 또는 유추를 통해 로그인이 가능할 수 있다.

 

아래는 비밀번호 생성 규칙을 제한해두어 대응방안을 적용해둔 경우이다.

 

 


 

 

실명 인증 취약점

 

 

해당 취약점을 간략하게 이야기 하자면, 로그인을 통해서 웹페이지에 접근을 한 후,

개인정보를 변경하고자 마이페이지에 들어가서 패스워드 변경이나 개인정보 변경을 클릭을 할 것이다.

 

그러면, 정말로 본인이 맞는지 다시 한번 패스워드를 입력 하거나, 본인 인증을 다시 한번 거치는 과정을

필수적으로 들어가야 되는데, 이러한 것들이 반영되어 있지 않았을 때, 실명 인증 취약점이 존재한다라고 이야기한다.

 

정의
사용자 본인 확인 과정상에서 취약한 프로그램을 악용하여 사용자 정보를 변조할 수 있는 취약점을 의미한다. 

실명인증 취약점을 통해 관리자로 위장하여 개인정보를 수집하거나, 

홈페이지 가입 시 제공하는 포인트 등을 악용하는 등의 공격이 발생할 수 있다.

점검방안

  1. 관리하고 있는 웹서버 내의 실명인증 페이지로 이동한 후, 웹 프록시(proxy) 프로그램을 이용하여,
    실명인증 과정 중에 발생하는 네트워크 트래픽을 모니터링하여, 실명정보를 수정하는 방법으로 점검한다.

대응방안

  1. 중요한 정보가 있는 홈페이지(실명 등)는 재인증을 적용하고, 안전하다고 확인된 라이브러리나 
    프레임워크(OpenSSL이나 ESAPI의 보안기능 등)를 사용하여, 홈페이지 개발 보안 조치를 수행한다.

 

실명인증 우회 과정 예시

  1. 공격자는 취약점이 존재하는 웹서버에 정상적인 사용자의 개인정보로 접속하여 실명인증을 수행한다.
  2. 웹서버(또는 개인)는 인증기관으로 실명정보 확인을 요청한다.
  3. 실명정보를 확인한 인증기관은 웹서버에 사용자의 나이, 성별, 연락처 등의 개인정보를 전달하며
    사용자에게는 "실명인증 성공" 메시지를 전달한다.
  4. 공격자는 수신한 실명인증 결과를 웹 프록시 툴을 이용하여 임의의 사용자로 변조 후 가입 또는 글 작성을 완료한다. 
  5. 취약점이 존재하는 웹서버는 사용자가 요청한 정보를 검증과정 없이 신뢰하여 변조된 사용자의 가입(또는 글 작성)을 허용한다.
  6. 글쓰기(또는 회원 가입)를 완료한 후 글 작성자의 이름이 임의로 변조한 사용자 이름으로 등록 되었는지 확인한다.

해당 취약점 같은 경우는 보통 회사 내에서 특정 서비스를 개발하는 등의

새로운 것들을 도입하는 과정을 진행할 때, 보안성 심의라는 것을 진행한다.

 

보안성 심의란 여러 가지 항목들을 바탕으로 미흡사항을 체크하고,

해당 미흡사항들을 조치해야만 서비스를 오픈할 수 있도록 하는 프로세스를 의미한다. 

 

보안성 심의 항목에는 디폴트로 실명 인증 취약점에 해당하는 내용들이 들어가 있다.

해당 취약점은 계정 정보를 탈취할 가능성과 관리자의 권한으로 접근하는 등의 위험도가 매우 높은 취약점이다 보니,

 

기본적으로 서비스를 개발하거나 오픈하기 이전에 보완성 심의를 진행하는 과정에 필수로 포함되어 있는 항목이기에,

사실상 서비스가 오픈되고 나서는 잘 발생되지는 않는 취약점이라고 볼 수 있다.


하지만 해당 취약점이 특정 경우에 추가적으로 발생될 수 있다면,

내부적으로 무언가 취약점이 생겨서 유지보수를 진행했다거나, 추가적으로 기능 개발을 하는 등의 과정을 거쳤을 때,

 

소스 코드를 뭔가 잘못 건드리는 등의 행동들로 인해서 다시 발생될 수 있는 여지들도 충분히 생길 수 있는 것이다.

즉, 이러한 부분에 있어서는 다시 한번 검증해서 확인하는 등의 관리가 필요하다.

 

 


 

 

전송 시 주요 정보 노출 취약점

 

 

정의
웹 서버가 보안과 관련된 민감한 데이터를 평문으로 통신채널을 통해서 송수신 할 경우, 

통신채널 스니핑을 통해 인가되지 않은 사용자에게 민감한 데이터가 노출될 수 있는 취약점을 의미한다.

보통 아이디, 패스워드를 입력한다거나 계정 정보라 등의 중요 정보를 취급하는 페이지 등은

필수로 HTTPS를 적용을 해야하지만, 이러한 페이지를 HTTP로 취약하게 구성해놓았을 때 발생한다.

점검방안

  1. 점검 대상 웹서버의 로그인 페이지로 이동하여, 네트워크 패킷 모니터링 프로그램(Wireshark)을 사용하여,
    로그인 과정상에서 발생하는 네트워크 트래픽을 관찰하여, 로그인 시 저장된 인증 정보를 찾아 암호화 여부를 확인한다.

HTTP를 사용하며, 로그인 과정상에서 I-PIN, 전자서명인증서를 사용하지 않는 사이트에 회원가입 후,

실제로 점검을 해본 결과 데이터 전송 시 비암호화로 인한 인증 정보가 노출된 것을 확인할 수 있다.

대응방안

  1. 웹 서버는 전자서명인증서, SSL, TLS 등을 이용하여 사용자 식별 및 데이터 전송 시,
    암호화 통신으로 데이터 전송의 안전성을 확보한다.
  2. 홈페이지는 중요정보와 관련된 민감한 데이터(개인정보, 비밀번호 등) 전송 시, 
    통신채널(또는 전송데이터)에 암호화 적용을 한다.


 

 

 

인용 : 한국교육학술정보원 KERIS 『웹 서버 및 홈페이지 취약점 점검 가이드』