출제를 위해 DOM 개념을 좀 더 연구해보고자 기초문제부터 차근 차근 풀어보려고 한다.
web security academy 사이트 문제는 한국인이 써놓은 글이 많이 없길래 내가 써보려고 함....
This lab demonstrates a simple web message vulnerability. To solve this lab, use the exploit server to post a message to the target site that causes the print() function to be called.
print() 함수가 호출되도록 익스플로잇 서버를 사용해서 타겟 사이트로 메시지를 포스팅하라고 한다.
메인 페이지는 위와 같이 생겼다
F12로 코드를 살펴보자.
코드를 살펴보다 보니 위와 같이 addEventListener() 를 포함하는 script 태그 발견!
eventTarget.addEventListener('eventType', function)
=> 이벤트를 실행할 타겟.addEventListener('이벤트타입', 실행할 함수)
addEventListener() 함수는 특정 이벤트가 발생했을 때 지정된 함수를 호출하는 기능을 제공
위 코드는 현재 window 객체에서 message 이벤트를 감지하고, 이 이벤트가 발생했을 때 콜백 함수가 실행됨
콜백 함수는 e 객체를 통해 메시지의 데이터(e,data), 메시지를 보낸 출처(e.origin), 메시지를 보낸 창 객체(e.source)를 확인할 수 있음
여기서 message 이벤트는 다른 창, 탭, 또는 iframe에서 메시지를 수신할 때 발생한다.
예를 들어, 한 웹 페이지에서 iframe에 포함된 다른 도메인 페이지로 데이터를 보내거나 받을 때 사용됨
실행 코드로는 현재 id='ads' 인 코드에 e.data를 삽입하도록 되어 있는 것을 확인
ID가 ads인 코드로 div 태그에 페이로드가 삽입되도록 한다.
페이로드는 다음과 같이 작성했다.
<iframe src="https://0a4e00630344a1598339fa58001600bf.web-security-academy.net/" onload="this.contentWindow.postMessage('<img src=1 onerror=print()>','*')">
- src는 iframe에 로드될 웹 페이지의 URL 지정
- onload 이벤트로 iframe이 로드된 후에 실행될 javascript 코드 지정
- postMessage : 메시지를 특정 창이나 iframe에 보냄
=> 첫 번째 인자 : 보내는 메시지로, <img src=1 onerror=print()> 를 전송 (src=1은 유효하지 않으므로 이미지 로드 x)
=> 두 번째 인자 : 메시지를 받을 도메인 지정, ' * ' 로 지정하면 모든 도메인이 메시지를 받을 수 있도록 설정한 것!
'Web Hacking' 카테고리의 다른 글
[WEB] Burp Suite(버프 스위트) 설치 및 환경 설정 방법 (v. 2024.11.02) (0) | 2024.12.21 |
---|---|
[WEB] 네트워크 경유 서버 취약점 및 공격 과정 (0) | 2024.12.02 |
[WEB] DreamHack Web Hacking 커리 모두 학습 완료!🎉 (0) | 2024.11.16 |
[WEB] Exploiting DOM clobbering to enable XSS 풀이 (0) | 2024.07.23 |
[WEB] DOM XSS using web messages and a JavaScript URL 풀이 (0) | 2024.07.23 |