adsense

글 목록

웹 개발 취약점 정리 - 2. 취약한 접근 통제 취약점 조치방법



<다음의 취약점 조치방법 안내>

관리자 페이지 노출, 경로추적 및 파일 다운로드, 자동화 공격


[각 취약점 내용 및 대응방법은 '홈페이지 취약점 심층점검 가이드' 에 나온 내용]


취약한 접근 통제

인증된 사용자가 수행할 수 있는 작업에 대한 제한이 제대로 적용되지 않을 경우 발생되는 보안 약점으로 공격자는 이러한 결함을 악용하여 다른 사용자의 계정에 액세스하거나, 중요한 파일을 읽고, 데이터를 수정하거나 접근 권한을 변경하는 것이 가능함

주요 취약점


1

관리자 페이지 노출

내용

관리자 페이지가 추측 가능한 형태로 구성되어 있을 경우 공격자가 관리자 페이지에 쉽게 접근 가능, 이에 따라 무차별 대입 공격, SQL 인젝션 등의 공격을 통해 관리자 권한을 획득 가능

점검 내용

관리자 페이지 URL을 유추하기 어려운 이름으로 설정하고 접근 제어

è  유추하기 쉬운 URL, 관리자 페이지 및 메뉴 접근의 가능 여부 점검

è  구글 고급 검색을 통한 관리자 페이지 노출 확인

대응 방법

1) 웹 서버 내에서의 조치

가)   홈페이지 관리자 페이지는 관리용으로 지정된 디렉터리에만 보관하여 운영

 

나)   홈페이지 관리자 페이지에 임의의 사용자가 접근할 수 없도록 접근권한을 설정하여, 접근할수 있는 권한을 가진 단말기만 접근 가능 하도록 설정

IIS 웹 서버 조치 방법

[제어판] → [관리도구] → [인터넷 서비스 관리자] → 관리자 디렉터리 선택 후 마우스 오른쪽 버튼 클릭 → [등록 정보] → [디렉터리보안] → [IP주소 및 도메인 이름제한] → [편집] → ‘액세스 거부(N)’ 체크 후 관리자 IP만 허용

 

Apache 웹 서버 조치 방법

아파치 웹 서버의 설정 파일인 httpd.conf 파일에서 관리자 디렉터리에 ‘Deny’, ‘Allow’ 지시자를 이용하여 접근 제한 설정

 ) /usr/local/www/admin 폴더를 192.168.10.10만 허용하고 모두 차단할 경우

<Directory "/usr/local/www/admin/">

Order allow,deny

Deny from all

Allow from 192.168.10.10

</Directory>

 

Tomcat 조치 방법

별도 관리자 페이지 디렉터리 접근 제한을 위하여 admin.xml 파일 등 별도의 설정 파일 생성 후 다음과 같은 설정을 함

<Context path="/admin" docBase="../webapps/admin" debug="0" privileged="true">

 <Valve className="org.apache.catalina.valves.RemoteAddrValve"

allow="127.0.0.1"/>

</Context>

 

2) 구글 검색기에 노출된 경우의 조치

가)   구글에 노출된 홈페이지 관리자 페이지 정보의 캐시 삭제를 요청

 

나)   웹 서버에 노출 방지 표준(인터넷검색엔진배제표준)을 이용하여 개인정보가 포함된 주소를 지정하는 robots.txt 파일을 만들어 가상서버의 최상단 폴더에 저장하거나 해당 페이지의 HTML 안에 메타태그를 입력

  

  

2

경로추적 및 파일 다운로드

내용

경로추적을 통해 인증되지 않은 사용자가 시스템에 접근해 중요 파일을 읽거나 권한 없는 기능 등을 수행할 수 있음

파일 다운로드 기능이 존재하는 웹 애플리케이션에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우, 파일에 대한 접근 권한이 설정되어 있지 않아 공격자가 파라미터를 조작하여 중요 파일(환경설정, 웹 소스코드, 데이터베이스 등)을 다운로드 받을 수 있음

점검 내용

경로추적 및 파일 다운로드를 통한 중요 파일 접근을 제한

è  경로 추적을 통한 중요 파일 열람 가능 여부 확인

è  파일다운로드 기능을 이용한 중요 파일 다운로드 가능 여부 확인

대응 방법

1) 웹 서버 내에서의 조치

가)   파일 내용을 웹 브라우저에 표시 할 수 있는 디렉터리를 특정 디렉터리로 한정하고 이 외의 다른 디렉터리에서는 파일 내용을 표시할 수 없도록  상위 경로 접근이 제한되도록 설정

IIS 웹 서버 조치 방법

[제어판] → [관리도구] → [인터넷 서비스 관리자] → 웹 사이트 선택 후 마우스 오른쪽 버튼 클릭 → [등록 정보] → [홈 디렉터리] → [구성] 버튼 선택 → [응용 프로그램 옵션] → ‘상위 경로 사용(P)’ 체크 해제

 

나)   웹 사이트에서 접근하려는 파일이 있는 디렉터리에 chroot 환경을 적용해서 경로 추적 공격을 최소화

chroot 환경 : chroot 디렉터리는 해당 디렉터리가 루트처럼 다뤄짐. chroot 파일 시스템은 대부분의 유닉스를 기반으로 한 플랫폼에서 지원이 가능하고, 윈도우 플랫폼에서는 적절한 시작 디렉터리를 새로운 논리 드라이브로 만들어 웹사이트에서 해당 드라이브를 통하여 접근하게 함예) 웹 사이트의 최상위 폴더를 웹 사이트 Root 폴더로 제한

 

다)   PHP언어로 개발된 서버의 경우 php.ini 에서 magic_quotes_gpc On으로 설정하여 ‘.\ . /’ 값 입력 시 치환되도록 설정

 

라)   파일 다운로드의 절대 경로 설정 및 DocBase의 상위경로 또는, 타 드라이브로 설정을 변경

 

마)   다운로드 경로 정보를 자바스크립트나 js 소스에서 확인 가능하지 않게 제한하며, 웹 서버 서블릿 내부 또는 별도의 설정 파일에서 관리

 

2) 홈페이지 개발 보안 조치

가)   외부 입력 값에 대해 파일 경로를 변경할 수 있는 문자열 “..”, “/”, “\”에 대해 필터링

 

나)   다운로드 파일 이름을 데이터베이스에 저장하고 파일 다운로드 시 파일 경로와 파일명이 아닌 키 값을 설정하여 다운로드 되도록 구현

 

다)   다운로드를 제공하는 페이지의 유효 세션 체크 로직 필수 적용

 

  

3

자동화 공격

내용

애플리케이션 운영 시 특정 프로세스에 대한 접근시도 횟수 제한을 설정하지 않을 경우 공격자가 자동화 툴 및 봇을 활용하여 1분에 수백 번의 접근을 시도할 수 있음

단시간동안 특정 프로세스를 반복 실행해 시스템 성능에 영향을 미칠 수 있음

점검 내용

웹 애플리케이션에 구현된 기능의 적절성에 대한 검증 로직을 구현하여 자동화 공격 및 무차별 대입 공격을 방지

è  자동화된 공격으로 인한 특정 프로세스 반복 실행 가능 여부 점검

대응 방법

1) 보안 장비에서 조치

시스템 과부하를 방지하기 위해 패킷량을 모니터링 할 수 있는 시스템(IDS/IPS)을 구축하여 다량의 패킷이 유입될 경우 해당 접속을 차단

 

2) 홈페이지 개발 보안 조치

가)   특정 시간 내 동일 프로세스가 반복 실행되지 않도록 시간제한 설정

 

나)   웹 애플리케이션 로그인 관련 테이블에 로그인 시도 횟수를 저장하는 컬럼을 추가하여 로그인 시도가 있을 때마다 횟수를 증가시키고, 일정 횟수 이상이 되면 자동화 공격으로 인식하여 로그인을 할 수 없도록 차단

 

다)   게시물 등록, 메일 발송 등의 기능에서 사용자의 요청이 일회성이 될 수 있도록 캡챠(이미지를 이용하여 확인 값을 표시하고 사용자가 값을 입력하여 인증) 등을 이용



취약점 관련 추가 내용들

1. 입력값 검증 부재 관련 취약점 조치방법

1.1 SQL Injection, 1.2 SSI Injection, 1.3 LDAP Injection, 1.4 XPath Injection

1.5 XSS, 1.6 CSRF, 1.7 검증되지 않은 리다이렉트 및 포워드, 1.8 파일 업로드

3. 취약한 인증 취약점 조치방법

3.1 URL/파라미터 변조, 3.2 불충분한 세션 관리, 3.3 쿠키 변조, 3.4 디폴트/취약한 계정사용

4. 민감한 데이터 노출 취약점 조치방법

4.1 부적절한 에러메시지 노출, 4.2 소스코드 내 중요 정보 노출, 4.3 중요 정보 비 암호화 통신

5. 잘못된 보안 구성

5.1 디렉터리 인덱싱, 5.2 불필요한 Method 지원, 5.3 취약한 파일 존재, 

5.4 히든필드 조작, 5.5 알려진 취약점이 있는 구성요소 사용


참조 : '교육기관 홈페이지 취약점 심층점검 가이드'