본문 바로가기

Write Up/DVWA

DVWA - XSS (Reflected)

XSS (Reflected) 

- 악성 스크립트가 URL에 삽입 되고 서버의 응답에 담겨오는 XSS

 

LOW

 

PHP 소스코드

array_key_exists → 배열 내에 키(또는 인덱스)가 있는지 확인하는 PHP 함수

소스 코드에는 name의 값을 GET방식으로 그대로 전달하기 때문에

텍스트를 입력하면 Hello 텍스트와 함께 url도 반응한다.

쿠키 값을 탈취할 수 있는 스크립트 구문(<script>alert(document.cookie)</script>)을 삽입하게 되면

위와 같이 경고창이 뜬다.


Medium

View Source)

소스코드를 보면 str_replace는 문자를 치환하는 함수로

str_replace( 1번째 인수 : 변경대상 문자 2번째 인수 : 변경하려는 문자 3번째 인수 : 변수, replace가 바꾸고자 하는 문자열(변수 수) )

즉, <script>를 치환하여 필터링 한다는 뜻으로 <script>를 사용할 수 없다.

그러나 str_replace의 취약점을 이용하면 풀 수 있다.

<scrip<script>t>alert(document.cookie)</script>구문을 삽입하면 된다.

이는 <scrip<script>t> 안에 있는 <script>가 필터링되면서 <script>가 되기 때문이다

대응 방안: str_replace함수 보다는 preg_replace() 함수를 사용한다.?


High

View Source)

소스 코드를 보면 preg_replace 함수는 지정된 패턴을 찾아서 다른 패턴으로 바꿔주는 함수이다.

< s c r i p t 는 사용할 수 없고 옵션 i로 인해 대소문자 또한 구별하지 않고 필터링 한다는 의미이다.

이는 script 태그가 아닌 img 태그를 사용하면 풀 수 있다.

<img src=x onerror=alert(document.cookie)>

 

대응 방안: preg_replace함수를 사용할 때는 검색할 패턴과 치환될 문자를 사용자로부터 입력을 받지 않으면된다.

'Write Up > DVWA' 카테고리의 다른 글

DVWA - Command Injection  (0) 2023.05.17
DVWA - CSP  (0) 2023.05.17
DVWA - CSRF  (0) 2023.05.17
DVWA - XSS(Stored)  (0) 2023.05.17
DVWA - XSS(DOM)  (0) 2023.05.17