[Web_Hacking] Reflected XSS-2

Song·2024년 8월 29일

XSS

목록 보기
3/12

Lab: Reflected XSS into attribute with angle brackets HTML-encoded

이번 LAB에서는 애플리케이션이 입력값에 대해 HTML인코딩을 수행할 때 이를 우회하는 방법을 배웁니다.

문제

blog 검색 기능에 취약점이 존재하며 꺽쇠 기호(<,>)는 HTML 인코딩이 수행된다. 이 LAB을 해결하기 위해서는 HTML 속성을 사용해 alert() 함수를 호출해야한다.


정보 탐색

우선 이전 단계에서 사용했던 <script>alert('test');</script> 코드를 입력해보겠습니다.

이전과 다르게 코드가 작동하지 않습니다.

코드를 보면 문자열로 해석되어 입력된 것을 볼 수 있습니다.

그런데 입력값이 출력되는 부분이 검색창 상단뿐만 아니라 검색창의 Value 값으로도 출력이 되고 있습니다.

그렇다면 꺽쇠 기호(<,>)는 인코딩이 수행되기 때문에 JS코드를 실행시키는 HTML 속성을 사용해보겠습니다.


공격

💡 JS 코드를 실행시키는 HTML 속성들

  • onmouseover : 마우스가 요소 위로 올라갈 때 실행
  • onmouseout : 마우스가 요소 밖으로 이동할 때 실행
  • onmousemove : 마우스가 요소 위에서 움직이는 동안 실행

위 속성들을 사용하면 꺽쇠기호(<,>) 없이도 JS 코드를 사용할 수 있습니다.

코드에 입력되었을 때 형태를 보면

value="<script>alert('test');</script>"

value 속성의 값으로 양쪽에 ""로 덮여있습니다. 이를 벗어나기 위해onmouseover 앞에 따옴표(")를 붙여 앞선 따옴표(")를 닫고 onmouseover 속성을 주입하겠습니다.

"onmouseover="alert('test');

검색창 상단엔 다음과 같이 출력되며

소스코드에는 value의 값은 존재하지 않고 onmouseover 속성이 추가된 것을 확인할 수 있습니다.

이제 검색창에 마우스를 갖다대면

경고창이 나타나며 LAB이 클리어됩니다.

profile
안녕하세요

0개의 댓글