English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Еще о javascript инъекциях - обязательный элемент для хакера!

Что такое атака с инъекцией JavaScript?

1. Инъекция JavaScript - это ввод фрагмента js-кода в адресной строке браузера, чтобы изменить переменные js и содержимое тегов страницы.
Используя инъекцию Javascript, пользователю не нужно закрывать или сохранять страницу, чтобы изменить её содержимое, это делается в адресной строке браузера. Грамматика команды такая:
javascript:alert(#command#)  

Например, если вы хотитеhttp://www.example.comЕсли вы видите предупреждение alert на сайте, сначала введите URL в адресной строке и подождите, пока страница загрузится, затем удалите URL и введите:
javascript:alert("Hello World")  

Используя эту технику, можно изменить любое содержимое веб-страницы, например, изображение. Предположим, у вас есть логотип сайта, и мы находим фрагмент HTML-кода, используя исходный код страницы:
<IMG Name="hi" SRC="hello.gif">  

Изображение命名为 "hi", исходный файл "hello.gif", мы хотим изменить его на "bye.jpeg", хранящийся на нашем сайте (http://www.mysite.com), поэтому полная URL-адрес изображения http://www.mysite.com/bye.jpeg, используя инъекцию Javascript, нам нужно ввести в адресной строке:
javascript:alert(document.hi.src="http://www.mysite.com/bye.jpeg")  
 Вы увидите всплывающее предупреждение "http://www.mysite.com/bye.jpeg", после чего изображение изменится. необходимо помнить, что эти изменения временные! Если вы обновите страницу или зайдете снова, ваши изменения исчезнут, потому что вы сделали их только на вашем ПК, а не на веб-сервере.
Используя этот же метод, мы можем проверить или изменить значение переменной, например, на веб-странице мы находим такой код:

<SCRIPT LANGUAGE="JavaScript"> 
var a="test" 
</SCRIPT>  

Это означает, что значение переменной a равно "test", и мы вводим:
javascript:alert(a)  
 Затем мы изменяем его значение на "hello":
javascript:alert(a="hello")  
Инъекция Javascript обычно используется для изменения свойств формы, предположим, у нас есть такой код:

<form name="format" action="send.php" method="post"> 
<input type="hidden" name="mail" value="[email protected]"> 
<input type="text" name="name"> 
<input type="submit" value="submit"></form> 

 Если мы хотим, чтобы форма отправлялась на наш адрес электронной почты, а не на [email protected], можно использовать следующую команду:
javascript:alert(document.format.mail.value="[email protected]") 
Возможно, вы уже заметили иерархию этих команд:

Мы объясняем по порядку слева направо:
1) Слева находится document
3) Затем мы хотим изменить имя объекта (например, document.hi.src) или его содержимое (например, document.format.mail.value)
4) В конце мы хотим изменить атрибут (например, путь источника: document.hi.src или значение переменной: document.format.mail.value)
5) Используем точку "." для разделения
6) Когда мы хотим изменить значение атрибута, мы используем знак "=" и новое значение атрибута
*Комментарий: когда новый атрибут имеет значение строки (например: document.format.mail.value="[email protected]"), его нужно заключить в кавычки.
Если мы хотим использовать его как значение переменной, не нужно использовать двойные кавычки "". Например, если мы хотим присвоить значение переменной b переменной a, мы можем ввести javascript:alert(a=b).

Однако, большая часть тегов на странице не имеет имен, например:

<form action="send.php" method="post"> 
<input type="hidden" name="mail" value="[email protected]"> 
<input type="text" name="name"> 
<input type="submit" value="submit"></form> 

 В этом коде нет имени формы, учитывая вышеуказанную информацию, можно использовать эту команду:
javascript:alert(document..mail.value="[email protected]")  
 В этом случае我们必须 подсчитать и найти номер формы, вот пример:

<form action="send.php" method="post"> 
<input type="text" name="name"> 
<input type="submit" value="submit"> 
</form> 
<form action="send.php" method="post"> 
<input type="hidden" name="mail" value="[email protected]"> 
<input type="text" name="name"> 
<input type="submit" value="submit"> 
</form> 
<form action="send.php" method="post"> 
<input type="text" name="name"> 
<input type="submit" value="submit"> 
</form> 

  В вышеуказанном коде мы видим три формы, но мы интересуемся только второй, поэтому номер формы, который нам нужно, это 2. Не забывайте, что мы начинаем с 1, например, 1, 2, 3, 4... а JavaScript начинает с 0, например, 0, 1, 2, 3... Таким образом, настоящий номер формы это 1, а не 2, обычно мы вычитаем из найденного номера формы один, чтобы получить правильный номер. Мы будем использовать этот номер для завершения нашей команды:
javascript:alert(document.forms[1].mail.value="[email protected]")  
Таким образом, вы можете изменить изображения или ссылки без имени. Вы можете заменить "forms" на любое другое типовое имя тега. Для изображения это будет
javascript:alert(document.images[3].src="#the url of the picture you want#")  
 Для ссылок это будет
javascript:alert(document.links[0].href="#the url you want#")  
 В конце концов, мы можем использовать эту хитрость для редактирования куки. Написанные команды были написаны Dr_aMado с triviasecurity.net, я только немного их изменил, чтобы они отображались перед редактированием пользователем. Просто скопируйте их в адресную строку:

javascript:alert(window.c = function a(n, v, nv) { c = document.cookie; c = c.substring(c.indexOf(n) + n.length, c.length); } 
c = c.substring(1, ((c.indexOf(';') > -1) ? c.indexOf(';') : c.length)); nc = unescape(c).replace(v, nv); 
document.cookie=n+"="+escape(nc);return unescape(document.cookie);}); 
alert('Cookie: "'+document.cookie+'"');alert(c(prompt("Имя cookie:",""), 
prompt("Изменить это значение:",""),prompt("с этим:",""))) 

//Если вы хотите вручную изменить свои cookies, вы можете использовать следующую команду: 
javascript:alert(document.cookie)  
 Это покажет ваши текущие cookies, предположим, "userid=1", если вы хотите изменить его на "userid=2", вы можете использовать следующую команду:
javascript:alert(document.cookie="userid=2")  
 Последнее, что я должен подчеркнуть, это то, что все изменения происходят только на клиенте! Это как сохранять веб-страницу на вашем ПК и затем изменять ее. Однако, используя этот трюк, вы все равно можете обмануть страницу (например, cookies) или обойти безопасность проверки. Например, некоторые веб-страницы могут определять положение данных, отправляемых пользователем, если данные отправляются с http://www.test.com/form.php на http://www.test.com/check.php, check.php может определить, пришли ли данные с формы на http: //www.test.com/form.php. Кроме того, если вы хотите ввести свой JavaScript-код на странице, используя такие трюки, вы сможете изменить изображение и сохранить его неизменным!

Вот и все, что есть в этой статье, надеюсь, это поможет вам в изучении, и希望大家多多 поддерживать руководство по крику.

Основной учебник
Рекомендуем к просмотру