Ответ 1
Сообщество wiki
Добавьте любые идеи, которые у вас есть, и имейте в виду, что это грубая проверка.
Совет заранее: Также запустите код через компилятор Google Closure, чтобы легко избавиться от конструкций вроде window['e'+'v'+'a'+l]('....')
и escape-последовательности символов, например \x65\x76\x61\x6c
.
Не только проверяйте функциональные опасности. Например, типизированные массивы - это простой способ заполнить память мусором, вызывая неустойчивость в пользовательской ОС. Если объем скриптов позволяет это, я рекомендую протестировать script в песочнице, например. в виртуальной машине.
window.pollute = new ArrayBuffer(2e9); // Reserves 2 GB of memory
while(1); // Infinite loops
Глобальные объекты (любая их перестановка):
-
window
-
document.defaultView
-
top
-
parent
-
frames
-
self
-
content
Другое:
- Конструктор
Function
иsetTimeout
/setInterval
со строковым аргументом - скрытая скрытая оболочка -
document.createElement
- возможно, вводит код или внешние ресурсы. -
cloneNode
/appendChild
/replaceChild
/insertBefore
- Опасно при объединении с динамическими элементами. -
document.scripts
- В принципе, любая манипуляция DOM! -
document.cookie
/localStorage
/globalStorage
-
XMLHttpRequest
-
document.forms
- HTTP-запросы -
document.anchors
/document.links
- ссылки на спуфинг? -
document.applets
/document.embeds
/document.plugins
-
document.load
- загружает документ (XML) -
document.execCommand
- Выполняет команду в текущем документе -
Image
/Audio
- HTTP-запросы -
open
(всплывающие окна) -
document.open
/document.write
/document.writeln
- Замена или ввод произвольных данных на текущей странице -
innerHTML
/outerHTML
- тот же, что и предыдущий (outerHTML
не существует в FF) - Много событий плюс
setAttribute
,addEventListener
и т.д. -
Worker
- загрузка веб-работников из внешних источников (!) -
location
/document.URL
- изменение местоположения страницы -
history
- Управление историей/местоположением (!) -
document.implementation
- создание произвольных документов. -
DOMParser
- создание произвольных документов. -
Object.defineProperty
/__defineGetter__
/__defineSetter__
и т.д. -
WebSocket
/MozWebSocket
-
console
или любое его свойство -
debugger
- действует как точка останова для целей отладки -
InstallTrigger
- объект, специфичный для Firefox для управления установками. -
File
/FileReader
/FormData
/MozBlobBuilder
-
Packages
/java
Обфускация
.. обнаружение может выполняться двумя способами (поиск функций или выход).
Поиск обфускации Функции:
-
unescape
/escape
-
encodeURIComponent
/decodeURIComponent
-
encodeURI
/decodeURI
-
btoa
/atob
-
/\\x[0-9a-f]{2}|\\u\d{4}/i
- шаблон для соответствия закодированным символам. - Объекты HTML (в сочетании с атрибутами событий).
Поиск обфускации Выход:
- Regex для поиска строк больше X, например, 23
[^']{23,}
?