[bWAPP] XSS - reflected (GET)
웹해킹 8주차
Cross-site scripting – Reflected (GET)
난이도 : low
Quest. xss 취약점이 있는지 알아봅시다. 다음 화면을 띄워보세요.
경고창을 누른 후 화면 (Welcome success 출력)
Hint1. 스크립트 태그 안에 alert함수를 넣어 경고창을 띄울 수 있습니다.
Hint2. First name과 Last name에 각각 공격을 하면 어떤 결과가 나오는지 알아봅시다.
난이도 : medium
Hint1. xss 공격을 막는 함수가 있는 것 같습니다. 소스코드를 살펴봅시다.
Hint2. xss_check_4가 어떤 함수인지 알아봅시다.
Hint3. 함수 정보는 functions_external에 저장되어 있습니다.
Hint4. addslashes함수가 어떤 문자를 필터링하는지 알아봅시다.
난이도 : high
필터링을 우회해서 공격해보세요. 그러나 공격이 통하지 않습니다. 그 이유를 정리해주세요.
Hint1. xss_check_3 함수를 살펴봅시다.
Hint2. htmlspecialchars함수가 원인인 것 같습니다. 어떤 함수인지 알아봅시다.
_ 난이도 low
먼저 창에 html 태그(h1)를 그대로 넣어 본 결과이다. 태그가 걸러지지 않고 그대로 출력된다.
경고창을 띄우기 위해 아래와 같이 자바스크립트 태그를 넣었다.
<script>alert("XSS");</script>
success
경고창이 뜨고, 확인을 누르면 문구가 뜬다. 공격 성공이다.
_ 난이도 medium
테스트 목적으로 위와 같이 입력했다. 하나는 자바스크립트, 하나는 일반 html 태그이다.
자바스크립트 태그로 된 alert는 실행되지 않고 html 태그만 실행된다.
/var/www/bWAPP 경로를 열어 코드를 확인했다.
보안에 관한 함수는 medium level의 경우 xss_check_4를 사용하고 있는 듯하다.
fucntion_external.php에서 관련 내용을 찾아보았다.
> cat fucntion_external.php | grep -n "xss_check_4" -> line 129행에 해당 내용 확인
> cat fucntion_external.php | less -n+129
보안을 위해 addslashes라는 함수를 사용하고 있다.
읽어보니 이 함수는 ', ", \, 널 문자 앞에 백슬래시(\)를 붙여 이스케이프화하는 함수라고 한다.
그렇기 때문에 따옴표 기호가 들어가는 위의 자바스크립트 코드는 실행되지 않은 것 같다.
_ 난이도 high
high의 경우 xss_check_3을 보안 함수로 사용한다고 되어 있는데,
이 부분은 앞선 주차에서도 많이 언급되어 왔다.
htmlspecialchars 함수다. 특수문자를 &, " 등의 스트링 기호로 바꾸어버려 무력화시킨다.
현재 상황에서는 이 함수를 파훼할 방법이 없으므로 high 난이도는 풀 수 없다.