728x90
728x90
728x90
 

itsecgames.com

 

www.itsecgames.com

[사진 1]

Go back 버튼을 클릭하면 이전 웹페이지로 이동하게 해주는 웹페이지이다.

 

[사진 2]

버튼을 클릭하면 위와 같이 이전 웹페이지로 이동된다.

 

low

[사진 3]

low 레벨이다. 먼저 Go Back 버튼의 소스코드를 보면 이전 웹페이지로 리다이렉션하는 것을 알 수 있다.

 

[사진 4]

위와 같이 xss_post.php 웹페이지에서 본 문제 웹페이지인 xss_back_button.php로 이동하였다.

 

[사진 5]

xss_post.php에서 xss_back_button.php로 이동할 때 프록시를 설정하여 요청 패킷을 보면 위와 같이 body에 파라미터 값으로 bug=53이 있다. 이는 xss_back_button,.php를 요청하는 순서 값으로 보인다.

 

[사진 6]

Forward를 클릭하면 위와 같이 302 Found가 발생하는데, 이는 원래 xss_post.php에서 보내야할 파라미터 아니기 때문이다. [사진 5] 참고. 

 

[사진 7]
[사진 8]
[사진 9]

위와 같이 xss_post.php 웹페이지에서 First name, Last name을 입력하고 프록시를 잡아서 보면 body 부분에 firstname, lastname 값이 파라미터로 전달됨을 알 수 있다. 또한, [사진 9]처럼 정상적으로 웹페이직 동작한 것을 확인할 수 있다. [사진 5]에서는 bug 파라미터가 전달되기 때문에 302 Found가 발생하고 xss_back_button.php로 리다이렉트된다.

 

[사진 10]

[사진 6]에서 Forward를 클릭하면 위와 같이 xss_back_button.php 웹페이지를 요청하면서 Referer 값이 전달되는데, xss_post.php 웹페이지에서 이동하였기 때문에 "http:192.168.91.135/bWAPP/xss_post.php" 문구가 들어가 있는 것을 확인할 수 있다. 이 값이 [사진 3]에서 확인한 소스코드에 들어가는 것이다. 따라서 script 태그를 입력하여 쿠키 값을 확인하면 되겠다.

'"><script>document.write(document.cookie)</script>

 

[사진 11]

위와 같이 xss_back_button.php 웹페이지가 출력되면서 쿠키값도 출력된 것을 확인할 수 있다.

 

medium

[사진 12]

medium 레벨에서도 같은 방법으로 XSS 공격이 먹힌다.

 

[사진 13]

웹페이지 소스코드를 보면 single quote, double quote 앞에 backslash가 붙었지만 정샂억인 소스코드로 인식되어 잘 작동되었다. 그리고 script 태그도 잘 박혔다. 서버에서 single quote, double quote에 대해 필터링을 거치는 것 같다.

 

high

[사진 14]

high 레벨에서는 low, medium 레벨에서 통한 XSS 공격이 먹히지 않는다.

 

[사진 15]

서버 코드를 보면 HTTP_REFERER 값을 반환하고 있다.

 

[사진 16]
[사진 17]

medium 레벨일 때는 addslashes() 함수로 필터링을 하는데 single quote, double quote만 필터링되어 XSS 공격이 먹혔다. high 레벨의 경우 htmlspecialchars() 함수로 필터링하는데 single quote, double quote, 꺽쇄를 모두 HTML 엔티티로 변환하게 되어 XSS 공격이 통하지 않게 된다.

 

* PHP addslashes() Function

 

PHP: addslashes - Manual

spamdunk at home dot com, your way is dangerous on PostgreSQL (and presumably MySQL). You're quite correct that ANSI SQL specifies using ' to escape, but those databases also support \ for escaping (in violation of the standard, I think). Which means that

www.php.net

* PHP htmlspecialchars() Function

 

PHP: htmlspecialchars - Manual

if your goal is just to protect your page from Cross Site Scripting (XSS) attack, or just to show HTML tags on a web page (showing on the page, for example), then using htmlspecialchars() is good enough and better than using htmlentities().  A minor point

www.php.net

728x90
728x90

+ Recent posts