Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Co ukázal globální scan přístupných .git repozitářů?

184 views

Published on

Slidy z konference OpenAlt 2018 - data zapomenutá v .git a nevhodně nakonfigurované webové servery.

Published in: Internet
  • Be the first to comment

  • Be the first to like this

Co ukázal globální scan přístupných .git repozitářů?

  1. 1. https://lynt.cz @smitka Vláďa Smitka vladimir.smitka@lynt.cz @smitka Lynt services s.r.o. 03.11.2018 1 Co ukázal globální scan přístupných .git adresářů?
  2. 2. https://lynt.cz @smitka03.11.2018 2 Otevřená data (anglicky Open data) jsou informace a data zveřejněná na internetu, která jsou úplná, snadno dostupná, strojově čitelná, používající standardy s volně dostupnou specifikací, zpřístupněná za jasně definovaných podmínek užití dat s minimem omezení a dostupná uživatelům při vynaložení minima možných nákladů. -- wikipedia
  3. 3. https://lynt.cz @smitka03.11.2018 3
  4. 4. https://lynt.cz @smitka03.11.2018 4
  5. 5. https://lynt.cz @smitka Starší výzkumy a články • Stav WordPress instalací v ČR – https://lynt.cz/blog/wordpress-v-cz-velky-pruzkum • Průzkum WordPress na Slovensku – https://lynt.cz/blog/wordpress-v-sk-pruzkum • Technické zpracování webů prezidentských kandidátů – https://lynt.cz/blog/prezident-2018 • Nejčastější problémy moderních webů – https://lynt.cz/blog/10-nejcastejsich-problemu- modernich-webu 03.11.2018 5
  6. 6. https://lynt.cz @smitka Otevřené .git repozitáře • /.git/ => rekonstrukce zdrojového kódu • Přehlédnutí kvůli 403 • /.git/HEAD • /.git/config • /.git/index • /.git/logs/HEAD • https://lynt.cz/blog/globalni-scan-otevrenych-git- repozitaru 03.11.2018 6
  7. 7. https://lynt.cz @smitka03.11.2018 7
  8. 8. https://lynt.cz @smitka03.11.2018 8
  9. 9. https://lynt.cz @smitka03.11.2018 9
  10. 10. https://lynt.cz @smitka "V repozitáři přeci nikdo nemá citlivá data" 03.11.2018 10
  11. 11. https://lynt.cz @smitka Skutečnost? • Hesla k DB • API klíče • Hesla k SMTP 03.11.2018 11
  12. 12. https://lynt.cz @smitka03.11.2018 12
  13. 13. https://lynt.cz @smitka Další zajímavosti • Zálohy • Dočasné soubory • Dumpy DB • Inicializační DB • Zálohovací skripty • Obslužné skripty • .idea 03.11.2018 13
  14. 14. https://lynt.cz @smitka03.11.2018 14 /.idea/webServers.xml
  15. 15. https://lynt.cz @smitka Endpointy 03.11.2018 15 • File managery • Rozesílače e-mailů • Skrytá "API" • Adminer • Chyby v kódech a knihovnách
  16. 16. https://lynt.cz @smitka Novinka? • https://en.internetwache.org/dont-publicly- expose-git-or-how-we-downloaded-your- websites-sourcecode-an-analysis-of-alexas- 1m-28-07-2015/ • https://news.ycombinator.com/item?id=8389 81 (2009) 03.11.2018 16
  17. 17. https://lynt.cz @smitka Scan - kde vzít cíle? • IP rozsah – Jej jich docela hodně (necelé 4 miliardy) – Mnoho sdílených serverů – Hodně Honeypotů • Seznam domén – Reálnější cíle 03.11.2018 17
  18. 18. https://lynt.cz @smitka Kde vzít seznam domén? • SK - https://sk-nic.sk/subory/domains.txt • CZ - neveřejné, https://github.com/spaze/domains • Globál – Alexa Top 1M • http://s3.amazonaws.com/alexa-static/top-1m.csv.zip • Dobré pro statistické výzkumy, málo pro změnu. – Rapid 7 OpenData • https://opendata.rapid7.com/ – Certificate Transparency - CTL • https://medium.com/cali-dog-security/parsing-certificate- transparency-lists-like-a-boss-981716dc506 – Censys.io • https://censys.io/ 03.11.2018 18
  19. 19. https://lynt.cz @smitka Rapid 7 - OpenData • FDNS Log - 150 GB JSON • 1 500 000 000 záznamů + vlastní zdroje • Redukce – Pouze A/CNAME – Domény 2. řádu – Subset TLD (.com, .eu, .cz,…) – Přeskakovat free domény (.tk, .ml, .ga, .cf, .gq) – Odstranit "strojová jména" (ip-8-8-8-8.net) – Tip: Pouze domény s existujícím MX 03.11.2018 19
  20. 20. https://lynt.cz @smitka Rozložení domén v původním datasetu 142 841 000 com 1 025 000 it 14 958 000 net 999 000 top 11 674 000 org 989 000 ch 9 067 000 de 964 000 cf 6 044 000 info 806 000 club 4 060 000 ru 803 000 ga 2 209 000 biz 797 000 cn 1 867 000 nl 713 000 online 1 770 000 us 651 000 gq 1 487 000 loan 640 000 pl 1 442 000 tk 635 000 ml 1 384 000 fr 630 000 cz 1 315 000 xyz 603 000 es 1 182 000 eu 572 000 be 1 032 000 ca 489 000 se 03.11.2018 20
  21. 21. https://lynt.cz @smitka 230 000 000 domén 03.11.2018 21
  22. 22. https://lynt.cz @smitka Jak to probíhalo? • Test technologií - python + asyncio/aiohttp • 4 týdny • Maximum 18 malých VPS + 4 fyzické stroje • 300$ • Přes 100 abuse (stížností), nejvíce z Jižní Korei • To se příliš nelíbilo poskytovatelům VPS 03.11.2018 22
  23. 23. https://lynt.cz @smitka03.11.2018 23
  24. 24. https://lynt.cz @smitka 390 000 webů s přístupným .git adresářem 03.11.2018 24
  25. 25. https://lynt.cz @smitka /.git/logs/HEAD • E-maily přímo na vývojáře • 30% repozitářů neobsahuje nic co vypadá jako validní mail 03.11.2018 25
  26. 26. https://lynt.cz @smitka Security.txt 03.11.2018 26 https://securitytxt.org/ snadné nalezení kontaktu pro hlášení bezpečnostních problémů Pouze na 8 webech…
  27. 27. https://lynt.cz @smitka Oslovování • 100 000 e-mailů • Jak je poslat? – Bounce rate 10-30% => nelíbí se provozovatelům – Vlastní SMTP s podporou TLS, DKIM 03.11.2018 27
  28. 28. https://lynt.cz @smitka03.11.2018 28
  29. 29. https://lynt.cz @smitka Vývojáři jsou rádi, když je někdo na chybu upozorní 03.11.2018 29
  30. 30. https://lynt.cz @smitka03.11.2018 30
  31. 31. https://lynt.cz @smitka03.11.2018 31
  32. 32. https://lynt.cz @smitka03.11.2018 32
  33. 33. https://lynt.cz @smitka03.11.2018 33 /fabfile.py => 403 /fabfile.pyc => 200
  34. 34. https://lynt.cz @smitka Redukce false positive ve 2. várce • Test nastavení remote origin na github • Prověření indexu, zda obsahuje dynamické soubory 03.11.2018 34
  35. 35. https://lynt.cz @smitka 😠 jednotky negativních reakcí ✋ několik desítek false positive notifikací 🗨🗨 > 100 pozitivních komentářů ❤️ > 3000 děkovných mailů z celého světa 03.11.2018 35
  36. 36. https://lynt.cz @smitka 150 000 webů opraveno 2 měsíce od scanu 03.11.2018 36 👍 👎 240 000 zbývá…
  37. 37. https://lynt.cz @smitka03.11.2018 37
  38. 38. https://lynt.cz @smitka03.11.2018 38
  39. 39. https://lynt.cz @smitka03.11.2018 39
  40. 40. https://lynt.cz @smitka03.11.2018 40
  41. 41. https://lynt.cz @smitka Jaktože je tolik Python a Ruby? • U většiny postižených webů šlo stáhnout všechny soubory (.py, .rb)!!! • Včetně souborů mimo repozitář 03.11.2018 41
  42. 42. https://lynt.cz @smitka Špatně nakonfigurovaný websererver # Serve static files and redirect any other request to Gunicorn server { listen 80; server_name domain.com; root /var/www/domain.com/; # Check if a file exists at /var/www/domain/ for the incoming request. # If it doesn't proxy to Gunicorn/Django. try_files $uri @django; # Setup named location for Django requests and handle proxy details location @django { proxy_pass http://django; proxy_redirect off; proxy_set_header Host $host; } } 03.11.2018 42 https://django-best-practices.readthedocs.io/en/latest/deployment/servers.html
  43. 43. https://lynt.cz @smitka Další problematické konfigurace if (!-f $request_filename) { proxy_pass @app; break; } * https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#check-if-file-exists RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ http://app/$1 [P] 03.11.2018 43
  44. 44. https://lynt.cz @smitka Desítky tisíc webů má server nakonfigurovaný pro vracení všech existujících souborů! 03.11.2018 44 Co s tím uděláme?
  45. 45. https://lynt.cz @smitka Díky za pozornost! 03.11.2018 45 Sledujte můj twitter @smitka. Koukněte na mé starší prezentace na SlideShare. Feedback: http://a.openalt.cz/3 Náměty na další výzkumy: https://en.internetwache.org/scanning-the-alexa-top-1m-for-ds-store-files-12-03-2018/ https://infosec.rm-it.de/2018/08/19/scanning-the-alexa-top-1m-sites-for-dockerfiles/

×