XSS (2)

밍기적·2023년 1월 1일
0

웹해킹

목록 보기
23/35

XSS 취약점을 찾는 방법들

기본적으로 자바스크립트 코드를 페이지내에 주입하려고 시도하는 것입니다

또한 대상을 탐색하고 텍스트 상자 또는 URL 파라미터를 사용하고 있는 form에 주입하려고 시도한느 것입니다

대상 사이트의 URL이 http://target.com/page.php?something=something 라고 가정합니다

이 때 URL은 파라미터를 사용하고 있으므로 something 파라미터의 매개변수에 자바스크립트 코드를 주입 하려고 시도합니다

http://target.com/page.php?something=<script>alert("XSS")</script>

먼저 Reflected XSS입니다

특징으로

  • 지속적이지 않으며 서버단에 저장되지 않음
  • 오직 희생자가 특정한 URL에 접속할 시에 기능이 수행됨

실습을 위해 DVWA에 접속했습니다

XSS Reflected 탭으로 이동했습니다

이름을 입력하는 form을 확인하고 테스트를 위해 입력해봤습니다


사용자의 입력값을 그대로 보여주고 있다는 결과를 확인할 수 있습니다

  • 이러한 form을 발견한다면 이제 자바스크립트를 이용하여 XSS 취약점이 존재하는지 시도할 수 있습니다
  • 또한 해당 URL은 파라미터를 GET 방식으로 전송하고 있다는 것도 확인했습니다

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

라는 간단한 자바스크립트를 작성 후 주입했습니다

  • 결과적으로 alert라는 기능 때문에 웹 페이지에 XSS라는 경고 창이 발생했습니다

XSS 취약점을 발견했습니다


또한 URL을 이용하여 시도했습니다

dvwa/vulnerabilities/xss_r/?name=<script>alert("XSS")<%2Fscript>#

간단한 자바스크립트를 주입한 후 URL을 확인해보면 특수문자는 HTML 이스케이프 문자를 사용하고 있는 것을 확인할 수 있었습니다

URL 파라미터에서도 같은 작업을 진행했습니다

dvwa/vulnerabilities/xss_r/?name=<script>alert("XSS")</script>

위와 똑같이 경고창이 발생하는 것을 확인할 수 있었습니다

URL을 배포하고 희생자가 해당 URL을 클릭한다면 희생자의 컴퓨터에서 스크립트가 실행될 것입니다


DVWA 보안 수준 높이기

보안 수준이 Low 레벨에서 브라우저의 Inspect 기능을 사용했습니다

Hello라는 문자는 웹페이지에 생성되어 있으며 주입한 소스코드는 그 이후에 위치하여 실행되고 있었습니다

DVWA의 보안 수준을 중간단계로 이동하고 또한 실습을 진행했습니다

똑같은 페이로드를 사용하여 진행했습니다

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

자바 스크립트의 기능은 실행되지 않고 alert("XSS")라는 문자가 그대로 보여지는 것을 확인했습니다

마찬가지로 Inspect 기능을 활용하여 소스 코드를 확인했습니다

이전과 다르게 스크립트 태그가 필터링되어서 삭제된 후 문자만 보이도록 되어있다고 확인할 수 있었습니다

  • "스크립트를 제거하는 일종의 필터를 사용중이다"

SQL 인젝션 부분에서도 사용했던 것과 비슷하게 일부 문자를 대문자로 변경하면 이를 우회할 수도 있습니다

  • 필터링이 정확하게 해당되는 태그만 삭제한다면 대문자를 섞어서 실행시키면 우회할 수 있다

이제 변경한 페이로드를 사용하여 주입을 시도했습니다

<sCripT>alert(’xss’)</scRipt>

정상적으로 동작하고 있습니다

또한 이러한 XSS를 위한 치트 시트가 존재합니다

XSS 필터 우회 치트 시트

해당 치트 시트에는 XSS 우회하는 스크립트나 여러가지 스크립트가 존재합니다

그 중에 하나를 예시로 사용해봤습니다

<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>

이미지에 대한 잘못된 소스코드를 제공하여 오류가 있을 때 실행되는 onerror를 이용한 XSS 스크립트 방법입니다

이 또한 정상적으로 동작하는 것을 확인했습니다


0개의 댓글