ISBN XXX-XX-XXX-XXXX-X-XXXXX 웹어플리케이션취약점조치방법 (Ⅰ)

Similar documents
Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

게시판 스팸 실시간 차단 시스템

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

PowerPoint 프레젠테이션

< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 2 - 유포지탐지 국가별현황 2 - 대량경유지가탐지된유포지 TOP 악성코드유형별비율 4 - 악성코드취약점유형별비율 4 - 악성코드수집및분석결과 5 - 경유지탐지 업종별비율 9 3. 악성코

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Windows 8에서 BioStar 1 설치하기

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

untitled

untitled

PowerPoint Template

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

BEA_WebLogic.hwp

Secure Programming Lecture1 : Introduction

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

로거 자료실

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

The Pocket Guide to TCP/IP Sockets: C Version

vi 사용법

untitled

SSL인증서 설치 매뉴얼 (Apache)

PowerPoint 프레젠테이션

Microsoft Word - SKINFOSEC-CHR-026- Mass SQL Injection 탐지 우회분석 보고서.doc

2009년 상반기 사업계획

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

*2008년1월호진짜

Microsoft Word - src.doc

4S 1차년도 평가 발표자료

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

2장 변수와 프로시저 작성하기

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

The Pocket Guide to TCP/IP Sockets: C Version

<5BB5BFB8EDB4EB2D E4B5D C0A5BDA9C0C720BAD0BCAEB0FA20B4EBC0C020B9E6BEC82E687770>

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

ApacheWebServer.hwp

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Microsoft Word FCKeditor.doc

<43B7CE20BECBBEC6BAB8B4C220BCD2C4CFC7C1B7CEB1D7B7A1B9D62E687770>

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft PowerPoint - 07-EDU-Apache-9-1.ppt

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

AhnLab_template

chapter1,2.doc

` 동향보고서 1. 악성코드은닉동향요약 3 2. 홈페이지은닉형악성코드통계 악성코드유포지현황 6 - 유포지탐지현황 6 - 대량경유지가탐지된유포지 TOP 악성코드취약점및취약한 S/W 악용현황 8 - 악성코드유형별비율 9 - 위협 IP 및도메인현황 10

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

제목 레이아웃

4. CSR 값확인. (vi csr.pem) CSR(Certificate Signing Request) 즉, 인증서서명요청입니다. 이는자신이설치할웹서버에서 DN 값, 각종정보를암호화한파일로써 한국전자인증 신청란에서붙여넣으면됩니다. 인증서설치 1. 직접 CSR 및 KEY

<4D F736F F F696E74202D C0A5BCADB9F620BAB8BEC8BCB3C1A420B0A1C0CCB5E52E707074>

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

Microsoft PowerPoint - 10Àå.ppt

#WI DNS DDoS 공격악성코드분석

The Pocket Guide to TCP/IP Sockets: C Version

Microsoft Word - Windows_apahce_php_CUBRID2008

/chroot/lib/ /chroot/etc/

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint 프레젠테이션

슬라이드 1

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

Microsoft PowerPoint - chap01-C언어개요.pptx

2009년 상반기 사업계획

PowerPoint Presentation

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

0. 들어가기 전

하는 gd의예를들면, /usr/ports/graphics/php52-gd 에서설치해줄수있고, xml 처리를담당하는 xml 확장모듈은 /usr/ports/textproc/php52-xml 에서설치가능하다. 어느디렉토리에서제공되는지를알려면포트시스템의루트 (/usr/port

암호내지

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

웹사이트 운영, 이보다 쉬울 수 없다! Microsoft Azure를 이용한 웹사이트 구축

SSL Strip Attack JAC (SemiDntmd) 이우승 semidntmd.tistory.com

월간악성코드은닉사이트탐지 동향보고서 9 월 침해대응단사이버침해대응본부

PowerPoint 프레젠테이션

3. 다음장에나오는 sigprocmask 함수의설명을참고하여다음프로그램의출력물과그출력물이화면이표시되는시점을예측하세요. ( 힌트 : 각줄이표시되는시점은다음 6 가지중하나. (1) 프로그램수행직후, (2) 5 초후 (3) 10 초후 (4) 15 #include <signa

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

슬라이드 1

RHEV 2.2 인증서 만료 확인 및 갱신

BMP 파일 처리

SBR-100S User Manual

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

PowerPoint 프레젠테이션

월간악성코드은닉사이트탐지 동향보고서 4 월 침해사고대응단인터넷침해대응본부

설명 Description 상세정보 네이버에서운영하는서비스중하나인쥬니어네이버 ( 이하쥬니버 ) 에서는쥬니버서비스와 관련하여도움을주기위한 [ 그림 1] 과같은플래시애플리케이션이서비스되고있다.[2] [ 그림 1] 쥬니어네이버에서서비스중인쥬니버도우미플래시애플리케이션 해당플래

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

Observational Determinism for Concurrent Program Security

학번 : 이름 1. 다음프로그램실행결과를예측하시오. $./a.out & [1] 7216 $ kill -USR $ kill -USR 아래학생이작성한쓰레드코드의문제점을설명하시오. void* thread_main() { pthread_mutex_t

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

슬라이드 1

Transcription:

ISBN XXX-XX-XXX-XXXX-X-XXXXX 웹어플리케이션취약점조치방법 (Ⅰ) 2016. 11

웹어플리케이션취약점조치방법 (Ⅰ) 2016. 11 부서 : 첨단연구망센터첨단연구망정보보호실제출자 : 이행곤 (hglee@kisti.re.kr) 최장원 (jwchoi@kisti.re.kr) 정용환 (paul7931@kisti.re.kr) 이형주 (lhj275@kisti.re.kr)

[ 목차 ] 제 1 장서론 1 제 2 장관련연구 2 제 1 절웹어플리케이션취약점유형 2 1. 개요 2 2. 웹취약점주요탐지유형 3 제 2 절웹취약점유형별주요탐지현황 2 제 3 장웹취약점유형별상세조치방안 2 제 1 절관리자페이지노출 4 제 2 절디렉터리나열 4 제 3 절시스템관리 4 제 4 절 WebDAV 4 제 5 절불필요한 Method 허용 4 제 6 절취약한파일존재 4 제 7 절계정관리 4 제 4 장결론 1 참고자료 2

제 1 장서론 최근웹을이용한침해사고를미연에방지하기위한하나의방법으로써웹취약점분석에관한연구가활발히진행되고있다. 네트워크환경이실생활에필수요소로자리잡은지금웹은모든응용계층중에가장많이사용하는프로토콜이되었다. 이러한환경의변화로많은양의웹응용프로그램들이등장하게되었고, 이들의취약점을이용한공격사례들이증가하게되었다. 웹서비스는개방된환경에서보안장비를거치치않고사용자와서버간통신이연결되는구조적인취약한특성으로인해악의적인공격자에의한공격타겟이되기쉽다. 이러한공격을보호하기위한대책으로보안장비도입을통한실시간모니터링, 보안정책관리등의보안조치를수행하고있다. 하지만이러한보안시스템들은웹어플리케이션취약점의근원적인문제해소를보장하지못한다. 따라서날로지능화되는공격기법에대응하기위해서는웹어플리케이션에대한지속적인취약점점검및개선조치가반드시필요한실정이다. 이에, 과학기술사이버안전센터에서는선제적인웹취약점제거를통해보안사고를미연에방지할수있도록자동화기반의취약점진단시스템을구축 보급하여대상기관에서운영중인웹사이트의균형적인보안수준향상을도모하고있다. 본기술보고서에서는실제운영되고있는웹사이트환경에서블랙박스테스트를통해주로탐지되는취약점패턴을중심으로취약점에대한상세한설명과취약점개선에필요한조치방안을기술하고자한다.

제 2 장 관련연구 제 1 절 웹어플리케이션취약점유형 본절에서는웹어플리케이션에서발생하는취약점의정의와주요탐지유형에 대하여살펴본다. 1. 웹취약점주요탐지유형 과학기술사이버안전센터에서정의한 17 개의취약점유형은아래와같다. 관리자페이지노출취약점일반적으로추측이가능한관리자페이지경로 등 를사용하거나 프로그램설계상의오류 인증미흡으로인해관리자메뉴에직접접근이가능하며권한인증이가능한취약점 디렉터리나열취약점서버내의모든디렉터리혹은중요한정보가포함된디렉터리에대해인덱싱이가능하게설정되어중요파일정보가노출될수있는취약점 시스템관리취약점응용프로그램설치중에생성되는설치 임시파일이존재하거나웹상에서윈도우로그인창이노출되는등시스템상설정미비로인해발생하는취약점 WEBDAV 취약점 IIS 일부버전의취약점으로악의적인 HTTP 요청을이용하여 FTP나시스템에직접접근하지않고원격에서파일을수정및처리가가능한취약점 불필요한 Method 허용취약점웹서비스제공시불필요한 등 허용으로외부공격자에의해악성파일을업로드하거나중요파일에대한조작이가능해지는취약점 취약한파일존재취약점웹루트하위에내부문서나백업파일, 로그파일, 압축파일과같은파일이존재할경우파일명을유추하여파일명을알아내고, 직접요청하여해킹에필요한서비스정보를획득할수있는취약점

계정관리취약점회원가입시에안전한패스워드규칙이적용되지않아서취약한패스워드로회원가입이가능할경우무차별대입공격을통해패스워드가누출될수있는취약점 실명인증취약점본인확인과정상에서취약한프로그램을악용하여사용자정보를변조하는공격으로관리자위장을통해개인정보를수집하거나기타공격에악용할수있는취약점 전송시개인정보노출취약점프로그램이보안과관련된민감한데이터를평문으로통신채널을통해서송 수신할경우, 통신채널스니핑을통해인가되지않은사용자에게민감한데이터가노출될수있는취약점 파일다운로드취약점외부입력값에대해경로조작에사용될수있는문자를필터링하지않는취약점을악용하여예상밖의접근제한영역에대한경로문자열구성이가능해져시스템정보누출, 서비스장애등을유발시킬수있는취약점 파일업로드취약점공격자가웹사이트에있는게시판이나자료실의파일업로드기능을이용하여공격자가만든특정공격프로그램을업로드하여웹서버의권한획득이가능한취약점 소스코드내중요정보노출취약점소스코드주석문에민감한정보 ( 개인정보, 시스템정보등 ) 이포함되어있는경우, 외부공격자에의해패스워드등보안관련정보가노출될수있는취약점 공개용웹게시판취약점공개용게시판을사용할경우인터넷에공개된각종취약점정보로인해홈페이지변조및해킹경유지로사용될수있는취약점 크로스사이트스크립트 (XSS) 취약점공격자가클라이언트스크립트를악용하여웹사이트에접속하려는일반사용자로하여금공격자가의도한명령이나작업을수행하는공격으로, 세션탈취, 웹사이트위변조, 악성스크립트삽입및실행, 접근경로리다이렉트등의다양한공격을유발할수있는취약점 구문삽입 (SQL-Injection) 취약점 URL 요청또는웹요청에포함되는웹어플리케이션에서입력폼및 URL입력란에 SQL 문을삽입하는형태의공격으로시스템내부정보를열람또는조작할수있는취약점 권한인증취약점웹어플리케이션상에서모든실행경로에대해서접근제어를검사하지않거나불완전하게

검사하는취약점을이용하여임의의명령실행이가능한악의적인파일을서버로업로드하여권한을탈취할수있는취약점 에러처리취약점웹서버에별도의에러페이지를설정하지않은경우, 에러메시지를통해서버데이터정보등공격에필요한정보가노출되는취약점 제 2 절 웹취약점유형별주요탐지현황 과학기술사이버안전센터에서는웹어플리케이션분야의취약점을탐지하기위하여다수의패턴을보유하고있으며, 앞서분류된웹취약점유형들이포함하고있는주요탐지패턴현황은아래와같다. 이번보고서에는전체 17개취약점유형중 7개의유형만다루도록한다. 순번취약점유형주요탐지패턴 1 관리자페이지노출취약점 [1-1] 관리자페이지노출 [2-1] 디렉토리목록화패턴발견 2 디렉터리나열취약점 [2-2] Microsoft FrontPage 디렉토리목록화 [2-3] Microsoft FrontPage _vti_cnf' 정보유출 [3-1] Apache Multivies Attack [3-2] HTTP Strict-Transport-Security 헤더누락 [3-3] 캐시화가능한 SSL 페이지발견 3 시스템관리취약점 [3-4] 세션쿠키에서 HttpOnly 속성누락 [3-5] 암호화된세션 (SSL) 쿠키의누락된보안속성 [3-6] HTTP.sys 원격코드실행 [3-7] 영구적쿠키에중요세션정보포함 [3-8] Microsoft FrontPage Extensions사이트손상 4 WEBDAV 취약점 [4-1] WebDAV 취약점 5 불필요한 Method 허용취약점 [5-1] TRACE 및 TRACK HTTP 메소드사용 [5-2] 안전하지않은 HTTP 메소드사용 [6-1] 파일대체버전, 애플리케이션테스트스크립트발견 [6-2] CMME 정보유출 6 취약한파일존재취약점 [6-3] URL 경로재지정을통한피싱 [6-4] PHP phpinfo.php 정보유출 [6-5] 임시파일및아카이브파일다운로드 7 계정관리취약점 [7-1] 올바르지않은계정잠금

제 3 장웹취약점유형별상세조치방안 제 1 절관리자페이지노출 일반적으로추측하기쉬운 URL(ex: /admin, /manager) 을사용하고있어, ID/ 패스워드에대한크랙또는접근허가정책에대해요청하는부분의정보를변경함으로써접근이가능한경우가존재하는데, 웹관리자의권한이노출될경우홈페이지의위 변조뿐만아니라취약점정도에따라서웹서버의권한까지도노출될위험성이존재함 [1-1] 관리자페이지노출 < 관리자페이지노출을통한비인가자접근 > 웹서비스관리자페이지경로가외부로노출되는취약점으로, URL 주소창에추측가능한페이지주소 ( 예시 : admin, adm, cms 등 ) 로관리자페이지가구성될경우관리자계정탈취로인한권한상승의위험이있음 < 관리자전용로그인페이지 >

1) 웹서버내에서의특정 IP주소에서만접근허용 ➀ 윈도우 IIS에서관리자 IP 설정방법 [ 설정 ] [ 제어판 ] [ 관리도구 ] [ 인터넷서비스관리자 ] [ 인터넷정보서비스 ] [ 관리자디렉터리선택후마우스우클릭 ] [ 등록정보 ] [ 디렉터리보안 ] [IP주소및도메인이름제한 ] [ 편집 ] <IIS 관리자 IP 설정 > ➁ 리눅스및유닉스의 아파치 (Apache) 환경설정방법 아파치웹서버의설정파일 httpd.conf Directory 내의 AllowOverride 옵션에서 AutoConfig 또는 All을추가하여관리자 IP만접근가능하도록제한예시 ) 관리자폴더 /usr/local/www/admin 에 192.168.1.1 만접근할수있도록설정한경우

제 2 절디렉터리나열취약점 디렉터리나열취약점유형은웹브라우저에서 URL 입력란에파일명이하를삭제하고바로디렉토리경로로접근을시도하였을경우디렉토리의하위내용이나열되는취약점으로, 공격자는내부에적재된파일정보와구성정보획득을통해웹어플리케이션의구조파악을통한민감정보유출의위험성이존재 < 디렉터리구조노출 > [2-1] 디렉토리목록화패턴발견 디렉터리인덱싱기능이활성화되어있을경우, 비인가자가외부에서웹서버내모든디렉토리및파일에접근이가능하여어플리케이션및서버의중요정보노출로인한추가공격에악용될수있는취약점

1) Windows [IIS] 제어판 > 관리도구 > IIS( 인터넷정보서비스 ) 관리자매뉴에서구축사이트 선택 > 화면중앙 IIS 박스의디렉터리검색선택사용안함클릭 <IIS 디렉터리검색기능비활성화 > 2) Apache 아파치 (Apache) 를웹서버로사용하는리눅스및유닉스 OS는아래와같은설정을통해디렉토리리스팅취약점을차단가능 <Directory /var/www/html > // 디렉토리경로 Options Indexes FollowSymLinks // 인덱스활성 Options FollowSymLinks // 인덱스비활성 3) Tomcat 톰캣 (Tomcat) 을웹서버로사용하는리눅스및유닉스 OS는아래와같은설정을통해디렉토리리스팅취약점을차단가능 - web.xml 파일설정예시 <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> 서비스설정후데몬재시작필수

[2-2] Microsoft FrontPage 디렉토리목록화 Frontpage 는 MicroSoft office에서기본적으로제공하는웹에디터로, 서버관리기능 (sercer extention) 보안설정이올바르지않을경우, 가상디렉토리및파일에접근이가능하여어플리케이션및서버의중요정보노출로인한추가공격에악용될수있는취약점 - 불필요할경우 Frontpage 서버관리기능 (Extensions) 제거 - C: \Program Files \Common Files \Microsoft Shared \Web server Extension 서브디렉터리에서아래의디렉토리삭제 \isapi \_vit_bin\_vti_adm \_vit_bin\_vti_aut \_vit_bin \admisapi \admincgi [2-3] Microsoft FrontPage _vti_cnf' 정보유출 Frontpage 는 MicroSoft office에서기본적으로제공하는웹에디터로, 서버관리기능 (server-extention) 보안설정이올바르지않을경우, 비인가자가내부디렉터리정보나파일경로등내부정보를가지고있는 _vti_cnf 폴더로접근가능한취약점 <Frontpage 기본경로유출 > - Microsoft Update 서비스를최신버전으로유지하도록권장 - 불필요할경우 Frontpage 서버관리기능 (Extensions) 제거

제 3 절디렉터리나열취약점 [3-1] Apache Multivies Attack Apache 에서제공되는 Multiviews 는다중언어지원옵션으로웹브라우저또는웹문서의종류에따라서가장적합한페이지를보여주는기능이며, 공격자가디렉터리에숨겨진파일을찾아중요정보를수집할수있는취약점 - Apache의구성파일에서 Multiviews 옵션기능제거여부확인파일경로 : <apache dir>/htdocs/httpd.conf <Directory "/htdocs"> Options MultiViews // multiviews 비활성화 AllowOverride All Order allow,deny Allow from all </Directory> - Apache 2.2 이후버전 <FilesMatch \.php$> // 파일확장자명 SetHandler application/x-httpd-php <FilesMatch> [3-2] HTTP Strict-Transport-Security 헤더누락 응용애플리케이션에서 HTTP Strict Transport Security(HSTS) 헤더가적용되지않아공격자가 HTTPS 스트리핑공격 (HTTPS 요청을 HTTP 로전환 ) 즉, SSL/TLS 연결을일반 HTTP 연결로변경하여민감한정보가평문형태로탈취될수있는취약점

[Windows IIS] - Windows IIS 경로 : C:\inetpub\wwwroot\web.config - 아래의볼드체구문추가 - 배포환경에서설정하기위해서는 web.release.config에아래와같은내용설정 <configuration> <system.webserver> <directorybrowse enabled="true" /> </system.webserver> <httpprotocol> <customheaders> <add name="strict-transport-security" value="max-age=31536000; includesubdomains" /> </customheaders> </httpprotocol> </configuration> [Apache] - Apache 경로 : /htdocs/httpd.conf - website.conf 및 httpd.conf 설정파일에서아래와같은내용설정 <VirtualHost xxx.xxx.xxx.xxx:443> Header always set Strict-Transport-Security "max-age=63072000; includesubdomains;" </VirtualHost> // max-age 값은밀리세컨드단위, 해당설정은 2년임. 즉 2년동안해당설정이유효함. [3-3] 캐시화가능한 SSL 페이지발견 로그인시사용자명, Password 등민감한정보들을보호하기위해 SSL을이용하여암호화를수행하는데, 사용중인브라우저에서민감한정보를캐싱하여발생하는취약점

민감한데이터가있는모든페이지에서캐싱기능을사용하지않도록설정 [ 시큐어코딩 ] response.setheader("cache-control", "no-cache"); response.setheader("pragma", "no-store, no-cache, must-revalidate"); [WINDOWS] SSL 세션정보의캐시유지시간값수정예시 ) ClientCacheTime 설정방법십진수데이터값선택 -> 밀리세컨드단위 (60000 = 1분 ) -> 비활성화는 0값처리 < 세션유지시간값수정 > [3-4] 세션쿠키에서 HttpOnly 속성누락 HttpOnly 는악의적인자바스크립트의접근을차단하기위한기능으로 HttpOnly 속성이누락될경우 XSS(Cross Site Scripting) 와같은공격자의변조된자바스크립트요청값에대한응답을통해세션하이재킹이발생할수있는위험이존재

스크립트가세션쿠키에접근하는것을보호하기위한 "HttpOnly" 속성설정 [ASP.NET] 파일경로 : systemroot\microsoft.net\framework\versionnumber\config\web.config Response.Cookies.Add(new { } 또는 Value = 쿠키값, Secure HttpCookie = true mycookie.httponly = true; HttpCookie( mycookie ) mycookie = new HttpCookie("myCookie"); Response.AppendCookie(myCookie); Web.config <httpcookies requiressl= true /> 2.0 환경에서는 httponly 가기본으로설정됨 [PHP] 파일경로 : /usr/local/lib/php.ini Session.cookie_httponly [TOMCAT] = True; 파일경로 : /webapps/app/meta-inf/context.xml context.xml <?xml version= 1.0 encoding= UTF-8?> <Context path= / 어플리케이션경로 usehttponly= true > Servlet 3.0 이후 web.xml설정 <session-config> <cookie-config> <http-only>true</http-only> </cookie-config> </session-config> [3-5] 암호화된세션 (SSL) 쿠키의누락된보안속성 암호화된 HTTPS 구간에서개인정보를쿠키로저장할때쿠키객체의보호를위한보안속성을적용하지않을경우공격자에게단순한평문형태로노출되는취약점

HTTPS 로만서비스하는경우 Cookie 객체의 setsecure(true) 메소드를호출 하여브라우저쿠키에데이터를저장하도록설정 [ 안전한코드예제 ] 1: 2: private final String ACCOUNT_ID = "account"; 3: 4: public void setupcookies(servletrequest r, HttpServletResponse response) { 5: String acctid = r.getparameter("accountid"); 6: // 계정유효성점검 7: if (acctid == null "".equals(acctid)) return; 8: String filtered_id = acctid.replaceall("\r", ""); 9: 10: Cookie c = new Cookie(ACCOUNT_ID, filtered_id); 11: // 민감한정보를가진쿠키를전송할때에는보안속성을설정하여야한다. 12: c.setsecure(true); 13: response.addcookie(c); 14: } [3-6] HTTP.sys 원격코드실행 HTTP 프로토콜스택 (HTTP.sys) 이특수하게조작된 HTTP 요청의구문을검증하지못하는취약점으로 IIS 서버로 http header 의 range 필드를특수하게조작한패킷을전송할경우블루스크린유발및공격자가원하는원격코드의실행이가능함 [ 취약한 OS 버전사용시보안패치수행 ] Windows 7 Windows Server 2008 R2 Windows 8 Windows Server 2012 Server Core 설치옵션 Windows 7(32비트시스템용 ) 서비스팩 1 Windows 7(x64 기반시스템용 ) 서비스팩 1 Windows Server 2008 R2(x64 기반시스템용 ) 서비스팩 1 Windows Server 2008 R2(Itanium 기반시스템용 ) 서비스팩 1 Windows 8 Windows 8.1 Windows Server 2012 Windows Server 2012 R2 Windows Server 2008 R2 (x64 기반시스템용 ) 서비스팩 1 (Server Core 설치 ) Windows Server 2012(Server Core 설치 )

[ 안전한코드예제 ] #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <arpa/inet.h> int connect_to_server(char *ip) { int sockfd = 0, n = 0; struct sockaddr_in serv_addr; struct hostent *server; if((sockfd = socket(af_inet, SOCK_STREAM, 0)) < 0) { printf(" \n Error : Could not create socket \n"); return 1; } memset(&serv_addr, '0', sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(80); if(inet_pton(af_inet, ip, &serv_addr.sin_addr)<=0) { printf(" \n inet_pton error occured\n"); return 1; } if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { printf(" \n Error : Connect Failed \n"); return 1; } return sockfd; } int main(int argc, char *argv[]) { int n = 0; int sockfd; char recvbuff[1024]; // Check server char request[] = "GET / HTTP/1.0 \r \n \r \n"; // our evil buffer char request1[] = "GET / HTTP/1.1 \r \nhost: stuff \r \nrange: bytes=0-18446744073709551615 \r \n \r \n"; } if(argc!= 2) { printf(" \n Usage: %s <ip of server> \n",argv[0]); return 1; } printf("[*] Audit Started \n"); sockfd = connect_to_server(argv[1]); write(sockfd, request, strlen(request)); read(sockfd, recvbuff, sizeof(recvbuff)-1); if (!strstr(recvbuff,"microsoft")) { printf("[*] NOT IIS \n"); exit(1); } sockfd = connect_to_server(argv[1]); write(sockfd, request1, strlen(request1)); read(sockfd, recvbuff, sizeof(recvbuff)-1); if (strstr(recvbuff,"requested Range Not Satisfiable")) { // 해당취약점에취약할경우 "Looks VULN" 화면이보임 printf("[!!] Looks VULN \n"); exit(1); } else if(strstr(recvbuff,"the request has an invalid header name")) { // 해당취약점에취약하지않을경우 "Looks Patched" 화면출력 printf("[*] Looks Patched"); } else // IIS 서버인지확인필요 printf("[*] Unexpected response, cannot discern patch status");

[3-7] 영구적쿠키에중요세션정보포함 영구적보관이되는쿠키는파일형태로디스크에저장되는데, 취약한시스템은쿠키파일경로가노출되어디스크에저장된사용자의쿠키정보가탈취될위험성이있으며, 이를통해권한상승및주요정보탈취가가능함 사용자인증정보와세션토큰과같은중요한세션정보가유지되지않도록 "non-permanent" 쿠키로저장 ( 설정을위해서는쿠키의 "Expires" 필드를설정하지않아야함 ) [JAVA] [3-8] Microsoft FrontPage Extensions사이트손상 Frontpage Extention 은 MicroSoft office 에서제공하는웹에디터인 Frontpage 의관리기능을제공하며모든사용자가접근이가능하도록초기설정되어있는데공격자는이를통해웹페이지에접근하여악의적인웹서버권한탈취및위 변조가가능한취약점 취약한파일접근권한설정 (AUATHOR.DLL, ADMIN.DLL) IIS 관리콘솔 -> 웹사이트의 _VTI_BIN 디렉토리 -> 하위파일선택 (_VTI_AUTH/AUATHOR.DLL, _VTI_ADMIN/ADMIN.DLL) -> 파일의등록정보 -> 보안탭선택 -> 익명액세스체크해제 <FrontPage 접근권한설정 >

제 4 절 WebDAV 취약점 [4-1] WebDAV 취약점 원격지에서웹서버상의컨텐츠를조작할수있는기능을제공하는 WebDAV 라이브러리파일의속성에읽기 / 쓰기권한이모두허용되어공격자가원격에서임의조작을통한웹페이지위변조가가능한취약점 [IIS 를사용하지않을경우 ] 서비스상태를 중지, 시작유형을 사용안함 설정 IIS 경로 : [ 제어판 ]-[ 컴퓨터관리 ]-[ 서비스 ]-[World Wide Web Publishing Service] <IIS 비활성화설정 > [WebDAV 기능이필요하지않을경우-1] 경로 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameter 설정방법 : DisableWebDAV 의 DWORD 값을만들어 '1' 로설정후 IIS를재시작 <WebDAV 실행서비스비활성화설정 >

[WebDAV 기능이필요하지않을경우 -2] 경로 : [ 제어판 ]-[ 관리도구 ]-[IIS 관리자 ]-[WebDAV 제작규칙 ]- WebDAV 사용안함 설정 <WebDAV 비활성화설정 > [WebDAV 기능을사용할경우 ] 경로 : [ 제어판 ]-[ 관리도구 ]-[IIS 관리자 ]-[WebDAV 제작규칙 ]-[WebDAV 설정 ] 방법 : <WebDAV 주요설정 > 표를참고하여권한설정적용 항목 설명 SSL 액세스필요 SSL 인증서필수사용여부 숨겨진파일나열허용 숨겨진파일공개여부 무제한수준의속성쿼리허용 지정된경로외에다른경로로의접근허용 익명속성쿼리허용 익명사용자접속을허용 쓰기잠금필요 파일쓰기 ( 업로드 ) 제한 알수없는 MIME 형식허용 알수없는확장자형식허용 <WebDAV 설정관련주요변수 >

제 5 절불필요한 Method 허용취약점 [5-1] TRACE 및 TRACK HTTP 메소드사용 TRACE 메소드요청시서버에서요청받은메시지를사용자에게그대로반환하는특성을악용하여공격자가악성스크립트를통한사용자의쿠키및중요정보를탈취할수있는취약점 1) CONNECT, PUT, DELETE, TRACE 메서드비활성화 [IIS] 윈도우IIS 관리창의서비스확장에있는WebDAV 허용을비활성으로변경 IIS Lockdown 툴사용ㄱ. IIS Lockdown Tool 설치ㄴ. Lockdown Tool에포함된 URLScan 설치 (URLScan은HTTP 요청을블로킹처리함으로 IIS 서버를보호 ) ㄷ. %windows directory%\system32\inetsrv\urlscan 경로이동ㄹ. 해당경로의 urlscan.ini 파일을아래와같이설정 [options] UseAllowVerbs=1 [AllowVerbs] GET HEAD POST 또는 [options] UseAllowVerbs=0 [AllowVerbs] TRACE TRACK CONNECT DELETE

[APACHE] Httpd.conf 그리고 httpd-ssl.conf 아래와같이설정 <Directory /> // 도메인경로 <LimitExcept GET POST> // 허용하는메서드 Order allow,deny deny from all </LimitExcept> </Directory> //get, post이외의메서드는모두비활성화 [TOMCAT] Web.xml 아래와같이설정 <security-constraint> <web-resource-collection> <web-resource-name></web-resource-name> <url-pattern>/*</url-pattern> <http-method>head</http-method> <http-method>delete</http-method> <http-method>put</http-method> <http-method>options</http-method> </web-resource-collection> </security-constraint> 2) 크로스사이트스크립트에준하는시큐어코딩 - 사용자입력 UI 에서스크립트입력거부및방지, 필터링 [5-2] 안전하지않은 HTTP 메소드사용 웹어플리케이션에서일반적으로사용하는 GET, POST 메소드이외의불필요한메소드를허용하였을경우공격자는이를이용하여파일삭제, 파일업로드등웹서버를인증없이조작이가능 GET 및 POST 를제외한메서드비활성화조치

제 6 절취약한파일존재취약점 [6-1] 파일대체버전, 애플리케이션테스트스크립트, 압축된디렉터리발견 웹서버구성시기본설치파일, 테스트용파일등웹서버운영에사용되지않은불필요한파일들이외부로노출되어해당파일을통해공격자가내부구성정보수집, 테스트용파일조작등 2차공격에악용될수있는취약점 1) 설치시자동배포되는샘플파일삭제 - 사용하지않는파일및테스트용도디렉토리 / 파일삭제후배포 ( 예 : ASP, JSP, PHP, JAVA, PERL, txt, html,js,zip,.war, tar 등 ) - 소스코드내사용하지않는코드삭제 ( 예 : 테스트 / 디버깅용도 main 함수 ) 2) 파일대체버전발견조치방안 - 가상웹서버루트아래에존재하는파일의대체버전조회후삭제 - 가상루트아래에는항상사용중인파일만있음을확인 3) 애플리케이션테스트스크립트발견조치방안 - 서버에서 test/temporary 스크립트를삭제 - 서버오퍼레이션에필수적인또다른스크립트가서버에존재하는지확인 4) 압축된디렉토리발견 - 압축된디렉토리파일에대한액세스제한또는제거 [6-2] CMME 정보유출 CMME(Content Management Made Easy) 는 PHP기반웹서버의관리편의를위해사용하는웹컨텐츠관리시스템으로웹서버의구성정보에관한중요정보를포함하고있으며접근권한이미흡할경우공격자는이에접근하여서버에대한내부정보를수집할수있는취약점

설정파일 ("data/admin/users", "info.php") 에대하여통해신뢰된사용자 액세스가가능하도록정책설정 [6-3] URL 경로재지정을통한피싱 공격자가 HTTP 매개변수조작을통해악의적인사이트로리다이렉션하여사용자를피싱사이트로접속하도록유인하는취약점으로사용자명, Password, 신용카드번호, 주민등록번호등민감한정보의탈취가가능한위험성이존재함 허용가능한 URL과도메인들의화이트리스트를설정하여악의적인사이트접근차단 [ 안전한코드예제 ] 1: 2: protected void doget(httpservletrequest request, HttpServletResponse response) 3: throws ServletException, IOException { 4: String query = request.getquerystring(); 5: 6: // 다른페이지이동하는 URL 리스트를만든다. 7: String allowurl[] = { "url1", "url2", "url3" }; 8: ArrayList arr = new ArrayList(); 9: for ( int i = 0; i < allowurl.length; i++ ) 10: arr.add(allowurl[i]); 11: 12: if (query.contains("url")) { 13: String url = request.getparameter("url"); 14: // url에대한유효성점검을한다. 만약 http:// 가있으면다른도메인으로 URL을 redirect로의심된다. 15: if (url!= null && url.indexof("http://")!= -1 ) { 16: url = url.replaceall("\r", "").replaceall("\n", ""); 17: // URL 목록에있지않으면요청을거부한다. 18: if (!arr.contains(url) ) throw new MyException(" 에러 ); 19: response.sendredirect(url); 20: } 21: } 22:

[6-4] PHP phpinfo.php 정보유출 서버의환경설정에대한많은정보를포함하고있는 phpinfo.php 페이지가공격자에게노출되어예제및샘플페이지, 설치정보등웹서버의구성정보를열람가능한취약점으로 2차공격수행에필요한정보가노출되는위험성존재 <PHP 구성정보노출 > 1) phpinfo.php 페이지삭제 rm /var/www/html/phpinfo.php ( 예시 ) 2) phpinfo() 비활성화 PHP 경로 : /usr/local/apache/conf/php.ini disable_functions = phpinfo()

[6-5] 임시파일및아카이브파일다운로드 URI에노출되는상대경로조작을통해임시파일에대한다운로드나열람이가능한취약점으로시스템구성시자동으로생성되는기본설치경로및임시파일이외부비인가자에게노출될경우공격자가경로를유추하여내부핵심정보를획득할수있는취약점 - 임시파일삭제또는웹시스템의가상디렉토리외부로이동 - 다운로드를허용할디렉토리를지정하여해당디렉토리를벗어나는위치의다운 로드요청에대해서는경고메시지와함께다운로드를금지하도록함

제 7 절계정관리취약점 [7-1] 올바르지않은계정잠금 취약한계정정책또는로그인실패에대한상세한오류메시지는공격자에게유용한정보를제공하며별도의인증수단이없을경우무차별대입공격이나사전대입공격에노출되어관리자권한을획득가능 1) 계정잠금정책설정 [WINDOWS] 경로 : [ 시작 ]-[ 설정 ]-[ 제어판 ]-[ 관리도구 ]-[ 로컬보안설정 ]-[ 계정정책 ]-[ 계정잠금정책 ] 계정잠금기간 : 계정잠금임계값에도달했을경우계정잠금상태를유지할기간 계정잠금임계값 : 사전공격방지를위하여지정횟수이상로그인실패시계정잠금 기간동안계정사용불가 < 계정잠금정책설정 > [CenOS 5] 경로 : \etc\pam.d\password-auth no_magic_root : root는패스워드잠금설정제외 deny=5 : 5회입력실패시패스워드잠금 unlock_time : 계정잠김후잠금해제되는시간 ( 초 ) reset : 접속시도성공시실패한횟수초기화

2) 오류메시지노출설정 [IIS] 경로 : [ 시작 ]-[ 설정 ]-[ 제어판 ]-[ 관리도구 ]-[ 인터넷서비스관리자 ]-[ 등록정보 ]-[ 사용자정의 ] 오류등록정보편집을통해사용자정의에러페이지를지정 계정잠금기간 : 계정잠금임계값에도달했을경우계정잠금상태를유지할기간 계정잠금임계값 : 사전공격방지를위하여지정횟수이상로그인실패시계정잠금 기간동안계정사용불가 [Apache] 경로 : /etc/httpd/conf/httpd.conf 유효하지않은요청은별도로만든사용자정의에러페이지로 Redirect 설정 <httpd.conf> ErrorDocument 404/error_page.html ServerSignature off //Error 페이지등에서노출되는웹서버버전정보를나타내지 않도록설정 [Tomcat] 경로 : <Tomcat home directory>\conf\web.xml 에러코드에따른포워딩페이지설정 <web.xml> 404 /error_page/404.jsp

제 4 장 결론 최근들어인터넷기술이고도화되면서, 정보개방의필요성이급증하고있다. 이에공공정보들이외부로오픈된인터넷을통해정보유통을통한소통의장으로활용되어사용자들은언제어디서나원하는정보를편리하게확인할수있는환경이제공되고있다. 하지만누구에게나접근이가능한인터넷의구조적인취약점은상당히많은위험성을가지고있으며, 실제웹어플리케이션을활용한침해사고가매년지속적으로증가하고있는추세이다. 특히애플리케이션계층은네트워크계층이나시스템계층에비해기술적으로고도화되어있고애플리케이션의종류도다양하기때문에대부분의보안관리자들이보안정책을수립하고적용함에있어가장많은어려움을겪는실정이다. 또한대부분의운영자들이홈페이지구축시사용자의편의성에만주안점을두는경향이있어보안대책에크게관심을갖지않는것도웹어플리케이션분야의침해사고발생증가의원인이되고있는것이다. 현재이루어지고있는웹공격의 90% 이상이웹애플리케이션을노린공격이라고해도과언이아니다. 결국안전한웹보안을구축하고자한다면홈페이지구축단계에서의철저한보안코딩을비롯하여근본적인취약점을최소화가필요하며, 지속적인취약점점검및보안조치수행을통해보다안전한웹어플리케이션환경을마련하여야할것이다.

참고자료 [1] Secure coding, http://cwe.mitre.org [2] JAVA, http://wikisecurity.net/guide:java [3] MS, https://technet.microsoft.com/library/security/ms13-078 [4] MS, http://insecure.org/sploits/microsoft.frontpage.insecurities.html [5] REDHAT, https://securityblog.redhat.com/2014/10/15/poodle-a-ssl3-vulnerability-cve-2014-3566/ [5] APACHE, http://www.apache.org/