[Web_Hacking] Reflected XSS -4

Song·2024년 8월 31일

XSS

목록 보기
5/12

Lab: Reflected XSS into HTML context with most tags and attributes blocked

문제

LAB을 해결하기 위해서는 Reflected XSS 취약점이 존재하는 검색 기능을 찾아 print() 함수를 호출해야 한다. 단, 현재 애플리케이션에는 일반적인 XSS 공격을 차단하는 firewall(WAF)이 작동중이다.


정보 탐색

웹 사이트 검색창에 스크립트를 입력하면

허용되지 않는다는 구문이 출력됩니다.

그러나 <body>를 입력하면

정상적으로 출력됩니다.

이것은 곧 <body> 태그가 WAF를 통과했다는 의미로 볼 수 있습니다.

유추해보면, 현재 WAF는 블랙리스트 필터를 통해 XSS 공격을 차단하고 있다고 생각해 볼 수 있습니다.

이 점을 이용하면 허용되는 태그와 허용되는 속성 값을 사용해 print()함수 호출이 가능할 수도 있습니다.

이를 위해 Burpsuite 프로그램을 사용해 Bruteforce attack을 시도해보겠습니다.


공격

1) 허용되는 태그 알아내기

Burpsuite를 켜고 Proxy 설정을 합니다. 아래 포스트를 참고하면 Proxy 설정을 할 수 있습니다.

Burpsuite Proxy 설정

Proxy 탭에서 Intercept on을 클릭하고 사이트의 Search 기능을 실행합니다.

그러면 이렇게 HTTP 요청을 잡아올 수 있는데

여기서 우클릭 > Send to Intruder를 클릭해 Intruder 탭으로 전송합니다.

우측에 존재하는 ADD§버튼을 클릭해 첫 번째 라인 search의 값으로 <§§>를 입력합니다. 이렇게되면 §§ 사이에 지정한 payload가 입력됩니다.

이후 Burpsuite에서 제공하는 XSS cheat sheet 사이트에 접속하여 Copy tags to clipboard 버튼을 클릭해 태그 리스트를 카피합니다.

카피 후 Intruder의 payloads 탭으로 이동 후 payload settings 란에 Paste 버튼을 눌러 태그 목록을 붙여넣기 합니다.

이제 우측 상단에 Start Attack 버튼을 클릭하면 Bruteforce 공격을 시작합니다.

공격 내용을 봤을 때 Status code가 200이거나 Length의 길이가 훨씬 긴 값이 성공한 값 입니다.

여기서는 body와 customtags가 성공했습니다.

2) 허용되는 속성 알아내기

이번에는 허용되는 속성을 알아내보도록 하겠습니다.

HTTP 요청에서 search의 값을 <body%20§§=1>로 변경하고

아까 XSS cheat sheet 사이트에서 Copy events to clipboard 버튼으로 속성 값들을 복사해 payload에 입력 후 Start Attack.

성공한 속성들이 많이 있는데 이 중 onresize를 사용하겠습니다. onresize는 HTML 요소의 크기가 변경될 때 발생하는 이벤트입니다. 주로 창 크기를 변경할 때 실행됩니다.

3) 타겟에게 생성된 URL 전송

웹 사이트 메인 화면에 Go to exploit server를 클릭.

그러면 특정 서버로 HTTP 요청을 전송할 수 있는 페이지가 열립니다.

밑에 있는 Body 입력 란에

<iframe src="https://자신의_LAB-ID값.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=print()%3E" onload=this.style.width='100px'>

을 입력하고 아래에 있는 Store로 저장 후 Delever exploit to victim을 눌러 공격 전송.

페이지 상단에 있는 URL로 이동해보면

자동으로 Print() 함수가 실행되어 print를 하기 위한 창이 열립니다.

해결 완료.

profile
안녕하세요

0개의 댓글