Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
создайте логин дайте ему строго ограниченные потребностями права, все остальное DENY
- не понимаю о чем речь
понятно что у логина этого сайта в SQL права строго ограничены и включают право на модицикацию этой таблички
отдельный логин на каждую процу что-ли? это только увеличит обьем кода и никак не предотвратит проишедшего события
24 фев 15, 15:10    [17305627]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
bg1
это простое asp.net, не MVC - никакого aspx на сервере не существует в природе
именно для этого я и запостил вызов процы через sqldatasource (которую в голову никому не придет применять в MVC, ибо там все делается на dbml)
на сервере существует только то, что вы видите на скрине выше


Ещё у вас IIS и там есть настройки безопасности
24 фев 15, 15:17    [17305672]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
bg1
создайте логин дайте ему строго ограниченные потребностями права, все остальное DENY
- не понимаю о чем речь
понятно что у логина этого сайта в SQL права строго ограничены и включают право на модицикацию этой таблички
отдельный логин на каждую процу что-ли? это только увеличит обьем кода и никак не предотвратит проишедшего события


на таблу не грантить пермишэны или дэнаить, на процу грантить
24 фев 15, 15:18    [17305679]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
http://www.101hacker.com/2012/01/hacking-aspaspx-websites-sql-injecton.html#ixzz3SfB87iuM - ну вот тут почитаю, это интересно.
Но фишка в том, что ублюдок не только создал SQL-инжекцию (конкретную команду в SQL я пытаюсь понять в этом топике), но и обошел ASP.NET-валидацию !!! Но это уже тема не SQL-форума. Ну то есть например как-то ж он записал на форме "<DIV" - напрмер в юникоде (но этого ж просто невозможно, валидация не пропустит этого). То есть тут цепочка уязвмостей, начиная от уязвимости валидатора ASP.NET. Но в данном топике я пытаюсь понять команду SQL, которой он это сделал. Причем, мне кажется, что он знал только имя поля. Сомневаюсь что он знал даже имя таблы. Ни в какой другой таблице он не порылся, ничего попортить не сумел.
24 фев 15, 15:18    [17305680]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
bg1,

Мне кажется он смог положить свой ASPX вам на сервер.
24 фев 15, 15:19    [17305692]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
на таблу не грантить пермишэны или дэнаить, на процу грантить 
и так на все 300 проц этого сайта?
24 фев 15, 15:20    [17305696]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
bg1
и так на все 300 проц этого сайта?

именно так
24 фев 15, 15:23    [17305723]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
Мне кажется он смог положить свой ASPX вам на сервер.
проверил только что - НЕТ.
24 фев 15, 15:24    [17305733]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
на таблу не грантить пермишэны или дэнаить, на процу грантить 
я не понимаю этого решения.
что это дает?
в поле comment он передал нечто вроде
'''''''''''''; update this_table set comment=comment + '<div ......' ; '''''''''''''''''''''''''''''''''

эта проца И ТАК преднаначена для модификации этой таблы
что изменит отдельный GRANT на эту процу? разрешить ей сделать то, для чего она предназначена И ТАК?

меня больше интересует что он написал вместо this_table - я полагаю имени таблы он не знал
ну и второй вопрос (уже не по теме этого форума) - как он прошиб стандартную валидацию, ну допустим если "<DIV" просто записать юникодом - это ловится, как и все известные ухищрения
24 фев 15, 15:31    [17305773]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
bg1
на таблу не грантить пермишэны или дэнаить, на процу грантить 
я не понимаю этого решения.
что это дает?
в поле comment он передал нечто вроде
'''''''''''''; update this_table set comment=comment + '<div ......' ; '''''''''''''''''''''''''''''''''

эта проца И ТАК преднаначена для модификации этой таблы
что изменит отдельный GRANT на эту процу? разрешить ей сделать то, для чего она предназначена И ТАК?

меня больше интересует что он написал вместо this_table - я полагаю имени таблы он не знал
ну и второй вопрос (уже не по теме этого форума) - как он прошиб стандартную валидацию, ну допустим если "<DIV" просто записать юникодом - это ловится, как и все известные ухищрения



Может он переполнил Comment огромным кол-вом кавычек ?
24 фев 15, 15:33    [17305789]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Просто запустите профайлер,сделайте тестовый прогон вашей формы и покажите результат из профайлера .
24 фев 15, 15:35    [17305809]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
сколь огромным? - ведь ему удалось вписать осмысленный текст
при этом ублюдок не знал ничего о нас - иначе он бы что-нибудь умнее сделал, чем просто добавить свои ссылки в сообщения об багах для программиста сайта
ну и это не просто какой-то помойный сайт (как вы видите по гигабайтным логам), а топовый рунетовский сайт, защищен он самой мощной моделью ZyWALL - то есть самое простое лоховство на переполнение буфера тут не пройдет
но как-то ж ему это удалось сделать !!! вот что удивительно...
но пока не поймем, как это удалось сделать ублюдку - вопрос не закрыт
24 фев 15, 15:40    [17305830]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ну так покажите код на ВБ который обрабатывает вызов етой хранимки...
24 фев 15, 15:43    [17305861]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
Просто запустите профайлер,сделайте тестовый прогон вашей формы и покажите результат из профайлера . 
о каком профайлере речь? просто асповский профайлер событий ASP.NET?
что там профилировать? исходный код формы - всего несколько строчек, они опубликованы вначале топика
на самой форме лежит одно поле и одна кнопка - отправить сообщение о баге в администрацию сайта

цель профилирования? что мы ищем в пяти строчках опубликованного кода бейсика и десяти строчках опуликованного ASPX-кода?
24 фев 15, 15:44    [17305867]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
bg1
сколь огромным? - ведь ему удалось вписать осмысленный текст

выж сами ппарметр сделаи varchar(max)....
24 фев 15, 15:45    [17305873]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
ну так покажите код на ВБ который обрабатывает вызов етой хранимки... 

я ж начал с этого топик, хорошо - еще раз

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        If User.Identity.IsAuthenticated Then
            AddNewHotel.SelectParameters("UserName").DefaultValue = User.Identity.Name
            AddNewHotel.Select(New DataSourceSelectArguments)
            MultiView1.ActiveViewIndex = 1
        Else
            'должно ловиться еще в лоаде
            Response.Redirect(Votpusk.[GoTo].WarningPage)
        End If
    End Sub
24 фев 15, 15:46    [17305884]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
выж сами ппарметр сделаи varchar(max).... 
Да, и что? эта форма расчитана на какое-то достаточно длинное сообщение об ошибке - мало ли что юзер хочет сказать проггеру, ну может баг какой-то длинный-длинный вывалится
даже если я поставлю длину например 1000 - что это изменит?
ублюдок явно уложился в меньшее количество символов в своей инжекции
24 фев 15, 15:50    [17305905]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
не мине интерессует на уровень ниже... как минимум, где формируеться сама команда перед отправкой на сервер
24 фев 15, 15:50    [17305906]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
тяжко с вами... обработчик события нажатия кнопки - мне не интереснет
Мне интересен код корторый формирует команду для екзека хранимки
24 фев 15, 15:51    [17305918]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
тяжко с вами... обработчик события нажатия кнопки - мне не интереснет
Мне интересен код корторый формирует команду для екзека хранимки
ето с вами тяжко, я вынужден уже В ТРЕТИЙ раз опубликовать один и тот же код БЕЙСИКА
еще раз повторяю - вызов хранимки на бейсике пишется в одну (опубликованную выше) строчку
 AddNewHotel.Select(New DataSourceSelectArguments)
так вызывается проца, определенная вот таким способом
    <asp:SqlDataSource ID="AddNewHotel" runat="server" ConnectionString="<%$ ConnectionStrings:SQLServer_ConnectionStrings %>"
        SelectCommand="AddNewHotel" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:Parameter Name="UserName" Type="String" />
            <asp:Parameter Name="CountryID" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewCountry" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewCity" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewKurort" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewOtel" Type="String" DefaultValue="0" />
            <asp:ControlParameter ControlID="txComment" DefaultValue="" Name="Comment" 
                PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>

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

На всякий случай еще внешний вид этой простой формы опубликую (она простая предельно, предназначена для передачи сообщения об ошибках сайта)

К сообщению приложен файл. Размер - 19Kb
24 фев 15, 16:00    [17305972]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Maxx
тяжко с вами... обработчик события нажатия кнопки - мне не интереснет
Мне интересен код корторый формирует команду для екзека хранимки



Собственно говоря код, который формирует команду, вот он:


  <asp:SqlDataSource ID="AddNewHotel" runat="server" ConnectionString="<%$ ConnectionStrings:SQLServer_ConnectionStrings %>"
        SelectCommand="AddNewHotel" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:Parameter Name="UserName" Type="String" />
            <asp:Parameter Name="CountryID" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewCountry" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewCity" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewKurort" Type="String" DefaultValue="0" />
            <asp:Parameter Name="NewOtel" Type="String" DefaultValue="0" />
            <asp:ControlParameter ControlID="txComment" DefaultValue="" Name="Comment" 
                PropertyName="Text" Type="String" />
        </SelectParameters>
    </asp:SqlDataSource>



Он сам маппит свойство Text контрола txComment на параметр команды SqlDataSource ID="AddNewHotel". Чтобы вы понимали, пользователю не надо писать никакого другого кода, чтобы сформировалась команда, в неё передались параметры, открылось соединение и команда была бы отправлен на сервер. Это все называется ASP.NET .

Остальное где-то внутри библиотек .NET
24 фев 15, 16:02    [17305984]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
a_voronin,

ну и в каком виде после всего етого - оно передаеться на екзек сиквелу ? У вас есть на чем отладить ?
24 фев 15, 16:05    [17306000]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
бо уже откровенно интересно даже :)
24 фев 15, 16:07    [17306008]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
Совершенно верно, но в БЕЙСИКЕ нужна реально только еще ОДНА СТРОЧКА вызова этой процы

 AddNewHotel.Select(New DataSourceSelectArguments)
24 фев 15, 16:07    [17306009]     Ответить | Цитировать Сообщить модератору
 Re: Sql Injection  [new]
bg1
Member

Откуда:
Сообщений: 42
бо уже откровенно интересно даже :) 
будем BASIC изучать?
sp_execute вы получите в профайлере
что вы хотите там увидеть? то что изучают первокурсники ПТУ по программированию?
24 фев 15, 16:09    [17306019]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить