web security academy 18

2026. 3. 13. 12:45ㆍ보안/Web security Academy

Lab: DOM XSS in innerHTML sink using source location.search

This lab contains a DOM-based cross-site scripting vulnerability in the search blog functionality. It uses an innerHTML assignment, which changes the HTML contents of a div element, using data from location.search.

To solve this lab, perform a cross-site scripting attack that calls the alert function.

(이 연구실에는 검색 블로그 기능에 DOM 기반 사이트 간 스크립팅 취약점이 포함되어 있습니다. 이 연구실은 location.search의 데이터를 사용하여 div 요소의 HTML 내용을 변경하는 내부 HTML 할당을 사용합니다.

이 실험실을 해결하기 위해 경고 함수를 호출하는 사이트 간 스크립팅 공격을 수행합니다.)

 

1.  innerHTML에 취약점을 가지고 alert실행

 <script>
                            function doSearchQuery(query) {
                                document.getElementById('searchMessage').innerHTML = query;
                            }
                            var query = (new URLSearchParams(window.location.search)).get('search');
                            if(query) {
                                doSearchQuery(query);
                            }

</script>

웹페이지에 코드는 이런식으로 작성이 되어있다  입력칸에 있는 값을 그대로 가져와 innerHTML을 하는 식이다

 

그럼 innerHTML에 취약점에는 onerror같은 방식이 있기 떄문에 

<img src=x onerror=alert('해킹완료')>

구문을 사용하면 x라는 거는 존재하지 않기 떄문에 error를 발생 시키는데 발생시키는 에러가 alert이기 때문에 alert를 실행시키는 방식이다

 

방어 기법으로는 InnerHTML, Document.write(), outerHTML등을 사용하지 않고 textContent, InnerText를 사용한다 

허나 HTML태그가 꼭 필요하다면 DOMPurify를 사용한다 다른 방법으로는 사용자 입력값을 URL이나 속성값에 넣을 때는 브라우저가 오해하지 않도록 인코딩 한다

 

 

 

이상입니다

'보안 > Web security Academy' 카테고리의 다른 글

web security academy 20  (0) 2026.03.16
web security academy 19  (0) 2026.03.14
web security academy 17  (0) 2026.03.11
web security academy 16  (1) 2026.03.10
web security academy 15  (0) 2026.03.09