웹해킹/DVWA

Reflected XSS 공격 (2)

만년필석사 2020. 1. 21. 14:37
반응형

1. Reflected XSS 공격 Medium 단계 실습

 

[그림 1-1] 공격 스크립트 삽입

Reflected XSS 공격을 시도 하기 위해 공격 스크립트를 삽입 요청을 보낸다.

 

[그림 1-2] 실행 결과

공격 스크립트 삽입 실행 결과 Low 레벨과는 다르게 XSS 공격 경고창이 나타나지 않는다는 것을 있다.

 

[그림 1-3] 소스 코드

Medium 레벨의 소스 코드를 보면 str_replace 함수로 <script> 문자열을 제거한다. 폼에 XSS 공격 스크립트를 삽입하고 요청을 보낼 <script> 문자열을 제거한 응답값이 오는 것이다. str_replace 함수는 대소문자를 구분하는 반면 HTML 대소문자를 구분하지 않는다.

 

[그림 1-4] 공격 스크립트 삽입

HTML 대소문자를 구분하지 않는다는 취약점을 이용해 <SCRIPT>alert(1)</SCRIPT> 공격 스크립트를 입력한 요청을 보낸다.

 

[그림 1-5] 공격 성공

<SCRIPT>alert(1)</SCRIPT> 공격 스크립트를 입력한 요청을 보낸 결과 우회되서 공격이 성공했다는 있다. XSS 공격을 방어하기 위해선 HTML 대소문자 구분 함수 구현도 필요하다.

 

2. Reflected XSS 공격 High 단계 실습

 

[그림 2-1] 공격 스크립트 삽입

Reflected XSS 공격을 시도 하기 위해 공격 스크립트를 삽입 요청을 보낸다.

 

[그림 2-2] 실행 결과

공격 스크립트 삽입 실행 결과 XSS 공격 경고창이 나타나지 않는다는 것을 있다. 결과 값만 봐도 문자열이 필터링 되었음을 있다.

 

[그림 2-3] 소스 코드

PHP의 preg_replace 함수를 이용해 <*s*c*r*i*p*t 규칙에 해당하는 문자열을 대소문자 구분하지 않고 제거한다. "<script", "<SCRIPT", "<SC\RIPT", "</script", "</SCRIPT", "</SC/**/RIPT" 등의 문자열을 제거하기 때문에 <script>를 이용해 자바스크립트를 삽입할 수 있는 방법은 없다.

 

[그림 2-4] 공격 스크립트 삽입

<script> 문자열을 없어 <img src=x onerror=alert(document.cookie)>라는 다른 XSS 공격 스크립트를 삽입한다. <img XSS 공격 스크립트 구문으로 많이 쓰이는 문자열 하나다.

 

[그림 2-5] 공격 성공

<img src=x onerror=alert(document.cookie)> XSS 공격 스크립트 요청 결과 우회되서 공격이 성공했음을 있다. <script> 뿐만 아니라 다른 문자열도 필터링 해줄 있는 시큐어코딩이 필요하다.

반응형