홈페이지 변조 자동화 도구를 인터넷에 다운받아 사용하는 것이 일반적으로 확산되고 있어 해킹을 잘 모르는 사람도 약간의 노력으로 쉽게 취약한 홈페이지 변조가 가능하다는 지적이 나오고 있다.
최근 웹쉘(WebShell)을 이용한 홈페이지 변조기법이 나오기도 하고 업로드가 가능한 취약한 게시판(실행파일을 필터링하지 않은 게시판)에 웹쉘과 같은 변조도구를 직접 업로드한 후 삽입변조를 시도하기도 한다. 이러한 홈페이지 변조 기법들에 대한 대응방안을 알고 대비하는 것이 가장 중요하다.
홈페이지 파일 업로드 취약점 제거
첨부파일 업로드를 허용하는 홈페이지 게시판에서 확장자 이름의 스크립트 파일에 대한 업로드를 허용할 경우 해커가 악성프로그램을 업로드 한 후 원격에서 홈페이지 변조가 가능하다.
이를 막기 위해서는 ▲해당 홈페이지의 게시판에 첨부파일 기능이 있는지 확인 ▲특정 확장자를 가진 파일의 업로드 가능 여부를 확인 ▲실행 가능한 파일의 업로드가 되지 않도록 소스코드 수정 ▲수정 후 해당파일 업로드가 되지 않는지 확인하는 것이 중요하다.
파일 업로드 폴더 내에서 스크립트 파일 실행 제한
스크립트 실행 금지를 위해 업로드 파일을 위한 윈도우의 경우 [설정]→[제어판]→[관리도구]→[인터넷서비스관리자] 선택해 오른쪽 클릭후 [등록정보]→[디렉터리]를 선택해 실행권한을 ‘없음’으로 설정해야 한다. 리눅스의 경우 httpb.comf와 같은 웹서버 데몬 설정에서 실행 설정 변경해야 한다. 또 보다 완벽한 제한을 위해 업로드 파일을 위한 전용 디렉터리를 별도로 생성하는 것도 중요하다.
또하나 윈두우 WebDAV취약점에 대한 것이다. 원격 웹서버 관리가 필요 없을 시 WebDAV중지를 해야하고 httpext.dll파일의 everyone 권한 삭제도 중요하다. 또한 홈 디렉토리 메뉴의 ‘쓰기’권한도 삭제하는 것이 좋다. 삭제방법은 [제어판]→[관리도구]의 [인터넷 서비스 관리자] 메뉴에서 [기본 웹사이트]의 마우스를 오른쪽 클릭후 속성 부분의 [기본 웹사이트 등록 정보]의 [홈 디렉토리] 부분의 ‘쓰기’ 항목이 체크되어 있을 시 이를 제거하는 것이 좋다.
SQL Injection 방지
또한 DB와 연동하는 스크립트의 파리미터, 특수문자, 에러메시지를 점검해 사용자의 입력 값이 SQL Injection이 발생하지 않도록 점검해야 한다. 지속적인 모니터링 및 최신 패치의 적용은 필수.
DB 관련 파일 또는 bak 파일 제거
홈페이지 수정 등을 위해 만들어진 .bak 파일이 웹에 text파일로 노출될 경우 소스나 DB 정보 등의 노출로 인해 보안에 치명적인 영향을 미칠 수 있기 때문에 조심해야 한다. 불필요한 백업 파일은 모두 삭제하고 apache의 경우 httpd.conf에 다음과 같은 설정이 필요하다.
검색엔진 피하기
robots.txt의 경우는 웹 검색 로봇은 로봇배제기준을 따르고 있다. 로봇배제기준은 로봇이 자신의 홈페이지의 특정 부분을 가져가지 못하게 하는 것으로서 특정 디렉토리에 robots.txt 파일을 사용하는 것이다. 검색엔진에서 피하고 싶은 설정을 robots.txt에 작성 후 해당 파일을 루트 디렉토리에 저장하면 된다.
관리자 페이지 접근 제한
IIS웹서버 상에서는 [설정]→[제어판]→[관리도구]→[인터넷 서비스 관리자]에서 오른쪽 클릭 후 [등록정보]→[디렉토리보안]→[IP 주소 및 도메인 이름제한]→[편집]을 통해 관리자 IP만 등록해 접근을 제한해야 한다.
Apache 웹서버상에서는 관리자 디렉토리에 대해 특정 IP만 접근 가능하게 하기 위해 환경설정 파일인 httpd.conf 파일의 디렉토리 섹션의 AllowOverrride 지시자에서 AuthConfig 또는 All을 추가한다.
게시판에서 .htaccess 업로드 안되도록 필터링한다. .htaccess파일을 사용할 경우 파일명을 변경해서 사용하고 이 파일에 AllowOverrride None 설정 및 인덱스 옵션을 제거해야 파일 목록 노출이 방지된다.
부적절한 환경 설정 보완
리눅스 및 유닉스 웹서버의 경우 웹서버에서 디렉토리의 모든 파일들을 사용자에게 보여줄 수 있는 디렉토리 인덱싱 기능을 통해 공격자에게 웹 애플리케이션에 대한 정보를 제공할 수 있다. 따라서 디렉토리별로 리스팅이 불가하도록 설정해야 한다.
윈도우의 경우는 [제어판]→[관리도구]의 [인터넷서비스관리자] 메뉴에서 [기본 웹사이트]의 마우스 오른쪽을 클릭해 ‘기본 웹사이트 등록 정보’ 메뉴를 참조한다. 홈디렉토리 부분을 클릭하고 디렉토리 검색 옵션 부분이 체크돼 있으면 이를 해지하고 적용버튼을 클릭하면 된다.
제로보드 취약점
‘파일노출 취약점’(다운로드 취약점)이 있으면 시스템 내부의 중요 파일들의 내부정보를 노출시킬 위험이 있으며 ‘외부 소스 실행 취약점’(원격 파일 삽입 취약점)은 include 항목의 변수를 외부에서 실행할 수 있어 원격의 파일을 참조시켜 시스템 정보를 파악하고 웹 서비스 권한을 획득할 수 있기 때문에 php.ini파일을 “allow_ur_fopen=Off” 및 “register_globals=Off”로 설정해야 한다.
XSS 취약점은 서버 설정에 따라서 $dir, $_zb_path 변수를 이용해 외부에서 임의의 스크립트를 실행하는 문제로써 preg_replac에서 정규 표현식을 이용할 때 quotes를 하지 않아 발생한다. 또한 사용하지 않는 게시판은 제거해야 한다.
권한 상승 방지
최근 유행하는 SSH Brute-Force 공격이나 WebDAV 취약점 등은 권한 상승을 위한 익스플로잇 코드를 실행하는 경우가 많다. 이때 버퍼오버플로우 기법을 이용해 권한 상승을 시도한다. 버퍼오버플로우는 스택 혹은 힙오버 플로우 기법이 있는데 이를 방지할 수 있는 기술이 윈도우 XP SP2와 윈도우 서버 2003 SP1에 구현되어 있다.
권한상승 방지 기법설정은 [시작]→[제어판]을 차례로 클릭한 다음 ‘시스템’을 두 번 클릭. 고급 탭의 성능에서 ‘설정’을 클릭. 데이터 실행 방지 탭을 클릭하면 된다.
[길민권 기자(boannews@infothe.com)]
<저작권자: 보안뉴스(www.boannews.com). 무단전재-재배포금지.>














