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 |