반영된 XSS(JS 변수)

Feb 23 2023
안녕 친구들, 오늘은 Saka Reflected XSS(JS Variable)라는 프로젝트에서 웹 애플리케이션 보안 테스트에서 발견한 취약점을 탐지하고 이 취약점을 악용하는 단계를 보여 드리겠습니다. XSS란 무엇입니까 아래 문서에서 XSS 취약점에 대한 자세한 정보를 찾을 수 있습니다.

안녕 친구들, 오늘은 Saka Reflected XSS(JS Variable)라는 프로젝트에서 웹 애플리케이션 보안 테스트에서 발견한 취약점을 탐지하고 이 취약점을 악용하는 단계를 보여 드리겠습니다.

XSS란?

아래 문서에서 XSS 취약점에 대한 자세한 정보를 찾을 수 있습니다.

애플리케이션 실행

도커

docker pull erdemstar/saka:reflected-xss-js-variable
docker run -d -p 80:80 erdemstar/saka:reflected-xss-js-variable

git clone https://github.com/ErdemStar/Saka
cd reflected-xss-js-variable
- mouse click on reflected-xss-input.sln
- devenv reflected-xss-input.sln (CMD)

응용 프로그램을 처음 열면 아래와 같은 페이지가 우리를 환영합니다. 페이지에서 공격 버튼을 누르면 테스트할 부분으로 이동합니다.

공격 페이지에 도달하면 사용자로부터 이름 정보를 가져오는 페이지에 직면하게 됩니다. 이 필드에 이름을 적어 보내면 다음과 같은 결과가 나옵니다.

공격 페이지 요청
공격 페이지 응답

애플리케이션을 자세히 살펴보려면 브라우저를 통해 들어오고 나가는 요청을 보는 것이 유용할 것입니다.

비즈니스 로직에 대한 첫 번째 요청

정신 메모

  • 사용자로부터 받은 값은 name 매개변수에 보관되어 GET HTTP Verb를 사용하여 전송됩니다.
  • 애플리케이션은 위에 공유된 그림의 72–73–74 행을 사용하여 사용자로부터 받은 값을 표시합니다. 애플리케이션은 JS 필드에서 사용자에게 데이터를 표시합니다.

애플리케이션에 대한 충분한 정보를 얻은 후 XSS 취약점을 악용하기 위해 보낼 이름 값에 브라우저에서 해석할 일부 문자를 추가합니다.

기본 페이로드로 요청

수신된 회신의 내용을 확인할 때 해당 애플리케이션은 보안 확인 없이 당사로부터 받은 이름 값을 반영한 것으로 파악됩니다.

여기서 사용자로부터 받은 데이터를 스크립트 태그에 추가하면 2가지 방법으로 악용할 수 있다.

1-방법(HTML 주입)

Response에 반환된 73개의 행을 검사할 때 애플리케이션은 HTML에서 직접 사용자로부터 받은 데이터를 추가하고 표시하는 대신 Javascript inner.html 기능을 간접적으로 사용합니다. 여기서 아래와 같은 요청이 발생하면 XSS 공격을 수행할 수 있습니다.

공격 요청 및 대응
결과

2-방법(JS 우회)

73개 라인을 검토한 후 아래와 유사한 페이로드 형식의 요청을 보낼 수 있으며 스크립트 태그 내에서 다른 Javascript 명령을 실행할 수 있습니다.

<context>";//<payload>

요청 1

이 단계에서 다음과 같은 간단한 요청을 통해 JS 명령을 직접 실행 가능하게 만들었습니다.

요청 2
응답

제 글을 읽어주셔서 감사합니다. 도움이 되었기를 바랍니다. 아래에 귀하에게 유용할 수 있는 다른 개념의 링크를 남겨 둡니다.

웹 취약점에 대한 다른 기사를 보려면 여기를 클릭하십시오. 링크