JavaScript – популярный полный язык для разработки передней части передней части, несмотря на некоторые его подводные камни. Это будет краткое покрытие на некоторых вещах, чтобы осмотреть при программировании в JavaScript.
Показывать
Самая печально известный угроза в JS – функция Eval. Eval – это зло! Эта функция «оценивает» строку как код JS. До дни Json.parse
Функция, там была просто оценка. Просто представьте себе фейерверк, если у вас был сайт, где был пользовательский ввод, и вход был добавлен в строку JSON и отправляется на сервер, в котором он обрабатывался с Eval, и вы вводили вредоносные JSON на вашем входе. Это может быть более экстремальным случаем, что вы можете не увидеть в дикой природе, но, если дали вам не реализуйте правильные санитарные строки, входящие в EVAL, вы можете в конечном итоге с XSS или SQLI Vulns.
Unescape
Это, вероятно, пример довольно безвредной функции, которую я видел злоупотреблял в WebKit. Функция UneScape декодирует строку эвакументационных последовательностей к их соответствующим значениям символов. Я использовал WebKit Exploit, когда он полагался на использование технологии распыления кучи для запуска полезной нагрузки. Эта полезная нагрузка была написана в эсфазных последовательностях, а затем UneScape использовался для перевода его в байты кода, который будет работать с помощью WebKit. После этого это было вопрос на получение контроля над счетчиком программы (ПК). Или EIP, если вы находитесь в архитектуре X86. Также можно использовать UneScape для маскировки вредоносного кода в качестве последовательности Escape и запустить его через Eval для выполнения. я
будет таким же, как бег
alert('hax!');
Пегас
Этот не очень виноват js в качестве языка, но более webkit, но я нахожу это очень интересно. Пегас был довольно известным методом джейлбрейна для iOS. Он полагался на нарушение коррупции памяти WebKit. Короче говоря, мы смогли выполнить эксплуатацию без использования, чтобы поделиться своими собственными объектами JS, предоставляя нам в основном доступ в юности. Я использовал это с помощью переключателя Nintendo, чтобы управлять модулем WebKit и вызовите уязвимую функцию IPC, позволяющую выпустить другой процесс.
Заключение
Это было только в верхней части головы, но, как вы могли видеть, JS может быть реальной противной. Я старался не слишком много работать с тех пор, как это из этого поста. Это в основном, просто чтобы люди осознавали некоторые ловушки JS и, возможно, помогите людям подумать за пределами коробки во время программирования.