Quest. xss 취약점이 있는지 알아봅시다. 다음 화면을 띄워보세요.
경고창을 누른 후 화면 (Welcome success 출력)
[난이도-low]
Hint1. 스크립트 태그 안에 alert함수를 넣어 경고창을 띄울 수 있습니다.
Hint2. First name과 Last name에 각각 공격을 하면 어떤 결과가 나오는지 알아봅시다
먼저 First name에 abc, Last name에 123을 넣어보았더니 Welcome abc 123이 출력되었다.
hint 1을 참고해 경고창을 띄우기 위해 스크립트 태그 안에 alert함수를 넣어보기로 하였다.
Welcome success를 출력시키기 위해 First name에는 스크립트 태그를 작성하고 Last name에는 success를 입력해 보았다.
< 입력 >
First name : <script>alert("XSS")</script>
Last name : success
이를 입력해주었더니 아래와 같은 결과가 나왔다.
[난이도-medium]
Hint1. xss 공격을 막는 함수가 있는 것 같습니다. 소스코드를 살펴봅시다.
Hint2. xss_check_4가 어떤 함수인지 알아봅시다.
Hint3. 함수 정보는 functions_external에 저장되어 있습니다.
Hint4. addslashes함수가 어떤 문자를 필터링하는지 알아봅시다.
low단계와 동일하게 입력해보았지만 경고창은 뜨지 않았다. hint1처럼 xss 공격을 막는 함수가 있는 것 같다.
페이지 소스코드를 살펴보았다.
코드를 보면 alert(\"XSS\")라고 바뀐 것을 확인할 수 있다.
이 문제는 medium 단계이므로 security level이 1에 해당한다. 그리고 xss_get.php 파일을 이용하는 것을 볼 수 있다.
/var/www/bWAPP 으로 이동해 xss_get.php파일을 열어주었다.
security_level이 1이므로 xss_check_4함수를 이용한다.
xss_check_4 함수를 찾아보기 위해 functions_external.php를 열어보았다.
addslashes 함수
: 매개변수로 넘겨준 문자열 안에 single quote(') 혹은 double quote("), 백슬래쉬(\), NULL 바이트가 포함되어 있다면 해당 문자 앞에 역슬래시(\)를 추가해 주는 함수
addslashes함수를 통해 alert 내 문자열에 역슬래시가 추가되었음을 알 수 있다.
이를 우회하기 위해 따옴표가 아닌 /로 문자열을 감싸주어 입력해 보았다.
<입력>
First name : <script>alert(/XSS/)</script>
Last name : success
그랬더니 위와 같은 결과가 나왔다.
[난이도-high]
필터링을 우회해서 공격해보세요. 그러나 공격이 통하지 않습니다. 그 이유를 정리해주세요.
Hint1. xss_check_3 함수를 살펴봅시다.
Hint2. htmlspecialchars함수가 원인인 것 같습니다. 어떤 함수인지 알아봅시다.
medium 페이지 소스코드에서 볼 수 있듯이 난이도 high는 security_level 2에 해당된다.
case 2를 보면 xss_check_3 함수를 사용한다.
이 함수에서는 htmlspecialchars함수를 이용한다. 이 함수는 data로 받은 문자열을 UTF-8로 반환하는데 ", ' 둘 다 변환되기 때문에 문제를 풀 수 없다.
'Web Hacking > WEB Hacking 기초' 카테고리의 다른 글
[SISS] bwAPP 5주차 < Cross-site scripting – Stored (Blog) > (0) | 2022.02.22 |
---|---|
[SISS] bwAPP 4주차 < Cross-site scripting – Reflected (POST) > (0) | 2022.02.17 |
[SISS] 웹 프로젝트 7주차 (0) | 2022.02.13 |
[SISS] bwAPP 3주차 < SQL injection - POST/search > (0) | 2022.02.09 |
[SISS] bwAPP 3주차 < SQL injection - GET/search > (0) | 2022.02.09 |