XSS Point 1
DATE : 2023/12/20
Last updated
DATE : 2023/12/20
Last updated
이번 POST를 시작으로 XSS Point 6까지 걸쳐 XSS 공격 포인트를 찾는 연습을 해볼 것이다.
이번에도 SQLi 때와 마찬가지로 회원 가입 및 로그인 과정은 필수!
회원 가입을 한 후, 바-로 로그인해 index.php로 들어온 화면이다.
로그인을 마친 사용자에게는 마이페이지, 공지 사항 페이지가 제공된다.
차례대로 마이페이지부터 방문해보자.
마이페이지로 들어가게 되면 위와 같은 화면을 볼 수 있을 것이다.
이 페이지로 접속할 때 서버와 주고 받은 packet을 확인해보면
URL에 user parameter로 현재 로그인한 사용자의 ID가 전달되고 있는 동시에
그 값과 일치하는 데이터가 response에 들어있는 걸 확인할 수 있다.
이 부분을 XSS 공격 포인트로 삼을 수 있을 지 user parameter 값을 조작해보면
response에 별 반응이 없는 걸 볼 수 있다.
안타깝지만, user parameter를 조작한다고 해서 response 내용을 바꿀 수 있는 건 아니었나 보다.
공지 사항 페이지로 들어가게 되면 위와 같은 화면을 볼 수 있을 것이다.
글쓰기 버튼을 눌러 제목과 내용을 간단히 작성해주면
작성한 게시물이 생성된 걸 볼 수 있다! 한 번 클릭해서 들어가 보자.
게시물의 상세 페이지로 이동하면 위와 같이 수정, 삭제 버튼과 함께
작성된 게시물의 내용과 제목을 한 눈에 볼 수 있다!
이 페이지에 들어오기 위해 서버로 날아간 Packet을 확인해보니
이번에는 id & view parameter가 전달되고 있다.
id는 게시물에 부여되는 고유 번호 같은데, 다른 값으로 바꿔봤더니
권한이 없다고 한다.. view parameter도 다른 값을 넣어봤지만 별 다른 변화를 찾아내진 못했다.
view parameter에 응답이 달라지지 않는 걸 보면 id parameter만 가져다가 select문을 실행해
게시물 정보를 가져와 페이지에 띄워주고 있는 듯하다.
우리는 XSS 공격 포인트를 찾고 있는 것이기 때문에 이 부분은 일단 넘기기로 하자.
그렇다면 그냥 대놓고 게시물에 XSS를 실행하기 위한 스크립트를 작성해보자!!
이번 POST는 말 그대로 XSS 포인트를 찾는 게 목적이기 때문에
alert() 함수가 실행되는 여부만 확인해볼 것이다.
내용을 저장하고 난 뒤
공지 사항 페이지에서 스크립트 내용으로 수정한 게시물을 다시 클릭하게 되면..!
아무 일도 일어나지 않는다! (lol)
게시물 내용에 작성한 script는 우리가 의도한 대로 스크립트로써 동작하지 못하나 보다.
게시물 작성 시 서버로 전달되는 Packet을 사용해서
title 부분에 <script>alert(1)</script> 를 작성해보았다.
그 결과 글 작성에 성공했다고 하니 페이지에서 게시물을 확인할 수 있을 것이다.
(하나씩 적어본다는 게.. 너무 많이 만들어버렸다..)
만약 게시물 제목 부분에 XSS 공격이 가능하다면 TItle에
를 작성해둔 게시물을 클릭했을 때, 팝업 창이 뜨게 될 것이다.
결과를 확인하기 위해 게시물을 클릭해보면..!
성공적으로 alert(1)이 실행된 결과를 마주할 수 있을 것!!
그럼 다음으로 넘어가 공지 사항 페이지를 탐색해보자.
그렇다면 게시물 내용이 아니라 제목에 작성해보는 건.. 어떨까?
이렇게 해서 XSS 공격 포인트 찾기 - 첫 번째 문제 해결이다.