[난이도-low]
Quest. 다음 화면과 같이 경고창을 띄워봅시다.
경고창을 띄우기 위해 script태그를 이용하여 success라는 문구를 띄울 수 있도록 <script>alert("success")</script>라고 작성해주었다.
<입력>
<script>alert("success")</script>
그랬더니 이와같이 경고창이 떴다.
Quest. 사용자의 쿠키 값을 경고창에 띄워봅시다.
Hint1. 사용자의 쿠키값은 document.cookie에 저장되어 있습니다.
지난주 실습처럼 script태그 내에 document.cookie를 입력해주었다.
<입력>
<script>alert(document.cookie)</script>
위와 같이 입력해 주었더니 아까 떴던 success 경고창이 먼저 뜬 후에 쿠키값이 경고창에 뜬 것을 확인할 수 있었다.
Quest. (게시판에 등록된 내용을 삭제하지 않았다면) XSS 공격을 시도할 때마다 경고창이 여러 개가 뜨는 것을 확인했습니다. 왜 그럴까요? 이유를 작성해주세요.
Hint1. Stored XSS 방식에 대해 잘 생각해봅시다.
Hint2. 소스코드를 확인해봅시다. 테이블에 어떻게 저장되어 있나요?
Reflected 방식 | Stored 방식 |
- URL, URL파라미터, Cookie 파라미터 등 사용자가 입력한 내용에 대해서 응답 페이지에 실행되는 취약점 | - 공격자가 게시판등과 같은 부분에 악의적으로 스크립트를 삽입하고 저장하여 다른 사용자가 해당 게시글을 보거나, 리스트 확인시 악의적으로 삽입한 스크립트가 실행되는 취약점 |
소스코드를 확인해보았더니 위에서 작성한 명령어들이 누적되어 저장되고 있었다. 그렇기 때문에 이전에 작성했던 경고창이 모두 나타나는 것이다.
[난이도-high]
Quest. 공격할 수 없습니다. 이유를 적어주세요.
Hint1. 특수 문자를 막는 함수가 있는 것 같습니다.
Hint2. xss_stored_1.php에서 확인할 수 있습니다.
난이도 high는 low단계와 달리 태그들이 적용되어 출력되는 것이 아닌 문자열 그대로 출력되어 나오는 것을 확인할 수 있었다.
이 페이지에 소스코드를 통해 security_level이 2라는 점과 xss_stored_1.php파일을 이용한다는 점을 알 수 있었다.
그래서 해당 파일의 내용을 확인해보기로 하였다.
먼저 security_level이 2이기 때문에 위 함수를 확인하여 문제점을 찾기로 하였다. 여기서는 sqli_check_3함수를 사용하였다. 하지만 이는 case 0, 1, 2 모두 사용되는 함수이기 때문에 이 함수로 인해 문제점이 나타나지는 않았을 것이라고 생각하였다.
그래서 다른 함수를 찾아보던 도중 아래와 같은 함수를 찾게되었다.
위 사진을 통해 security_level 2에서는 xss_check_3 함수를 이용하는 것을 확인할 수 있었다.
functions_external.php 파일에서 위 함수를 찾을 수 있었다.
이 함수에서는 htmlspecialchars가 사용되기 때문에 공격이 불가하다.
'Web Hacking > WEB Hacking 기초' 카테고리의 다른 글
[SISS] 웹 프로젝트 9주차 (0) | 2022.02.27 |
---|---|
[SISS] bwAPP 5주차 < Cross-site scripting – Stored (Change Secret) > (0) | 2022.02.25 |
[SISS] bwAPP 4주차 < Cross-site scripting – Reflected (POST) > (0) | 2022.02.17 |
[SISS] bwAPP 4주차 < Cross-site scripting – Reflected (GET) > (0) | 2022.02.16 |
[SISS] 웹 프로젝트 7주차 (0) | 2022.02.13 |