Инъекции - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

xss инъекция

Страница 1 из 1

Инъекции

#1 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 23 Декабрь 2014 - 10:10

В коде часто вижу такое

Цитата

$this->request['name']

Только это и все, без всяких экранирований символов и тп. Чисто - $this->request['name']. Как на счет инъекций, можно ли сделать? Какая там защита стоит, когда перебрасываем в $this->request
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 735
  • Регистрация: 20-Март 09
  • Репутация: 2 273
  • IPB version:3.1.x
 

Отправлено 23 Декабрь 2014 - 11:04

$this->request содержит данные в html сущности. Кроме того, при вставке и апдейте в бд, экранированния происходит в классе бд, если говорить о sql инъекциях. Sql инъекция возможна при неправильном форматирование параметров, например отсутствия кавычек у строк. Для xss, кавычки и хтмл скобки заменены на сущности.
0

#3 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 23 Декабрь 2014 - 11:06

В смысле html сущности? То есть от инъекций защиты нет?
0

#4 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 735
  • Регистрация: 20-Март 09
  • Репутация: 2 273
  • IPB version:3.1.x
 

Отправлено 23 Декабрь 2014 - 11:22

Вы знаете что инъекции как минимум могут быть трех типов - sql инъекция, xss и php инъекция? Это так, навскидку. Инъекцией называют любые неавторизованные вмешательства в логику работы кода. Говорить о защите от инъекции это тоже самое что говорить о таблетке от болезней. Для каждого типа предусмотренно своя защита, и если бы ее небыло, вредоносных внедрений было бы сплошь и рядом. Как пользователя могу вас успокоить, но как разработчика думаю вам стоит еще почитать литературы.
HTML сущности (мнемоники) http://ru.wikipedia....%B8_%D0%B2_HTML
0

#5 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 23 Декабрь 2014 - 12:55

Вы мне скажите, прежде чем загнать в $this->request. Как обрабатывается содержимое поста, гетта и тп... Только та и всего...
0

#6 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 23 Декабрь 2014 - 13:10

Что и куда Вы собрались загонять?

Просмотреть сообщениеTestweb сказал(а):

В коде часто вижу такое
Так возьмите и посмотрите, с чем его едят.
\admin\sources\base\ipsRegistry.php

	/**
	 * Input parameters
	 *
	 * @var		array
	 */
	static public $request	= array();

Далее по коду видно, как обрабатываются данные.
0

#7 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 23 Декабрь 2014 - 14:13

Странно, у меня так

	static public function request()
	{
		self::checkForInit();
		return ipsRegistry::$request;
	}



Вопрос актуален, дак я могу к едрени фени сделать иньекцию или нет?
Когда просто в запрос засуну, пересуну,высону , пересуну голую $this->request['name']

?????
0

#8 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 735
  • Регистрация: 20-Март 09
  • Репутация: 2 273
  • IPB version:3.1.x
 

Отправлено 23 Декабрь 2014 - 15:55

Просмотреть сообщениеTestweb сказал(а):

Вопрос актуален, дак я могу к едрени фени сделать иньекцию или нет?

Какую инъекцию? Вам же говорят - для sql (update, insert) предусмотрено экранирования на уровне класса бд. Для xss - html скобки '<', '>', слеши, атрибуты событий тегов заменены на сущности (htmlspecialchars, может так быть будет понятнее).

Просмотреть сообщениеTestweb сказал(а):

Когда просто в запрос засуну, пересуну,высону , пересуну голую $this->request['name']

Вся беда в том, что вы слышали что есть такое слово "инъекция", но не знаете как она работает, или имеете очень скудные представления. Вам бы следовала начать с основ, тогда многое станет понятно - сможете вы провести инъекцию или нет. Литературы на эту тему навалом в сети, начните с нее.
Роль играет не столько защита, а умение ею пользоваться. Какая бы хащита совершенной не была, она не спасет от говнокода и незнания основ фильтрации данных. Если в вкратце, то инъекция предполагает внедрения чужеродного фрагмента в код и изменения его логики работы, которая чаще всего происходит за счет "выхода" за пределами полей (атрибутов). Если говорить о sql запросах:

WHERE name='{$name}'

если в переменной $name окажется подобный текст:

' OR 1=1 -- 

то и в итоге запрос примет вид:

WHERE name='' OR 1=1 -- '

что нарушит первоначальную логику запроса.
$this->request содержит "очищенные данные" некоторые спецсимволы заменены на сущности, и провести таким образом инъекцию невозможно:

WHERE name='&#39; OR 1=1 -- '

Но это, например, не спасет при такой формы записи (значение не обрамлено в кавычках):

WHERE id={$this->request['myid']}

Также, данные автоматически экранируются при вставке или апдейте в бд $this->DB->update|insert('table', array data), так как массив data проходит принудительную mysql escape string.

В общем говоря, если вас это интересует с точки зрения обывателя, то беспокоится вам не следует. Но если вы собираетесь что-то писать или "всунуть", то все зависит от того как вы это всунете и куда, пример уязвимого кода вам показан выше.
Отвечая на вопросы - можно провести инъекцию? - да можно, инъекцию можно провести в любой системе при неправильной логики.
Можно ли провести sql инъекцию с $this->request? - можно, если руки кривые. Доказательство тому последняя найденная уязвимость.

Просмотреть сообщениеTestweb сказал(а):

Вы мне скажите, прежде чем загнать в $this->request. Как обрабатывается содержимое поста, гетта и тп... Только та и всего...

/admin/sources/base/core.php
static public function parseCleanValue( $val, $postParse=true )
0

#9 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 29 Декабрь 2014 - 08:21

Спасибо. То есть если нет кавычек, тогда можно сделать инъекцию.
По поводу ковычек

WHERE id="{$this->request['myid']}"

Так сделать инъекцию будет невозможно?


`date` = '2006-04-04'


Для чего имена полей заключают в обратные кавычки, обязательно ли это?

Что за последняя уязвимость можно ссылочку? И в кратце сказать, в чем эта уязвимость.
0

#10 Пользователь не на сайте   Testweb ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 298
  • Регистрация: 12-Ноябрь 14
  • Репутация: -3
  • IPB version:3.4.x
 

Отправлено 29 Декабрь 2014 - 08:27

Буду благодарен. Я вовсе запутался в функциях, которые применяют при постах и гетах.

Скажите, есть скажем $_POST['Post']. То есть приняли данные такими какие они есть.
Какие есть готовые функции в ipb, через которые стоит пропустить?
0

#11 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 735
  • Регистрация: 20-Март 09
  • Репутация: 2 273
  • IPB version:3.1.x
 

Отправлено 29 Декабрь 2014 - 14:31

Просмотреть сообщениеTestweb сказал(а):

То есть если нет кавычек, тогда можно сделать инъекцию.

Не совсем правильное заключение. Правильнее будет сказать - если данные не соответствует типу. В кавычках мы заключаем строку, естественно что без них такой запрос не пройдет. В не кавычках обычно указываются числовые форматы - id, timestamp и тд, и здесь нужно убедится в том, что они соответствует формату - либо принудительно приводить к данному типу например через intval если это целочисленное число, либо обрамлять данные в кавычках.

Просмотреть сообщениеTestweb сказал(а):

Для чего имена полей заключают в обратные кавычки, обязательно ли это?

Не обязательно, но если имена полей совпадают с зарезервированными именами в mysql то их нужно обрамлять в обратные кавычки. Об этом можно почитать в справочнике mysql.

Просмотреть сообщениеTestweb сказал(а):

Скажите, есть скажем $_POST['Post']. То есть приняли данные такими какие они есть.
Какие есть готовые функции в ipb, через которые стоит пропустить?

Для экранирования перед вставкой в бд - $this->DB->addSlashes
0

#12 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 735
  • Регистрация: 20-Март 09
  • Репутация: 2 273
  • IPB version:3.1.x
 

Отправлено 29 Декабрь 2014 - 16:29

Просмотреть сообщениеTestweb сказал(а):

Я вовсе запутался в функциях, которые применяют при постах и гетах.

Вы же сами хотели чтобы вам просто сказали "функцию". Вот вам функцию и указали. А "при постах и гетах" применяется всего-лишь одна функция, и ничего там сложного чтобы запутаться нету.
0

Сообщить об этой теме:


Страница 1 из 1


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна