gena ryzhov
30.11.2017, 03:15
Всем добрый день!
Суть статьи: С помощью картинки на вашем сайте(сервере), добавленной на сторонний ресурс, можно посылать GET запросы на любые сайты от имени пользователя с его Куками и правами на сайте не заметно для самого пользователя.
Предистория
Вчера (30.11.17) я разместил на одном сайте картинку со своего сайта, а потом подумал, хм... а почему бы мне не поменять текст в картинке в зависимости от времени суток.
Не долго думая, я переделал картинку в динамически генерируемую картинку на PHP и успешно подменял надпись на нужную мне. Плюс ко всему, я получил еще несколько полезных данных о пользователе, его IP и реферер страницы с которой картинка была запрошена.
Потом я вспомнил про статью , которую когда-то читалXss без Xss (https://antichat.live/threads/xss-bez-xss.7169/). В ней рассказывалась старая уязвимость запроса браузером произвольной страницы от имени пользователя через картинку с контролируемого сайта, которая добавляется на страницу сайта который позволяет добавлять картинки с удаленных ресурсов или в BBCode . Соответственно тогда были уязвимы все форумы, гостевые и прочие сайты, очень советую ту статью к прочтению.
Судя по статусу статьи (Тема закрыта для ответов) и по комментариям:
Какинтош:08/09/2008 - эта дыра еще актуальна?
Thanat0z:08/09/2008 - На форуме запрещена некрофилия...
Я подумал что уязвимость закрыта, соответственно когда читал первый раз не стал проверять
эту уязвимость, но....
Эксперимент
Я попробовал сделать редирект в своей картинке и уязвимость сработала! Браузер успешно запросил страницу абсолютно другого домена и получил ее контент! Протестировал тоже самое через HTTPS, все так же работает. Я начал разбираться как так произошло, ведь вроде уязвимость была закрыта как я понял из того поста и, посмотрев отладчик браузера я сначала понял что виною подгрузка контента страницы в javascript Ajax запросе, позже попробовал сделать статичную страницу и проверить пройдет ли! Прошло, меня снова выкинуло из админки моего сайта. Т.е получается что редирект успешно срабатывает при любых обстоятельствах.
https://pp.userapi.com/c840128/v840128570/4ae3c/inYX3oKpKIM.jpg
КАРТИНКА - https://pp.userapi.com/c840128/v840128570/4ae3c/inYX3oKpKIM.jpg
Так я и не понял, изобрел ли я колесо, описанное много лет назад втой (https://antichat.live/threads/xss-bez-xss.7169/)статье и это баянище, либо уязвимость снова открылась, если ее все же закрывали.
Моя ошибка: надо всегда проверять все найденные баги самому, пускай даже закрытые. Ведь все меняется, старое, забытое, закрытое иногда может снова заработать из-за каких то нововведений...
Подитог
Благодаря данной уязвимости можно посылать GET запросы на любые сайты от имени пользователя с его Куками и правами на сайте. Области применения такой уязвимоти очень широкий, начиная от простого баловства с убиваем сессий у пользователя на чужих сайтах, до ддос атак на сайты, более подробно описано в старой статье.
Конечно античат знал, об этом и ввел токен на подтверждения дейcтвия, без передачи которого не получится выполнить выход из профиля, иначе вы бы смогли сейчас ощутить действие данной уязвимости на себе))
Что касается того сайта для которого я изначально делал динамическую картинку, то на нем я нашел несколько таких GET уязвимостей:
Разлогинивание на сайте http://site.ru/logout/
Накрутка рейтинга моего аккаунта http://site.ru/account/set_rate/?rate=5
Автоматический постинг отзыва от имени того пользователя, который открыл страницу с картинкой http://site.ru/account/?add_review=1&text=Отличный разраб!
Скрипты для создания такой картинки на вашем хостинге:
1. Необходимо перенаправить все запрашиваемые картинки в директории сайта на какой нибудь файл, у меня к коде это будет файл image.php. Для этого надо создать файл в директории .htaccess с таким содержимым, если у вас сервер работает под апачем, для nginx по другому настраивается:
DirectoryIndex index.php
Options -Indexes
# Comment the following line, if option Multiviews not allowed here
Options -MultiViews
Header set Access-Control-Allow-Origin *
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(js|css|jpg|jpeg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ image.php [L,QSA]
Файл может отличаться, главное для подмены картинок находится внутри ......
2.Необходимо в той же папке создать файл image.php, который будет вместо картинки отдавать редирект, примерно с таким кодом:
3. Эти файлы поместить в отдельную директорию на сайте? в примере у меня будет/imagex/.
Все готово, дальше можно делать ссылки на картинку в виде любого названия файла.
Примеры адресов картинок:
http://site.ru/imagex/test.gif
http://site.ru/imagex/counter.jpg
http://site.ru/imagex/avatar_forum.png
и т.д.... Суть в том, что название картинки никак не влияет на результат, все равно будет запрошен наш скрипт, который сделает редирект!
Всем спасибо за прочтение!
P.S Не судите строго...
Суть статьи: С помощью картинки на вашем сайте(сервере), добавленной на сторонний ресурс, можно посылать GET запросы на любые сайты от имени пользователя с его Куками и правами на сайте не заметно для самого пользователя.
Предистория
Вчера (30.11.17) я разместил на одном сайте картинку со своего сайта, а потом подумал, хм... а почему бы мне не поменять текст в картинке в зависимости от времени суток.
Не долго думая, я переделал картинку в динамически генерируемую картинку на PHP и успешно подменял надпись на нужную мне. Плюс ко всему, я получил еще несколько полезных данных о пользователе, его IP и реферер страницы с которой картинка была запрошена.
Потом я вспомнил про статью , которую когда-то читалXss без Xss (https://antichat.live/threads/xss-bez-xss.7169/). В ней рассказывалась старая уязвимость запроса браузером произвольной страницы от имени пользователя через картинку с контролируемого сайта, которая добавляется на страницу сайта который позволяет добавлять картинки с удаленных ресурсов или в BBCode . Соответственно тогда были уязвимы все форумы, гостевые и прочие сайты, очень советую ту статью к прочтению.
Судя по статусу статьи (Тема закрыта для ответов) и по комментариям:
Какинтош:08/09/2008 - эта дыра еще актуальна?
Thanat0z:08/09/2008 - На форуме запрещена некрофилия...
Я подумал что уязвимость закрыта, соответственно когда читал первый раз не стал проверять
эту уязвимость, но....
Эксперимент
Я попробовал сделать редирект в своей картинке и уязвимость сработала! Браузер успешно запросил страницу абсолютно другого домена и получил ее контент! Протестировал тоже самое через HTTPS, все так же работает. Я начал разбираться как так произошло, ведь вроде уязвимость была закрыта как я понял из того поста и, посмотрев отладчик браузера я сначала понял что виною подгрузка контента страницы в javascript Ajax запросе, позже попробовал сделать статичную страницу и проверить пройдет ли! Прошло, меня снова выкинуло из админки моего сайта. Т.е получается что редирект успешно срабатывает при любых обстоятельствах.
https://pp.userapi.com/c840128/v840128570/4ae3c/inYX3oKpKIM.jpg
КАРТИНКА - https://pp.userapi.com/c840128/v840128570/4ae3c/inYX3oKpKIM.jpg
Так я и не понял, изобрел ли я колесо, описанное много лет назад втой (https://antichat.live/threads/xss-bez-xss.7169/)статье и это баянище, либо уязвимость снова открылась, если ее все же закрывали.
Моя ошибка: надо всегда проверять все найденные баги самому, пускай даже закрытые. Ведь все меняется, старое, забытое, закрытое иногда может снова заработать из-за каких то нововведений...
Подитог
Благодаря данной уязвимости можно посылать GET запросы на любые сайты от имени пользователя с его Куками и правами на сайте. Области применения такой уязвимоти очень широкий, начиная от простого баловства с убиваем сессий у пользователя на чужих сайтах, до ддос атак на сайты, более подробно описано в старой статье.
Конечно античат знал, об этом и ввел токен на подтверждения дейcтвия, без передачи которого не получится выполнить выход из профиля, иначе вы бы смогли сейчас ощутить действие данной уязвимости на себе))
Что касается того сайта для которого я изначально делал динамическую картинку, то на нем я нашел несколько таких GET уязвимостей:
Разлогинивание на сайте http://site.ru/logout/
Накрутка рейтинга моего аккаунта http://site.ru/account/set_rate/?rate=5
Автоматический постинг отзыва от имени того пользователя, который открыл страницу с картинкой http://site.ru/account/?add_review=1&text=Отличный разраб!
Скрипты для создания такой картинки на вашем хостинге:
1. Необходимо перенаправить все запрашиваемые картинки в директории сайта на какой нибудь файл, у меня к коде это будет файл image.php. Для этого надо создать файл в директории .htaccess с таким содержимым, если у вас сервер работает под апачем, для nginx по другому настраивается:
DirectoryIndex index.php
Options -Indexes
# Comment the following line, if option Multiviews not allowed here
Options -MultiViews
Header set Access-Control-Allow-Origin *
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_URI} \.(js|css|jpg|jpeg|gif|png)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ image.php [L,QSA]
Файл может отличаться, главное для подмены картинок находится внутри ......
2.Необходимо в той же папке создать файл image.php, который будет вместо картинки отдавать редирект, примерно с таким кодом:
3. Эти файлы поместить в отдельную директорию на сайте? в примере у меня будет/imagex/.
Все готово, дальше можно делать ссылки на картинку в виде любого названия файла.
Примеры адресов картинок:
http://site.ru/imagex/test.gif
http://site.ru/imagex/counter.jpg
http://site.ru/imagex/avatar_forum.png
и т.д.... Суть в том, что название картинки никак не влияет на результат, все равно будет запрошен наш скрипт, который сделает редирект!
Всем спасибо за прочтение!
P.S Не судите строго...