В процессе написания одной системы, натолкнулся на интересный момент - вставить баннер на сайте клиента без использования iframe.

Все бы было не так уж печально если бы JS не блокировал внешние соединения. предлагаю вам использовать вот такой простой хак для создания межсайтового скриптинга (XSS).

Гайд по серверу (для примера localhost1):

<?php
// http://localhost1/widget.php
// уведомляем о json данных
header('Content-type: application/json');
/* отправляем вызов callback'а клиенту
 * jsonpcall(jsp) - указываем callback из js скрипта
 * jsp - JSON данные для клиента
 * 'data' => '123' - станет переменной в ответе response.data
 */
echo 'jsonpcall('.json_encode(array('data'=>'312')).')';
// обрываем коннект
exit();
?>

Гайд по клиенту (для примера localhost2):

// http://localhost2/widget.js выданный клиенту
 
$.ajax({
  url: 'http://localhost1/widget.php', // URL до написанного сервера
  type: 'GET', // Работать по XSS можно только GET запросом
  dataType: 'json', // работаем с расширением JSONP
  jsonp: 'callback', // тип JSONP ответа
  jsonpCallback: 'jsonpcall', // имя callback функции
});
 
function jsonpcall(response) // ловим ответ
{
  var obj = document.getElementById('no-iframe-banner'); // <div class="no-iframe-banner"></div> выданный клиенту
  obj.innerHTML = response.data; // вставляем автоматом распарсеный json
}

Вот таким образом можно внедрять совершенно любой код на сайт клиента. Используйте обдуманно и с умом.

 

Подготовил: Олег Лунегов

06:54:00 05.07.2013

 

 

комментарии