Otevřená data (anglicky Open data) jsou informace a data … · 2018-11-02 · 03.11.2018 @smitka...

Post on 07-Jul-2020

2 views 0 download

transcript

https://lynt.cz @smitka03.11.2018 1

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

https://lynt.cz @smitka

Vláďa Smitka

vladimir.smitka@lynt.cz

@smitka

Lynt services s.r.o.

03.11.2018 2

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

https://lynt.cz @smitka03.11.2018 3

https://lynt.cz @smitka03.11.2018 4

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

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

https://lynt.cz @smitka03.11.2018 7

https://lynt.cz @smitka03.11.2018 8

https://lynt.cz @smitka03.11.2018 9

https://lynt.cz @smitka

"V repozitáři přeci nikdo nemá citlivá data"

03.11.2018 10

https://lynt.cz @smitka

Skutečnost?

• Hesla k DB

• API klíče

• Hesla k SMTP

03.11.2018 11

https://lynt.cz @smitka03.11.2018 12

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

https://lynt.cz @smitka03.11.2018 14

/.idea/webServers.xml

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

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=838981 (2009)

03.11.2018 16

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

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

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

https://lynt.cz @smitka

Rozložení domén v původním datasetu

142 841 000 com 1 025 000 it14 958 000 net 999 000 top11 674 000 org 989 000 ch

9 067 000 de 964 000 cf6 044 000 info 806 000 club4 060 000 ru 803 000 ga2 209 000 biz 797 000 cn1 867 000 nl 713 000 online1 770 000 us 651 000 gq1 487 000 loan 640 000 pl1 442 000 tk 635 000 ml1 384 000 fr 630 000 cz1 315 000 xyz 603 000 es1 182 000 eu 572 000 be1 032 000 ca 489 000 se

03.11.2018 20

https://lynt.cz @smitka

230 000 000 domén

03.11.2018 21

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

https://lynt.cz @smitka03.11.2018 23

https://lynt.cz @smitka

390 000 webůs přístupným .git adresářem

03.11.2018 24

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

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…

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

https://lynt.cz @smitka03.11.2018 28

https://lynt.cz @smitka

Vývojáři jsou rádi,když je někdo na chybu upozorní

03.11.2018 29

https://lynt.cz @smitka03.11.2018 30

https://lynt.cz @smitka03.11.2018 31

https://lynt.cz @smitka03.11.2018 32

/fabfile.py => 403/fabfile.pyc => 200

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 33

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 34

https://lynt.cz @smitka

150 000 webůopraveno 2 měsíce od scanu

03.11.2018 35

👍

👎 240 000 zbývá…

https://lynt.cz @smitka03.11.2018 36

https://lynt.cz @smitka03.11.2018 37

https://lynt.cz @smitka03.11.2018 38

https://lynt.cz @smitka03.11.2018 39

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 40

https://lynt.cz @smitka

Špatně nakonfigurovaný websererver# Serve static files and redirect any other request to Gunicornserver {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 detailslocation @django {proxy_pass http://django;proxy_redirect off;proxy_set_header Host $host;

}}

03.11.2018 41

https://django-best-practices.readthedocs.io/en/latest/deployment/servers.html

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 42

https://lynt.cz @smitka

Desítky tisíc webů má server nakonfigurovaný pro vracení všech

existujících souborů!

03.11.2018 43

Co s tím uděláme?

https://lynt.cz @smitka

Díky za pozornost!

03.11.2018 44

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/