Web Hacking 과제_2(Rootm_XSS - Stored 2)
Challenges/Web - Client : XSS - Stored 2 [Root Me : Hacking and Information Security learning platform]
www.root-me.org
일단 문제를 풀기 전에 개념을 간단히 살펴보고 넘어가자.
XSS(크로스 사이트 스크립트)란? 공격 유형부터 보안대책까지! | SK쉴더스
XSS(크로스 사이트 스크립트)란? 공격 유형부터 보안대책까지! | SK쉴더스
온전한 지속가능의 시작, 안녕을 지키는 기술에서 시작합니다. SK쉴더스
www.skshieldus.com
XSS(Cross Site Scripting)는 웹 서버 사용자에 대한 입력값 검증이 미흡할 때 발생하는 취약점으로, 주로 여러 사용자가 보는 게시판이나 메일 등을 통해 악성 스크립트를 삽입하는 공격 기법이다.
일반적으로 사용자 쿠키/세션 값 탈취, 키보드 입력값 탈취 등이 가능하며, 피싱 사이트와 같은 악성 사이트로의 접근 유도가 가능해 사용자에게 직접적인 피해를 줄 수 있다.
XSS 공격 유형은?
크로스 사이트 스크립트 공격은 주로 스크립트 언어와 취약한 코드를 대상으로 하는데, 공격 방법에 따라 유형이 나뉘며 크게 3가지로 구분할 수 있다.
✅ Stored XSS (저장형 크로스사이트스크립트)
취약점이 있는 웹 서버에 악성 스크립트를 저장하는 공격 방법이다.
공격자는 악성 스크립트가 포함된 게시글을 작성하여 게시판 등 사용자가 접근할 수 있는 페이지에 업로드하며, 이후 사용자가 해당 게시글을 요청하면 서버에 저장된 악성 스크립트가 사용자 측에서 동작하게 된다.
✅ Reflected XSS (반사형 크로스사이트스크립트)
웹 응용 프로그램의 지정된 변수를 이용할 때 발생하는 취약점을 이용하는 공격으로, 악성 스크립트가 데이터베이스와 같은 저장소에 별도로 저장되지 않고 사용자의 화면에 즉시 출력되며, 주로 이메일, 메신저 등에 포함된 URL을 통해 공격이 이루어지고 있다.
✅ DOM Based XSS (DOM 기반 크로스사이트스크립트)
악성 스크립트가 서버와 상호작용 없이 브라우저 자체에서 실행되는 취약점으로, 페이지에 포함되어 있는 브라우저 악성코드가 DOM 환경에서 실행된다.
DOM(Document Object Model, 문서 객체 모델): 브라우저가 웹 페이지를 렌더링 하는데 사용하는 모델로 HTML 및 XML 문서에 접근하기 위한 인터페이스 Stored XSS 및 Reflected XSS는 서버에서 악성 스크립트의 공격이 이루어지기 때문에 위험 징후를 발견할 수 있다.
반면, DOM Based XSS는 브라우저에서 바로 공격이 이루어지기 때문에 취약점을 쉽게 발견할 수 없다는 특징이 있어 보다 깊은 주의가 필요하다.
문제를 열어보았다.
생긴걸봤을때, 뭔가 게시판 느낌이다.
일단 입력을 해보니까 방문자로 기입되어 글이 작성되는 것을 확인 할 수 있었다.
공격을 시도해봤다.
공격하니까 admin으로 로그인이 된? 것 같다?
근데 해당 공격을 하면 알림창이 떠야하는데 공격이먹히지는 않은 것 같다.
갑자기 왜 위와 같이 떴는지는 알수가없음...
일단 해당 문제를 풀기위해 힌트를 찾아봤다.
해당 페이지에서 쿠키값을 한번 확인해보면, status 라는 이름의 쿠키에 invite 라는 값이 저장되어있는데,
이것을 변조하여 XSS가 가능하다고 한다.
게시글을 작성하면 옆에 같이 찍혀나오는 부분을 f12 개발자도구를 이용해 보면, <i class="invite">status : invite</i> 라고 되어있는것을 확인할 수 있다.
status 쿠키의 값을 EditThisCookie를 이용해 test로 바꾼다면
해당 부분도 invite에서 test로 바뀌어서 출력되게 된다. 이건 필터링이 안걸리니, 여기를 이용해서 XSS를 하면 된다.
status 쿠키의 값을 abcd"><script>alert(1)</script> 로 바꿔준다.
그럼 <i class="abcd"><script>alert(1)</script>">status : invite</i> 와 같이 입력값이 들어가게 되어서 alert(1) 이 실행될 것이다.
RequestBin(https://requestbin.net/)으로 가서 요청을 받아줄 주소를 하나 생성해야하는데, 페이지 오류로 들어갈 수가 없다.
......원래는 저 사이트에서 주소를 생성하고 생성한 주소를 활용해 쿠키값을 설정하고 글을 작성한뒤에 기다리면,
RequestBin에 찍혀있는 ADMIN_COOKIE 를 확인할 수 있는데, 그래서 그 쿠키값을 ModHeader를 이용해 적용시켜 주고
문제 페이지로 돌아와 admin 버튼을 누르면 플래그를 찾을 수 있다.
근데 페이지가 안열리는 이슈로 일단 끝까지 마무리는 못했다.
관련된 내용을 더 찾아본 후 문제를 재시도해봐야겠다.
[ 참고자료 ]
https://hackingstudypad.tistory.com/297
[Root Me] XSS - Stored 2 - 웹해킹 / 크로스사이트스트립트
오랜만에 포스팅하는 Root Me 문제 이번엔 두번째 XSS 문제이다. (첫번째 문제 : https://hackingstudypad.tistory.com/48) 두번째 문제라 그런가 점수가 50점으로 확 올라갔다. 문제의 목표는 첫번째 문제와 동
hackingstudypad.tistory.com