공개웹방화벽 WebKnight 3.1 사용설명서 2013. 12
제 개정이력 순번날자변경내용작성자비고 개정이재춘 버전추가사항변경이재춘 를활용한 웹서버 보안강화안내서 다음버전 KISA는본문서의 WebKnight 및해당도구개발사인 AQTRONIX 社와어떠한관계도없으며, 국내의영세한업체들의웹해킹피해예방을위해공개웹방화벽인 WebKnigt를보안참고용으로소개합니다. 따라서관련문의나기타지원요청은 AQTRONIX 社에직접연락을주시길바랍니다.
[ 목차 ] 1. 개요 1 2. WebKnight 소개 3 3. WebKnight 설치및제거 6 3.1. WebKnight 설치 6 3.2. WebKnight 제거 10 4. 웹나이트 (WebKnight) 운영 11 4.1. WebKnight 기본동작 11 4.2. WebKnight 설정관리자 (Config.exe) 14 5. KISA 웹취약점점검과차단정책설정 21 5.1. 웹취약점점검소개 21 5.2. 웹취약점점검결과보고서설명 22 5.3. WebKnight 차단정책설정 21
1. 개요 과거에는해커의공격이웹사이트자체를대상으로하여그피해가웹서비스에한정되었으나, 최근들어조직전체를장악하기위한진입점으로악용하는사례가많아지고있다. 해커는장악한웹사이트를개인정보, 민감정보등중요한정보를탈취를위한공격거점및추가공격을목적으로악성코드유포에이용하는등웹사이트의보안취약점을악용한공격이지속적으로발생하고있다. 따라서이러한침해사고를예방하기위해서는웹사이트에대한보안을더욱강화할필요가있다. 웹사이트의보안취약점은아래 2 가지방법으로조치할수있다. 첫번째는웹서버, WAS 등운영환경의설정이나해당서버의소프트웨어업데이트하는방법이다. 업데이트나환경설정을통한보안취약점조치는비교적간단한방법으로해결할수있는부분이며, 기존에배포된많은가이드라인및솔루션제조사들을통해안전한설정방법을확인할수있다. 두번째는사이트소스코드자체를수정하는방법이다. 소스코드수정은 SQL 인젝션, 크로스사이트스크립팅등심각한보안취약점들을근본적으로해결할수있으나, 비용과인력등이많이소요되기때문에, 중소규모의기업들이수행하는것은쉽지않다. 또한, 대기업이라할지라도빈번히갱신하여야하는웹환경에서매번시큐어코딩을적용하는것은매우어려운일이다. 위와같이소스코드에대한수정이어려운환경에서웹방화벽 (WAF : Web Application Firewall) 은웹취약점공격을방어하기위한효과적인대안이될수있다. 웹방화벽은상용웹방화벽부터공개웹방화벽까지다양한제품들이출시되어있으나, 공공기관이나대기업등은상용웹방화벽사용을권장한다. 대표적인공개웹방화벽은 KISA 의캐슬 (CASTLE), ATRONIX 社의 WebKnight, TrustWave 社 의 ModSecurity 등이있으며, 본문서에서는 WebKnight 설치 사용방법을설명한다. - 1 -
한국인터넷진흥원에서는영세기업을대상으로무료웹방화벽에대해안내뿐아니라, 홈페이지원격취약점점검또한무료로제공하고있다. 자신의웹사이트에맞는웹취약점점검을한후, 그에따른웹방화벽정책을설정할경우보다나은웹보안환경을구축하는데도움이될것이다. WebKnight는 GNU 공개라이센스원칙을따르는공개소프트웨어로써모든기업이나개인이자유로이사용할수있다. 또한, WebKnight는 SQL Injection을포함한다양한웹공격에대해차단할수있는프레임을제공해주고있고, IIS의각버전에따라별다른문제없이운영이가능하여보다효과적으로웹서버보안을이룰수있다. 하지만, WebKnight의잘못된설정은정상적인웹요청까지차단할수있으므로충분한최적화과정을거쳐한다. - 2 -
2. WebKnight 소개 WebKnight는 AQTRONIX사 (http://www.aqtronix.com/) 에서개발한 IIS 웹서버에설치할수있는공개용웹방화벽이다. WebKnight는 ISAPI 필터형태로동작하며, IIS 서버앞단에위치하여웹서버로전달되기이전에 IIS 웹서버로들어온모든웹요청에대해웹서버관리자가설정한필터룰에따라검증을하고 SQL Injection 공격등특정웹요청을사전에차단함으로써웹서버를안전하게지켜준다. 이러한룰은정기적인업데이트가필요한공격패턴 DB에의존하지않고 SQL Injection, 디렉토리 traversal, 문자인코딩공격등과같이각공격의특징적인키워드를이용한보안필터사용으로패턴업데이트를최소화하고있다. 이러한방법은알려진공격뿐만아니라알려지지않은공격에도웹서버를보호할수있다. 또한, WebKnight는 ISAPI 필터이기때문에다른방화벽이나 IDS에비해웹서버와밀접하게동작할수있어많은이점이있다. MS의 URLScan과마찬가지로 ISAPI 필터로써 inetinfo.exe 안에서동작하므로오버헤드가심하지않다. 해킹당한한웹사이트에 WebKnight를적용하여테스트한결과안정적인웹서버운영으로인해웹서버속도가오히려빨라진것을느낄수있었다. 하지만다량의웹트래픽이발생되는사이트에서는사전에충분한검증을거친후에적용할필요는있다. - 3 -
WebKnight 3.1 은 2013 년 7 월 31 일기준으로업데이트되었으며, 관리자기능이웹사이 트빌트인형태로추가되는등일부기능이추가되었다. 다음은 WebKnight 의주요특징이다 (http://www.aqtronix.com/?pageid=99 참조 ). WebKnight 특징 o 오픈소스 (Open Source) WebKnight 는 GNU, GPL(General Public License) 를따르는 Free 소프트웨어이다. o Logging 기본적으로차단된모든요청에대해로그를남기고, 로깅전용모드로운영할경우추가적으로모든허용된요청에대해서도로그를남길수있다. 로깅전용모드는공격을실제차단하지않고로그파일에서공격사실을조사하는데도움을줄수있다. o 최적화 (Customizable) 제조사로부터패치가릴리즈되기전의 0-day(zero-day) 공격마저무산시킬수있도록, 방화 벽은어떤작은원인에도최적화가가능해야한다. o 웹기반어플리케이션과의호환성 WebKnight 는 Frontpage Extensions, WebDAV, Flash, Cold Fusion, Outlook Web Access, SharePoint 등과도호환이잘이루어진다. o HTTP Error Logging WebKnight는웹서버로부터 HTTP 에러들을로그할수있도록설정할수있다. 이방법으로 404 Not Found' 와같은일반적인에러나 500 Server Error' 와같이보다심각한로그들도기록할수있다. 에러로그를이용하여공격을탐지하거나깨진링크를발견하거나잘못된설정도쉽게발견할수도있다. o SSL 보호 (SSL Protection) 다른전통적인방화벽과는달리 WebKnight 는 ISAPI 형태로 IIS 의일부로써동작하기때문에 HTTPS 상의암호화된세션들도모니터링및차단할수있다. o 3rd-Party 어플리케이션보호 (Third-Party Application Protection) WebKnight 는웹서버보호뿐만아니라전자상거래사이트및기타사용자웹사이트도설정 을통해보호할수있다. o RFC 규약 (RFC Compliant) WebKnight 는 RFC 를따름으로써 Request 값을스캔하기위한기능도포함되어있다. - 4 -
o 낮은보유비용 (Total Cost of Ownership) WebKnight는윈도우즈인스톨러패키지와원격설치스크립트로설치가능해사내에서쉽게 WebKnight를채택할수있다. 또한 WebKnight 설정을바꾸기위해그래픽사용자인터페이스를제공한다. o 운영중업데이트가능 (Run-time Update) 일부설정의변경을제외하고대부분의설정변경은웹서버의재가동을요구하지않아, 웹사용자들에대한어떠한서비스장애없이설정을변경할수있다. 성능상의이유로매 1분마다이러한변경을탐지하여적용한다. WebKnight 3.0 이상버전에서추가된특징 o 관리자웹인터페이스 (Admin Web Interface) 관리및통계등웹관리자기능추가하였다. o 필터확장 (ISAPI Extension) IIS 5 에서원시데이터추가필터기능추가, 아직 IIS 7 에서는지원하지않는다. o 사용자에이전트 (User-Agent) 비트쉘코드탐지, 특수공백및스푸핑탐지와같은기능이사용자에이전트에일부추가 되어검색을제공된다 o 엔진향상 (Improved Engine) 기본정책에일부규칙을추가하였으며, 사용자가이기능은제외가능하다. o 64bit IIS 에서동작하는 32bit Webknight(32-bit on 64bit IIS) 64bit IIS 에서 32bit 용 Webknigt 버전이설치가능하다. o 웹사이트별설정 (Settings per website) 웹사이트별로설정이가능하다 - 5 -
3. WebKnight 설치및제거 3.1. WebKnight 설치 안내서설치환경 o 플랫폼 : Windows 2008 R2( 윈도우 2008 x64) o 웹서버 : IIS 7.0 o WebKnight 소스디렉토리 : C:\Users\Administrator\Desktop\WebKnight o WebKnight 기본설치디렉토리 : C:\Program Files\AQTRONIX WebKnight ⓵ 아래 URL 에서 WebKnight 3.1 을다운로드받는다. http://www.aqtronix.com/?pageid=136 ⓶ 압축을해제한뒤 Setup 폴더로이동하면아래와같은파일들이생성된다. ⓷ 위파일중 WebKnight.Msi 파일을찾아실행하면다음화면이나타난다. - 6 -
⓸ 라이센스동의후설치타입선택화면이나타나는데, Typical 을선택한다. ⓹ 이후자동설치과정이진행되며설치가완료되면다음과같은메시지가나타난다. - 7 -
⓺ 기본설치를하게되면 C:\Program Files\AQTRONIX Webknight\ 폴더에 WebKnight 설치가된다. WebKnight.msi 를이용해설치시 Default 경로로설치가되는동시에 IIS 에서 ISAPI Filter 에자동등록된다. 간단히주요파일의특징은아래와같다 주요파일특징 o Config.exe : WebKnight의설정파일을읽어조작할수있게해주는파일 o denied.htm : 설정에서 Response Directly 옵션을통해보이는기본차단메시지 o LogAnalysis.exe : 로그분석기 o Robots.xml : User-Agent에대한 DB 파일 o WebKnight.dll : ISAPI Filter 파일, WebKnight가실제동작하는파일 o WebKnight.xml : WebKnight 동작을제어할수있는설정파일 ⓻ IIS 를재시작한다. ⓼ IIS 재시작후에관리자에서정상적으로설치가완료되었을경우다음과같이 IIS 관리자 에서 WebKnight 필터가정상적으로적용이된것을확인할수있다. - 8 -
⓽ 필터가정상적으로로드되었다면설치폴더에다음과같은로그파일이생성되었을것이다. WebKnight 가정상적으로로드되었고 Log Only 모드로동작하고있으며높은우선순위로 설치되었다는등의메시지가기록되었다. 10 IIS 7.0 이상환경에서설치시 (WebKnight.dll ISAPI 필터 ) - 9 -
IIS 7.0 이상의환경에서는 Global Filter 기능을지원하지않기때문에체크를해제해야 한다. 이로인해, OnReadRawData 이벤트를확인할수없어 POST 메소드의 Body 에포 함된공격을탐지할수없는한계가있다. 3.2 WebKnight 제거 WebKnight를제거한후에는반드시 IIS를재시작해준다. 설치원본파일중에 WebKnight.msi를실행하면아래그림과같은화면이뜨는데 Remove" 를선택해주면자동으로필터까지제거해준다. 그동안생성된로그파일은삭제되지않는다. - 10 -
4. WebKnight 운영 4.1. WebKnight 기본동작 WebKnight는 SQL Injection 공격차단, 허용하지않는파일또는확장자에대한접속차단등웹공격에대해대단히다양한차단기능을제공해주고있다. 또한기본적으로이러한차단기능이설정되어설치와동시에적용이되는데이차단기능이정상적인웹접속을차단할수도있다. 따라서설치이후자신의웹사이트환경에맞게적절하게최적화하는과정을반드시거쳐야한다. 실제설치보다는최적화에많은노력과시간을들여야만한다. 설정과정을통해오히려웹공격의다양한패턴을익힐수있는기회도될수있을것이다. 먼저, WebKnight 설치이후해당웹사이트에접속해서정상적으로웹요청및응답이이루어지는지확인을하고, 접속이차단될경우 WebKnight의로그를참조하여어떠한룰에의해요청이차단되었는지찾아이룰을수정하여야한다. 디폴트설치시로그파일의위치와설정프로그램, 설정파일은다음과같다. 주요프로그램 o 로그파일 : C:\Program Files\AQTRONIX WebKnight\LogFiles\YYMMDD.log o 설정프로그램 : C:\Program Files\AQTRONIX WebKnight\Config.exe o 설정파일 : C:\Program Files\AQTRONIX WebKnight\WebKnight.xml o WebAgents Database : C:\Program Files\AQTRONIX WebKnight\Robots.xml 설정파일은차단정책 ( 룰 ) 파일이라고도부른다. WebKnight 를설치후기본룰이적용된 상태에서웹사이트접속시다음과같은경고화면이뜰수있다. - 11 -
이화면은 WebKnight에서필터룰에의해차단을시킨후접속자에게보내는기본경고화면이다. 정상적인웹요청을했는데도불구하고이와같이차단된다면로그파일을열어 BLOCKED" 메시지를확인하고어느룰에서차단되었는지찾아설정파일에서이를수정해야한다. WebKnight는로그분석기를제공해주고있는데설치폴더내에 LogAnalysis.exe를실행하면자동으로로그파일들을불러오거나선택할수있고로그를분석하는데좀더용이하게해준다. - 12 -
위의화면을보면정상적인웹접속이차단되어로그파일을분석해보니다음과같은로그 가남았다. 2013-04-12 ; 06:59:59 ; W3SVC1 ; OnUrlMap ; ::1 ; ; localhost ; / ; C:\inetpub\wwwroot ; BLOCKED: Not in allowed path list 'C:\inetpub\wwwroot' 기본적인로그파일의각필드는다음과같다. Time ; Site Instance ; Event ; Client IP ; Username ; Additional info about request(event specific) 이외에도룰설정의 Logging" 섹션에서추가적으로항목을구성할수있다. 위의로그를보면 "C:\Inetpub\wwwroot" 이라는폴더에대한접속이허용되지않도록설정이되어있어차단된것이다. 이처럼 White List 필터링방식으로허용할사항들만키워드를등록하여사용할수도있다. 불필요한폴더로의접근은거부하는등웹서버에대한보안을강화시킬수있는옵션이다양하게구현돼있다. - 13 -
다음 FAQ 에는 WebKnight 의설치와환경설정, 로그파일분석시자주발생될수있는문 제와궁금증에대해질의 응답식으로정리되어있으므로참고하기바란다. http://www.aqtronix.com/?pageid=114 로그파일해석시기본설정의로그시간대는 GMT/UTC 로한국시간대인 GMT+09 보다 9 시간늦으므로로그분석시이를감안하여야한다.( 설정에서 USE GMT 를체크하지않음으 로써시스템시간과동기화시킬수있다.) 4.2. WebKnight 설정관리자 (Config.exe) 설정파일은 WebKnight.xml 로 XML 파일형태로작성이되며, WebKnight 설치시인스톨 되는설정관리자 (Config.exe) 를사용하면각종정책을보다쉽게관리할수있다. WebKnight.xml 파일을 Confix.exe 로실행할경우 WebKnight Configuration 에각각의정책 항목을볼수있다. - 14 -
WebKnight는대응방법, 로깅, 로봇차단, 메소드차단등다양한설정기능들이존재한다. 세부정책항목은다음과같다. 구분기능비고 Default 설정시 : WebKnight 3.1 에서추가된기능으로관리및통계를 Admin /127.0.0.1/WebKnight/ 지원하는웹인터페이스에서확인가능 Scanning Engine 암호화포트 (HTTPS), 비암호화포트 (HTTP) 에대한모니 터링, 웹인스턴스나 IP 에대한제외여부등설정 Incident Response Handling 탐지가되었을때응답처리방식, Default 로정의된파일 을보여줄것인지사용자정의파일로바꿀것인지로그 만남길것인지등의제어가가능 최초설치시 Log Only" 모드로룰 최적화 Logging Connection 로깅여부, 로그시간대, 로그항목 ( 클라이언트 IP, 사용 자명등 ) 등을설정 IP 를모니터링하거나차단, 요청의제한등을설정 Use GMT: Disable Client Error, Server Error: Disable Authenticati on Request Limits URL Scanning 시스템의인증및계정, 패스워드설정등에대해설정하고 Brute force에대해서거부하는등의동작컨텐츠길이, URL 길이, 쿼리스트링길이등을제한 URL Encoding 공격, 상위경로 (../), URL 백슬래쉬 (\),URL 인코딩 (%), 특정 URL 스트링등 URL 관련모니터링및 URL Denied Sequences - 15 -
Mapped Path Requested File Robots Headers Referer User Agent Methods Querystring Global Filter Capabilities SQL Injection Web Applications 차단 Directory Traversal 공격, 백슬래쉬 (\) 등허용하지않을문자및로컬시스템내의허용할경로정의차단시킬파일의문자열과키워드목록, 차단 허용할파일확장자등을정의자동화된로봇, 봇에이전트등에대한차단동작을설정서버헤더정보변경, 특정헤더차단및헤더에서의악의적인동작등에대한차단등설정외부의불필요한링크나트래픽에대한제한, 특정도메인에대한제한등에설정웹서버로접속하는브라우저등의 Agent에대해차단및허용여부를설정허용또는차단할 Method를결정 ( 예 : GET, HEAD, POST은허용하고 DELETE, PUT 등은차단 ) 특정 query 스트링 (xp_cmdshell, cmd.exe 등 ) 차단, query 스트링에서 SQL Injection 차단등설정글로벌필터적용여부, POST 값에서의특정스트링 (xp_cmdshell, cmd.exe 등 ) 차단등을결정 SQL Injection 공격에이용되는키워드정의 (, ;, select, insert xp_ 등 ) WebDAV, IISADMPWD 등웹어플리케이션의허용유무결정 항목확인필요 Allowed Paths 에서웹App가있는위치확인및지정필요정상적인요청이차단될수있으므로반드시확인필요추가로 Robots.xml이있다. Robots.xml을통해세부설정가능 POST 값에대한필터링여부와 IIS버전에따른옵션해제공격에이용될수있는수십개의키워드가정의되어있으나확장저장프로시져의사용유무등을고려하여추가 / 삭제필요기본적으로모두사용하지않는것으로설정되어있음 4.2.1 WebKnight 관리자웹인터페이스 WebKnight 3.1 에서는관리자웹인터페이스가추가되었다. 이에따라, 설정관리자 (Config.exe) 에서웹관리자인터페이스를사용할지결정할수있다. - 16 -
위의그림과같이설정파일에서 Enable 시킬경우웹관리자를통하여정책및로그등을 웹인터페이스를통하여확인가능하다. Defalult 설정시 /127.0.0.1/WebKnight/ 에서웹관리 자페이지를볼수있다. 웹관리자인터페이스에서는설정한정책, Log, 설정세팅, Robots 등을확인가능하다. - 17 -
Log 메뉴는 LogAnalysis.exe 실행없이웹 UI 에서직접로그파일을볼수있다. Settings 메뉴는아래그림과같이구성된다. 이중, Configured settings 의경우정책을설정하는페이지이며, Loaded settings 는기저장 된설정파일 (Loaded.xml) 을, Reload settings 는이전의설정파일 (WebKnight.xml) 을읽어오 는페이지이다. Clear cache 의경우중간에저장된설정파일을삭제한다. 4.2.2 트래픽감사설정 설정메뉴중 Scanning Engine 은트래픽엔진이탐지할곳을설정할수있는메뉴이다. 최초설치시설정되어있는 Scan Non Secure Port, Scan Secure Port 항목을체크하여 HTTP/HTTPS 트래픽을모두탐지하도록해야지만, 보다안전하게운영할수있다. 만약, 트래픽을감사할필요가없는신뢰된사이트가존재하거나취약점점검, 모의해킹 등을수행할목적으로차단해지가필요할경우, 위의전체감사기능을끄는것이아니라일 - 18 -
부 IP 만예외처리하는것이가능하다. 다음은본설정방법을설명하기위한예시 IP 목록이며아래의 IP 들에대해감사예외 IP 로설정하는방법을알아본다. 61.250.206.136 192.168.85.129 192.168.85.131 이 IP 목록을 WebKnight 설정파일 (Config.exe) 에서 Scanning Engine - Use Excluded IP Addresses 옵션을 Enable 한뒤아래화면과같이등록해주면된다. 또한하나의 IP 가아니 라범위로지정하고자한다면 221.149.161.5/24 와같이 CIDR 표기법으로설정하면된다. 이외에도, WebKnight 3.1 부터는특정 IP 대역에대한예외처리뿐아니라, user-agent 등 헤더의파일을보고예외처리할수있는기능이추가되었다. - 19 -
그외특정공격에대하여차단정책을설정하는방법은 5 장에서다룬다. - 20 -
5. KISA 웹취약점점검과차단정책설정 5.1 웹취약점점검소개 한국인터넷진흥원에서는영세기업들이안전한홈페이지운영을지원하고자웹사이트원격취약점점검을무료로제공하고있다. 툴박스홈페이지 (http://toolbox.krcert.or.kr) 에서무료웹취약점점검을신청한이후점검결과를바탕으로자신의웹사이트중취약한부분에대하여맞춤형설정을할경우, 더안전하게웹사이트운영이가능하다. 무료원격웹취약점점검신청의경우, 취약점점검신청자본인이해당사이트운영자인 지확인을하여검증이이루어지기때문에해당사이트 url 에해당하는 E-Mail 로신청하거나 사이트관련사업자증명서등을보유해야한다. - 21 -
5.2 웹취약점점검결과보고서설명 1 결과보고서템플릿웹사이트원격취약점점검을받은이용자분들은점검이완료된후점검결과보고서를받게되며, 웹취약점결과보고서는취약점종류, URI에포함된취약점개수, 조치방법등을포함하고있다. 2 점검결과요약 3.5 항, 3.6 항의내용을통해웹사이트의취약점현황을파악할수있다. 3.5 항 URL 의문제 개수는해당 URL 의잠재한취약점항목의개수를의미하며, 3.6 항의취약점별결과요약의 문제개수는취약점항목별 HTTP 요청시포함된취약한파라미터의개수를의미한다. - 22 -
3 보안취약점세부내용웹취약점세부내용은위험도, 영향받는 URL, 분류, 취약점원인, 점검환경, 요청 / 응답내용으로구성되어있다. 위험도는발견된취약점의피해영향에따라 상, 중, 하, 참고 로구분되며, 영향받는 URL은취약점이발견된페이지를의미한다. 분류는조치방법이소스코드수정사항인지환경설정사항인지를의미한다. 점검환경은취약점이발견된파라미터와점검문자열을설명한다. 요청 / 응답내용은취약점점검을위해사용자브라우저에서요청한내용과웹서버가응답한내용을포함하고있다. WebKnight 차단정책설정을위해유심히확인해야될내용은파라메타값변경부분이다. 웹취약점점검은정상적인파라메타값을비정상적인값으로변경시켜취약여부에대해확인하는방법을사용하기때문이다. 위의웹취약점내용은입력값에대한적절한필터링이되지않아발생하는 XSS( 크로스사이트취약점 ) 취약점예시이다. 보고서에기록된요청 / 응답내용부분을확인하여실제점검내용이정 오탐여부확인과취약점에대한상세내용을확인하는데참고할수있으며, 또한, 한국인터넷진흥원에서는해 - 23 -
당내용에대한정탐 / 오탐여부에대해자세한기술지원을하고있다. 웹취약점점검및관련기술지원기술문의 o Tel : 02-405-5665 o E-Mail : toolboxadmin@krcert.or.kr 5.3. WebKnight 차단정책설정 WebKnight 는차단정책설정시 4.2 의 세부정책항목 에서설명된옵션들을사용한다. 이 중아래그림의메뉴들이주로차단정책에활용할수있는메뉴들이다. WebKnight 에서는정규식을지원하지않기때문에, 차단정책을설정할경우차단될문자 열과특수문자로조합으로설정해야한다. 여기서는 5.2 절의웹점검결과보고서를바탕으로취약점차단하는방법을설명한다. 5.3.1 XSS 취약점차단정책예 1 WebKnight 설치전취약점확인 1 단계 ) 웹취약점결과보고서에서 URL, 파라미터, 점검문자열을식별한다. - 24 -
구분 내용 URL 파라미터점검문자열디코딩 http://192.168.137.101/orderok.aspx OrderNo >"'><img%20src%3d%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26 %23x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26% 23x3a;alert(180419) >"'><img src=javascript:alert(180419)> 2 단계 ) 웹브라우저를이용하여취약점이존재하는지테스트한다. 3 단계 ) 테스트결과를확인한다. 아래와같이스크립트가정상적으로실행되는것을확인할수있으며, 홈페이지에 XSS 취 약점이존재한다고판단할수있다. - 25 -
2 WebKnight 설치후취약점확인 설치후점검문자열이정상적으로차단되는지테스트한다. 기본차단정책으로아래와같이공격이차단된것을확인할수있다. 하지만차단정책으로방어가되는않는취약점들은추가적인차단정책설정이필요하다. 1단계 ) 동일한문자열로테스트한다. 2단계 ) WebKnight 에아래와같은차단메시지가출력되는지확인한다. 3 단계 ) WebKnight 설치폴더에서 LogAnalysis.exe 를실행한후차단로그를확인한다. 차단로그를확인한결과 SQL 인젝션차단정책에설정되어있는 '(SingleQuotation), ;(Semicolon) 으로차단되었다. 차단은되었지만 XSS 공격이 SQL 인젝션차단정책으로차단되 었기때문에, 정확한차단을위해추가적인차단정책을설정해야한다. - 26 -
4 단계 ) 점검문자열을분석한다. 아래의점검문자열을방어하기위해서는 OrderNo 파라미터의뒤에추가적으로붙은문자열을정책으로설정하는것이핵심이다. <img[space] 를차단문자열로설정할수있지만웹사이트에따라서오차단의여지가발생할수있기때문에, javascript: 문자열의 html 인코딩문자열을방어정책으로설정을하였다. 실제로 XSS 공격은 javascript에서제공하는다양한기능을이용하기때문에근본적으로 javascript: 를사용하지못하도록차단하는것이다. javascript: 문자열은이미기존에차단정책으로설정되어있지만 html 인코딩으로인해차단을못하는경우이다 취약점점검문자열 >"'><img%20src%3d%26%23x6a;%26%23x61;%26%23x76;%26%23x61;%26%23 x73;%26%23x63;%26%23x72;%26%23x69;%26%23x70;%26%23x74;%26%23x3a;al ert(180419) 방어문자열 javascript: 4 단계 ) 차단정책설정을위해 Config.exe 를실행시킨후 QueryString 부분에정책을설정한다. 5 단계 ) LogAnalysis.exe 를실행한후차단정책이적절히동작하는지확인한다. [XSS 차단정책결과로그확인 ] - 27 -
추가설정한차단문자열로점검문자열이정상적으로차단되는것을확인할수있다. 차단정책설정후에는반드시서비스이용에문제가없는지로그분석을통해충분한테스트를수행해야한다. 차단정책이오차단등서비스이용에문제를야기한다면, 다른정책을고려해야한다. POST 메소드를사용하여, Request 데이터를전달시게시판에입력된내용들이 Body에포함되어전달됩니다. 게시판에작성한글들은 HTML 인코딩후전달되기때문에이부분을고려하여차단정책을설정해야한다. WebKnight에서지원하는디코드엔진은 URL 인코딩만해당되기때문에 HTML 인코딩을디코딩하여차단하지않음을참고해야한다. 3 WebKnight 설치후이행점검을통해취약점이확인된경우 결과보고서에있는취약점에대해기본방어정책이나추가정책을수립하여도이행점검을통해추가적인취약점이발견될수있기때문에, 이행점검은반드시받아야한다. 이행점검을통해발견된취약점은역시차단정책으로설정해야합니다. 1단계 ) 취약점결과보고서에서 URL, 파라미터, 점검문자열을식별한다. 구분 내용 URL 파라미터 점검문자열 http://192.168.137.101/orderok.aspx OrderNo <DIV%20STYLE="width:%20expression(alert(1234));"> 2 단계 ) 웹브라우저를이용하여취약점이존재하는지테스트한다. 3 단계 ) 테스트결과를확인한다. WebKnight의기본차단정책으로처음점검문자열은차단했지만다른패턴의점검문자열이시도된결과아래와같이스크립트가정상적으로실행되어홈페이지에 XSS 취약점이존재한다고판단할수있다. - 28 -
4 단계 ) 점검문자열을분석한다. 아래의점검문자열을방어하기위해서는 OrderNo 파라미터의뒤에추가적으로붙는문자열을정책으로설정하는것이핵심이다. <div[space] 혹은 STYLE=" 를차단정책으로설정할수있지만오차단이발생할수있어 expression( 를차단정책으로설정하였다. expression는 MS사에서제공하는 Dynamic Properties로 CSS 환경에서동적콘텐츠를제공하기위해제공하는기능이다. 해당속성을사용하여 CSS 파일에악성URL을삽입하는것으로악용되기도합니다. 취약점점검문자열 <DIV%20STYLE="width:%20expression(alert(1234));"> 방어문자열 expression( 5 단계 ) WebKnight 의 Querystring 영역에차단정책을설정한다. 차단할문자열을아래와같이등록한다. 6 단계 ) 차단정책이적절히동작하는지확인한다. 정상적으로차단이되었는지아래와같이테스트를실행합니다. 점검문자열이포함된요청 시정상적으로차단된것을확인할수있습니다. - 29 -
그리고 WebKnight 에포함된 LogAnalysis.exe 도구를사용하여, 차단로그를확인한다. 아래 처럼, 정상적으로차단이된것을확인할수있다. 역시, 차단정책설정후에는반드시서비스이용에문제가없는지로그분석을통해충분한 테스트를수행해야한다. 차단정책이서비스이용에문제가생긴다면다른차단정책을고려 해야한다. - 30 -