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 |