Сообщество вики
Добавьте любые ваши идеи, и имейте в виду, что это грубая проверка .
Советзаранее: Также запустите код через Компилятор Google Closure , чтобы легко избавиться от конструкций, таких как window['e'+'v'+'a'+l]('....')
, и escape-последовательностей символов, таких как \x65\x76\x61\x6c
.
.функциональные опасности.Например, типизированные массивы - это простой способ заполнить память мусором, вызывая нестабильность в операционной системе пользователя.Если объем сценариев позволяет это сделать, я рекомендую проверить сценарий в песочнице, например в виртуальной машине.
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
со строковым аргументом - замаскированный Eval 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
- Creatiи произвольные документы. 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
- шаблон для сопоставления закодированных символов. - HTОбъекты ML (вместе с атрибутами событий).
Поиск запутывания Вывод:
- Регулярное выражение для поиска строк больше X, например, 23
[^']{23,}
?