본문 바로가기
Portswigger/XSS

Portswigger - Reflected XSS into HTML context with most tags and attributes blocked solution

by jh117jh 2023. 9. 26.
728x90

이번 문제는 WAF로 인해 태그와 속성이 필터링되어 있는 상황에서 WAF를 우회해 print() 함수를 피해자에게 호출하면 된다.

 

WAF란?

웹 응용 프로그램 방화벽은 웹 서비스에서 들어오고 나가는 HTTP 트래픽을 필터링, 모니터링 및 차단하는 특정 형태의 응용 프로그램 방화벽이다.

 

우선 홈페이지 검색창에 <a>, <script>, <iframe>, <img>...등 다양한 태그를 입력해 본 결과

에러 메세지와 함께 동작하지 않았다.

 

사실 여기서 여러 태그를 시도해 보고 js코드와 소스코드, 태그 없이 xss를 실행할 수 있는 방법이 있는지 찾아봤지만

끝내 찾아내지 못해 솔루션을 확인했다.

 

설루션에서는 Brute force를 이용해 xss에서 사용되는 태그를 무차별 적으러 넣어 작동하는 태그를 확인했다.

 

검색 패킷을 탈취후 검색어를 타깃으로 지정하여 

XSS cheat sheet를 이용하여 사용되는 태그를 전부 넣어 돌려주면 

총 152개이므로 별로 안걸린다.

Status code가 200으로 정상적으로 작동하는 경우를 찾으면

custom tags를 제외하면 body태그가 정상적으로 작동한다.

 

이제 이벤트 속성을 찾아내기만 하면 되는데

이벤트 속성도 brute force를 이용해 찾아보면 된다.

 

body태그 속성으로 타깃을 지정하고 XSS cheat sheet에서 이벤트속성을 넣어 돌려주면

총 5개의 정상작동하는 이벤트 속성들이 나온다.

그중 onresize 이벤트 속성을 사용하면

 

창 크기가 변경될 때 작동되는 걸 확인할 수 있다.

 

이를 이용하여 피해자에게 iframe을 이용한 코드를 보내면 onload 이벤트 속성으로 페이지가 로드될 때 창 크기가 변경되고 그로 인해 onresize 이벤트 속성이 실행되어 print() 함수가 호출된다.

728x90