웹해킹_4주차 정리

2022. 7. 31. 21:5422-여름방학/웹 해킹(WEB HACKING)&웹 기초

Cross-site scripting – Reflected (GET)

난이도 : low

Quest. xss 취약점이 있는지 알아봅시다. 다음 화면을 띄워보세요.

경고창을 누른 후 화면 (Welcome success 출력)

Hint1. 스크립트 태그 안에 alert함수를 넣어 경고창을 띄울 수 있습니다.

Hint2. First name과 Last name에 각각 공격을 하면 어떤 결과가 나오는지 알아봅시다.


Cross Site Scripting-Reflected(GET)를 클릭한다.그 다음 나오는 화면에서first name에 <script>alert("XSS");</script>을 입력하고 last name에 success를 입력한다.

그러면 위의 사진처럼 새로운 창이 뜨는데 OK 버튼을 누르면 아래와 같이 Welcome success라는 글자가 뜨게 된다.


난이도 : medium

Hint1. xss 공격을 막는 함수가 있는 것 같습니다. 소스코드를 살펴봅시다.

Hint2. xss_check_4가 어떤 함수인지 알아봅시다.

Hint3. 함수 정보는 functions_external에 저장되어 있습니다.

Hint4. addslashes함수가 어떤 문자를 필터링하는지 알아봅시다.


페이지의 소스코드를 확인한다.

/var/www/bWAPP 디렉토리로 이동해서 xss_get.php파일을 연다.

medium 레벨에서 xss_check_4 함수가 작동하는 것을 학인할 수 있다.

터미널에서 functions_external.php파일을 열어본다.

파일을 열어보면 xss_check_4 함수 내용을 확인할 수 있다.

이 함수 안을 보면 addslashes함수를 return값으로 출력하는 것을 확인할 수 있다.

그런데 주석에 적힌 이 함수를 살펴보면 '와 "와 \와 NUL 문자 앞에 \를 붙여서 return값을 출력하는 것을 확인할 수 있다.

그렇기 때문에 코드가 실행이 되지 않았음을 알 수 있다.


난이도 : high

필터링을 우회해서 공격해보세요. 그러나 공격이 통하지 않습니다. 그 이유를 정리해주세요.

Hint1. xss_check_3 함수를 살펴봅시다.

Hint2. htmlspecialchars함수가 원인인 것 같습니다. 어떤 함수인지 알아봅시다.


위에서처럼 페이지 소스 코드를 열어서 확인해보면 xss_check_3 함수가 작동하는 것을 확인할 수 있다.

그래서 터미널에서 functions_external.php파일을 열어본다.

파일을 열어서 xss_check_3을 확인해보면 이 함수는 htmlspecialchars()함수를 return값으로 출력하는 것을 확인할 수 있다.

주석에 적힌 htmlspecialchars()함수를 살펴보면 입력받은 데이터를 htmlspecialchars를 통해 인코딩을 해주는 함수로, 특수문자를 UTF-8로 반환하기 때문에 공격이 통하지 않는다.


Cross-Site scripting – reflected(POST)

Quest. GET방식과 POST방식의 차이에 대해 간단히 정리해봅시다.

 

Quest. 다음 화면을 띄워보세요.

난이도 : low

경고창을 누른 후 화면 (Welcome success 출력)

Hint1. GET방식에서 썼던 공격을 잘 생각해보세요.


Cross Site Scripting-Reflected(POST)를 클릭한다.

그 다음 나오는 화면에서

first name에 <script>alert("XSS");</script>을 입력하고 last name에 success를 입력한다.

위에서 나오는 창에서 OK를 누르면 위와 같이 Welcome success라는 출력문이 나온다.


난이도 : medium

Quest. 다음과 같이 사용자의 쿠키 값을 경고창에 출력해보세요.

Hint1. 사용자의 쿠키 정보는 document.cookie에 저장되어 있습니다.

Hint2. alert함수에 사용자의 쿠키 정보를 알 수 있는 경로를 넣으면 될 것 같습니다.


first name에 <script>alert(document.cookie)</script>를 입력하고 last name에 success를 입력하면 아래와 같은 화면을 출력할 수 있다.



'22-여름방학 > 웹 해킹(WEB HACKING)&웹 기초' 카테고리의 다른 글

웹해킹_5주차 정리  (0) 2022.08.07
웹기초_5주차 정리  (0) 2022.08.06
웹기초_4주차 정리  (0) 2022.07.28
웹해킹_3주차 정리  (0) 2022.07.24
웹기초_3주차 정리  (0) 2022.07.24