XSS (3)

밍기적·2023년 1월 1일
0

웹해킹

목록 보기
24/35

XSS 취약점 중에 Reflected XSS를 실습했습니다

기본적인 자바스크립트 코드를 이용했습니다

하지만 이런 XSS 취약점들은 어느 웹사이트에서나 존재할 수 있으며 해당 웹사이트 마다 주입하는 코드가 다를 수 있습니다

Mutillidae에서 실습


자바스크립트 인젝션 탭으로 이동하여 비밀번호 생성기를 이용하여 실습했습니다

해당 페이지는 Generate 버튼 클릭시 무작위의 비밀번호를 생성해줍니다

웹 페이지에서 보이는 anonymous는 URL에 존재하는 username 파라미터의 변수로서 사용됩니다

이를 통해 username 파라미터를 사용하여 먼저 이름을 변경해봤습니다

파라미터를 test로 변경 시 웹페이지에 그대로 적용되는 것을 확인했습니다

이제 XSS 취약점을 찾기위해 기본적인 스크립트를 넣어 시도해봤습니다

<script>alert("XSS")</script>

경고 창이 나타나지 않으며 오류가 발생했다고 나타납니다

브라우저의 Inspect기능을 이용하여 해당 오류 부분의 소스코드를 확인했습니다

사용자가 입력한 파라미터의 값 이전에 스크립트 태그로 감싸져 있습니다

  • 그러므로 우리가 입력한 스크립트 기능이 실행되지 않습니다

또한 입력값이 따옴표로 묶여있습니다

  • 먼저 따옴표를 사용하여 앞의 문장을 닫았습니다
  • 그리고 스크립트 태그는 이미 사용되고 있으므로 사용하지 않았습니다
"; alert('XSS')

다시 시도 후 소스코드를 확인했습니다

따옴표는 정확히 잘 닫혀있으며 기본적으로 웹페이지에 하드코딩된 따옴표가 뒤에 발생합니다

  • 자바스크립트에서 한 줄을 끝내기 위해서는 세미콜론을 사용함
  • 또한 스크립트를 실행시키기 위해 주석처리를 합니다(//을 사용)

최종 XSS 스크립트 코드는 아래와 같습니다

"; alert('XSS'); //

정리


모든 취약점은 웹 사이트마다 다를 수 있습니다

그러므로 소스코드를 확인하며 웹 사이트 간에 데이터 전송 방식(GET, POST) 또는 익스플로잇을 하기 위해 해당 특정 웹페이지에 맞도록 조정해야 합니다

0개의 댓글