|
|
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
При сканировании сети на сайте в котором я являюсь администратором обнаружили sql уязвимость. где искать уязвимость, есть отдельный класс который использует combopooleddatasource для соединения. возможно ли через этот пул провести инъекцию. нужно ли ставить какие то дополнительную защиты вроде фильтрации имени пользователя и пароля и других данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:15 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
DataSource к SQL инъекциям отношения не имеет. Ищите конкатенацию строк при построении SQL запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:18 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдос, в классическом понимании, sql-injection провести через datasource нельзя, т.к. никаких сторонних запросов он не выполняет. А вот через говнокод, который использует этот datasource вполне можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:22 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, можно привести пример, есть маленький код класса который используется для соединения с базой данных, и там ничего подобного, попробую поискать в других классах если вы привели бы мне пример. сайт на JSP ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:34 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдос, как-то так bad Код: java 1. good Код: java 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:47 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
ваш классик коннкешена скорее всего не иметт никакого отношения к инъекции, вам же говорят, что дело в запросах выполняюшихся через этот коннекшен, ищите там откуда они приходят, ну если это конечно не шелл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:02 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
ЕлдосПри сканировании сети на сайте в котором я являюсь администратором обнаружили sql уязвимость. где искать уязвимость, есть отдельный класс который использует combopooleddatasource для соединения. возможно ли через этот пул провести инъекцию. нужно ли ставить какие то дополнительную защиты вроде фильтрации имени пользователя и пароля и других данных. а url по которому уязвимость проявилась инструмент не показал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:53 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосгде искать уязвимость - проверить не развод ли это. Закомментировать все вызовы и дать им URL опять. - пример инжекции может быть такой, как подзапросы в запросе https://www.google.com/search?q=gjlpfghjc d pfghjct&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a&channel=sb#newwindow=1&rls=org.mozilla:ru:official&channel=sb&q=подзапрос в запросе&spell=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:58 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
DDivergood Код: java 1. 2. 3. Далеко не панацея. :) 1. Можно сохранить javascript, который потом вычитается у другого пользователя и ненароком выполнится. 2. Ну или не javascript, а какая-нибудь процедура (функция/триггер) в базе, которая вдруг бац и все же выполнит написанный код при составлении отчета (например вычисляя самописный агрегат или произведение значений столбца при обходе по дереву). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 17:42 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, А ненароком это как? Если специально не интерпритировать строку как скрипт, на клиенте он не как не выполниться. Да что либо создать в бд не получится, случай особо ожаренного программиста не рассматриваем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 18:15 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, от классического sql injection - как раз панацея :) Не путать с XSS! Вот хранимки да, отдельная песня, т.к. там удобные prepared statement-ы не предусмотрены конструкцией. Вот, например, интересная ссылка: http://bobby-tables.com/plsql.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 20:04 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
lleming, нет этого не показал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 06:27 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
DDiver, понял, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 06:30 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
scfСергей Арсеньев, от классического sql injection - как раз панацея :) Не путать с XSS! Вот хранимки да, отдельная песня, т.к. там удобные prepared statement-ы не предусмотрены конструкцией. Как не предусмотрены? Всё там есть. scfВот, например, интересная ссылка: http://bobby-tables.com/plsql.html "Bind Variables" называются. А писать, как там в примере- это можно сервер уронить хорошо, даже без инъекций. Наблюдал переписывание функции с конкатенации на bind Variables с ускорением на пару порядков (да, в 100 раз- оптимизатор при конкатенации каждый раз мучается, плюс кэш переполняется, а с переменными- один раз, всё быстро). Другое дело, что вызывая любой код (не только pl/sql), хорошо бы быть уверенным, что писал его не студент (вот в моём примере так и было, кстати), а знающий человек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 10:39 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Речь идет об Oracle? Интересно, у нас все запросы через конкатенацию сделаны... Можно пример, как правильно? Поговорю потом с датабазниками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 11:47 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
scfРечь идет об Oracle? Интересно, у нас все запросы через конкатенацию сделаны... Можно пример, как правильно? Поговорю потом с датабазниками. Весело у вас :D Вот примеры от авторов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 12:28 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, А чем это в принципе может быть быстрее? Это даже не prepared statement, это при каждом вызове ХП компиляцию делать надо... При том, что обычные ХП компилируются в C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 12:34 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. Вот код рабочий, многие переменные удалены, так как не вмещалось. есть ли здесь хоть какая то уязвимость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 13:09 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
ivanra, я не понял о чем вы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 13:46 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдос, Ну и говнокод у Вас! Проверьте на рабочей базе, что будет, если в параметре to_hour придет вот такая строка: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 13:46 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдос, Воистину говнокод, даже если не говорить про уязвимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 13:53 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосivanra, я не понял о чем вы SQL Injection на SQL Injection-е сидит и SQL Injection-ом погоняет. Так понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:01 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
scfAlexey Tomin, А чем это в принципе может быть быстрее? Это даже не prepared statement, это при каждом вызове ХП компиляцию делать надо... При том, что обычные ХП компилируются в C. У оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению. Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:24 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey TominУ оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению. Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю). По-моему там есть некоторые оптимизации, которые умеют выделять параметры запроса, даже если они заинлайнены в SQL. Но, конечно, полагаться на эти фичи, не зная о них и не понимая того как они работают бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:37 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey TominУ оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению. Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю). По-моему там есть некоторые оптимизации, которые умеют выделять параметры запроса, даже если они заинлайнены в SQL. Но, конечно, полагаться на эти фичи, не зная о них и не понимая того как они работают бессмысленно. Опыт показал, что в 9ке их нет. К 10ке всё переписали по уму, так что не проверяли. И не хотелось :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:39 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
HoBTIDПроверьте на рабочей базе, что будет, если в параметре to_hour придет вот такая строка: Код: plsql 1. должно выдать ошибку из-за первой же ';', потом to_hour рассчитывается как-то по другому и не зависит от параметров запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:40 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
0FDдолжно выдать ошибку из-за первой же ';', потом to_hour рассчитывается как-то по другому и не зависит от параметров запроса. from_day заезжает в SQL как есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:42 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
HoBTID, я не могу отправить подобный запрос, там стоит ограничение в два символа, и идет проверка на то что это не строка. как еще можно отправить подобный запрос, только не удаление таблицы, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:45 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдося не могу отправить подобный запрос, там стоит ограничение в два символа, и идет проверка на то что это не строка. Поржал. Спасибо. "там" это на странице? А вы знаете что HTTP запросы можно посылать без страницы и без браузера? А вы знаете что современные браузеры позволяют даже клиенту менять HTML страницы. Можно спокойно любую длину выставить. Елдоскак еще можно отправить подобный запрос, только не удаление таблицы, Это вообще не важно как отправить запрос. Важно что сервер реализован студентом, а не профессиональным Java программистом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:50 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдос, В приведенном выше примере параметры http запроса проходят валидацию, можно считать его относительно безопасным. Правда, что там в helper-е мы не знаем. А так - в первую очередь надо искать места, где параметры вставляются в запрос напрямую, например, при вводе символьной информации. Возможные последствия - на картинке и дальше в пкомментариях :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:53 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
ivanra, в итоге все нормально по вашему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:57 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, строку проверки from_day удалил дабы вместить код на форум ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:58 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, да вы правы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 14:59 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
на этом классе у меня пишет что есть возможность Подделка межсайтовых запросов есть ли здесь такая возможность. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 15:02 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосстроку проверки from_day удалил дабы вместить код на форум Это не важно. Есть конкатенация, найдется и 100500 способов обойти валидацию. Просто перепишите код с использованием PreparedStatement и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 15:03 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосivanra, в итоге все нормально по вашему. Если это весь код сервера, то нужно проверить как работает Helper.isIP(ip), с остальным можно смириться (parseInt спасает). Но если в программе полно мест в том же духе, то дальше вступает в силу закон Мерфи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 15:06 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов есть ли здесь такая возможность. Код: java 1. 2. Кто погрыз код? Тут было самое интересное. Елдос Код: java 1. 2. 3. Автора сего- разжаловать в дворники. Елдос Код: java 1. 2. 3. 4. jdk6 уже не поддерживается, давно пора try with resources использовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 15:10 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
ivanraВ приведенном выше примере параметры http запроса проходят валидацию, можно считать его относительно безопасным. Судя по тому, что сначала делают errorList.add, а затем errorList!=null там не все так прозрачно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 15:13 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin У оракла есть кэш, где хранятся все запросы. Если используются bind, то каждый последующий запрос находится в кэше- уже готовый к исполнению. Если нет- не находится и, более того, выносит оттуда все остальные "приличные" запросы (кэш общий на instance, если не путаю). Подпишусь. Руки бы отбивал за конкатенацию) Кстати, оценил RAC в этой связи - если нельзя переписать, то хоть можно вынести такую фигню на отдельную ноду, чтобы не мешалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 17:31 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов есть ли здесь такая возможность. Если вы про Cross-Site Request Forging (CSRF), то да, скорее всего есть. Вы ведь нигде не проверяете, что запрос пришел со страницы, подконтрольной вам а не хакеру (куки этого не отличат). "Скорее всего" - потому что проверка может делаться еще и фильтрами. Но если у вас возник вопрос, то фильтров скорее всего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 21:59 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
maxkar, подскажите пожалуйста как это можно это реализовать, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 05:47 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey TominЕлдосна этом классе у меня пишет что есть возможность Подделка межсайтовых запросов есть ли здесь такая возможность. Код: java 1. 2. Кто погрыз код? Тут было самое интересное. Елдос Код: java 1. 2. 3. Автора сего- разжаловать в дворники. Елдос Код: java 1. 2. 3. 4. jdk6 уже не поддерживается, давно пора try with resources использовать почему разжаловать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 08:28 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдоспочему разжаловать Потому что при ошибке (например БД упала) код выведет пустой набор данных, как-будто там ничего не нашлось. И ошибку в консоль, которую вряд ли кто читает и вообще на сервере в /dev/null часто идёт. Вообще exception любой надо либо обрабатывать (пересоздавать коннект, менять запрос и т.п.), либо выводить пользователю (если он есть) в понятном виде- "ошибка соединения с базой данных") и информировать администратора (письмо, смс в конце концов) и выводить в лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 09:25 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Alexey TominЕлдоспочему разжаловать Потому что при ошибке (например БД упала) код выведет пустой набор данных, как-будто там ничего не нашлось. И ошибку в консоль, которую вряд ли кто читает и вообще на сервере в /dev/null часто идёт. Вообще exception любой надо либо обрабатывать (пересоздавать коннект, менять запрос и т.п.), либо выводить пользователю (если он есть) в понятном виде- "ошибка соединения с базой данных") и информировать администратора (письмо, смс в конце концов) и выводить в лог. понял спасибо. могли бы показать как я могу в этом коду реализовать защиту от csrf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 09:31 |
|
||
|
Sql инъекции
|
|||
|---|---|---|---|
|
#18+
Елдосподскажите пожалуйста как это можно это реализовать, Кого? Атаку или защиту? Атака у вас тривиально пройдет в виде <img src="your-site-url-with-params"/>. Даже не нужно уговаривать пользователя нажать кнопку. Либо похожие варианты для переходов по ссылке. Для защиты читайте теорию: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) и рекомендации по защите: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2014, 23:25 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2126606]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
141ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 401ms |

| 0 / 0 |
