1/07/2007

[info] 홈페이지 변조 대응 가이드라인 by ncsc (2006.3)

1. 홈페이지 파일 업로드 취약점 제거
1.1 첨부파일 업로드를 허용하는 홈페이지 게시판에서 등의 확장자 이름의 스크립트 파일을 업로드를 허용할 경우에 해커가 악성프로그램을 업로드 한 후 원격에서 홈페이지 변조 가능
- 해당 홈페이지의 게시판에 첨부파일 기능이 있는지 확인
- 특정 확장자(.php, .jsp, .asp, .cgi, .pl)를 가진 파일의 업로드 가능 여부 확인
- 실행 가능한 파일의 업로드가 되지 않도록 소스 코드 수정- 수정 후 해당파일 업로드가 되지 않는지 확인

2. 파일 업로드 폴더 내에서 스크립트 파일 실행 제한
2.1 스크립트 실행 금지
- 업로드 파일을 위한 윈도우의 경우 [설정] -> [제어판] -> [관리도구] -> [인터넷서비스관리자] 선택 하여 오른쪽 클릭 후 [등록정보] -> [디렉터리]를 선택하여 실행권한을 '없음' 으로 설정
- 리눅스의 경우 httpd.conf 와 같은 웹서버 데몬 설정에서 실행 설정 변경
- 보다 완벽한 제한을 위해 업로드 파일을 위한 전용 디렉터리를 별도 생성

3. 윈도우 WebDAV 취약점
3.1 원격 웹서버 관리가 필요 없을 시 WebDAV 중지
- NCSC(http://www.ncsc.go.kr/)의 '홈페이지 보안관리 메뉴얼' 참조
3.2 httpext.dll 파일의 Everyone 권한 삭제
- /windows/system32/inetserv/httpext.dll 의 등록정보의 보안 탭에서 그룹 또는 사용자이름 부분에 Everyone 존재 시 삭제 조치
3.3 홈 디렉터리 메뉴의 '쓰기'권한 삭제
- [제어판] -> [관리도구]의 [인터넷 서비스 관리자] 메뉴에서 [기본 웹사이트]의 마우스를 오른쪽 클릭 여 속성 부분의 [기본 웹사이트 등록정보]의 [홈 디렉터리]부분의 '쓰기' 항목이 체크되어 있을 시 이를 제거

4. SQL Injection 방지
4.1 DB 와 연동하는 스크립트의 파라미터, 특수 문자( ' "" / ; : Space -- + 등), 에러메시지를 점검하여 사용자의 입력 값이 SQL Injection 이 발생하지 않도록 점검
4.2 http://www.sans.org/rr/whitepapers/securecode/23.php 사이트 참조
4.3 지속적인 모니터링 및 최신 패치의 적용이 필요

5. DB 관련 파일 또는 bak 파일 제거
5.1 홈페이지 수정 등을 위하여 만들어진 .bak 파일이 웹에 text 파일로 노출될 경우 소스나 DB 정보 등의 노출로 인하여 보안에 치명적임.
5.2 불필요한 백업 파일 모두 삭제
5.3 Apache 의 경우 httpd.conf 에 다음과 같은 설정 필요
<files ~"\.bak$">
Order allow,deny
Deny from all
</files>

6. 검색엔진 피하기
6.1 robots.txt 의 이용
- 웹 검색 로봇은 로봇배제기준을 따르고 있음. 로봇배제기준은 로봇이 자신의 홈페이지의 특정 부분을 가져가지 못하게 하는 것으로서 특정 디렉터리에 robots.txt 파일을 사용하는 것임. 검색엔진에서 피하고 싶은 설정을 robots.txt 에 작성 후 해당 파일을 루트 디렉터리에 저장하면 됨 아래는 간단한 예임
User-agent : *
Disallow : /image/
"*" 는 모든 로봇의 검색을 허용, Disallow 옵션은 특정 디렉터리를 로봇이 접근하지 못하도록 지정하는 항목임

7. 관리자 페이지 접근 제한
7.1 IIS 웹 서버
- [설정]->[제어판]->[관리도구]->[인터넷 서비스 관리자]에서 오른쪽 클릭 후 [등록정보]->[디렉터리보안]->[IP 주소 및 도메인 이름제한]->[편집]을 통해 관리자 IP 만 등록하여 접근제한
7.2 Apache 웹 서버
- 관리자(admin) 디렉터리에 대해 특정 IP 만 접근 가능하게 하기 위해 환경설정 파일인 httpd.conf 파일의 Directory 섹션의 AllowOverride 지시자에서 AuthConfig 또는 All 을 추가한다.
- Apache 의 경우 httpd.conf 설정
<directory>
Order deny, allow
Deny from all
allow from 192.168.1.11 <-- 192.168.1. 11 에서만 접근 가능
</directory>
- 게시판에서 .htaccess 업로드 안되도록 필터링 : .htaccess 파일을 사용할 경우 파일명을 변경해서 사용(AccessFile Name .MyConfig) 또한, httpd.conf 파일에 AllowOverride None 설정 및 Indexes 옵션 제거(파일목록 노출 방지)

8. 부적절한 환경 설정 보완
8.1 리눅스 및 유닉스 웹서버의 경우
- 웹서버에서 디렉터리의 모든 파일들을 사용자에게 보여 줄 수 있는 디렉터리 인덱싱 기능을 통해 공격자에게 웹 애플리케이션에 대한 정보 제공
- 디렉터리별로 리스팅이 불가하도록 설정
- Apache의 경우 httpd.conf 설정
<directory>
Options Indexes <-- 제거
</directory>
<directory>
Options IFollowSymLinks <-- 심블릭 링크 제거
</directory>
8.2 윈도우의 경우
- [제어판]->[관리도구]의 [인터넷서비스관리자] 메뉴에서 [기본웹사이트]의 마우스 오른쪽 클릭하여 '기본 웹사이트 등록 정보' 메뉴를 참조한다.
- 홈 디렉터리 부분을 클릭하고 디렉터리 검색 옵션 부분이 체크되어 있으면 이를 해지 하고 적용버튼을 클릭 한다.

9. 제로보드 취약점
9.1 파일 노출 취약점(다운로드 취약점)
- 시스템 내부의 중요 파일들의 내부정보를 노출시킴
9.2 오부 소스 실행 취약점(원격 파일 삽입 취약점)- include 항목의 변수를 외부에서 실행할 수 있어 원격의 파일을 참조시켜 시스템 정보를 파악하고 웹 서비스 권한을 획득 할 수 있음
- php.ini 파일의 설정을 "allow_ur_fopen = Off" 및 "register_globals = Off" 로 설정
9.3 XSS 취약점
- 서버 설정에 따라서 $dir, $_zb_path 변수를 이용, 외부에서 임의의 스크립트를 실행하는 문제로써 preg_replac 에서 정규 표현식을 이용할 때 quotes 를 하지 않아 발생- http://www.nzeo.com/에서 패치 적용
9.4 사용하지 않는 게시판 제거

10. 권한상승 방지
10.1 최근 유행하는 SSH brute force 공격이나 WebDAV 취약점 등은 권한 상승을 위한 익스플로잇 코드를 실행하는 경우가 많음. 이때 버퍼오버플로우 기법을 이용하여 권한 상승을 시도함. 버퍼보버플로우는 스택 혹은 힙오버플로우 기법이 있는데 이를 방지할 수 있는 기술이 원도우 XP SP2 와 윈도우 서버 2003 SP1 에 구현되어 있음
10. 2 권한 상승 방지 기법 설정
- [시작]->[제어판]을 차례로 클릭한 다음 '시스템'을 두 번 클릭.
- 고급 탭의 성능에서 '설정'을 클릭.
- 데이터 실행 방지 탭을 클릭.

* 홈페이지 변조에 악용되는 웹쉘(WebShell)에 대한 자세한 분석과 대응책은 "Monthly 사이버 시큐리티" '06 년도 1,2 월호에 자세히 수록