(bWAPP)XSS - Reflected (Eval)
Level - Low
- data() 함수를 통한 사용자가 해당 페이지 접근시 실시간 시간을 알려준다.
- 해당 시나리오의 경우 data 함수와 eval() 함수를 사용한당.
- eval함수는 사용하기에 따라 매우 취약하게 작동할 수 있다.
/bWAPP/xss_eval.php?date=Date()
- Request 방식은 GET 으로 전송되며 date 변수에 담겨 날라가게 된다.
<script>
eval("document.write(<?php echo xss($_GET["date"])?>)");
</script>
- 제공되는 소스코드를 보게되면 eval 함수를 사용하여 date 파라미터로 받은 입력값을
- echo 명령어를 사용하여 document.write 즉 페이지 상에 출력시킨다.
- 즉 이 때 입력값을 조작하면 스크립트 실행이 가능하다.
/bWAPP/xss_eval.php?date=alert(1)
- 성공적으로 alert창이 실행된다.
Level - Medium & High
medium level의 경우 해당 시나리오에서는 eval 함수를 사용한 스크립트 실행이므로 htmlspecialchars() 함수에서 필터링 하는 어떠한 문자도 필터링되지 않는다.
<?php
if(isset($_GET["date"]))
{
if($_COOKIE["security_level"] == "2")
{
if($_GET["date"] != "Date()")
{
echo "<p><font color=\"red\">Invalid input detected!</font></p>";
}
else
{
?>
- 위 소스코드는 High level의 필터링 소스코드이다.
- 해당 level 에서는 화이트리스트 기반 방식으로 Date() 를 제외한 어떠한 입력값도 허용하지 않고 있다.
Leave a comment