SlideShare una empresa de Scribd logo
1 de 46
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ářů?
https://lynt.cz @smitka03.11.2018 2
https://lynt.cz @smitka03.11.2018 3
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 4
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 5
https://lynt.cz @smitka03.11.2018 6
https://lynt.cz @smitka03.11.2018 7
/.git/index
https://lynt.cz @smitka03.11.2018 8
/.git/logs/HEAD
https://lynt.cz @smitka
"V repozitáři přeci nikdo nemá citlivá
data"
03.11.2018 9
https://lynt.cz @smitka
Skutečnost?
• Hesla k DB
• API klíče
• Hesla k SMTP
03.11.2018 10
https://lynt.cz @smitka03.11.2018 11
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 12
https://lynt.cz @smitka03.11.2018 13
/.idea/webServers.xml
https://lynt.cz @smitka
Endpointy
03.11.2018 14
• 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=8389
81 (2009)
03.11.2018 15
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 16
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 17
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 18
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 19
https://lynt.cz @smitka
230 000 000 domén
03.11.2018 20
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 21
https://lynt.cz @smitka03.11.2018 22
https://lynt.cz @smitka
390 000 webů
s přístupným .git adresářem
03.11.2018 23
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 24
https://lynt.cz @smitka
Security.txt
03.11.2018 25
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 26
https://lynt.cz @smitka03.11.2018 27
https://lynt.cz @smitka
Vývojáři jsou rádi,
když je někdo na chybu upozorní
03.11.2018 28
https://lynt.cz @smitka03.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 @smitka03.11.2018 33
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
https://lynt.cz @smitka
😠 jednotky negativních reakcí
✋ několik desítek false positive notifikací
🗨🗨 > 100 pozitivních komentářů
❤️ > 3500 děkovných mailů z celého světa
03.11.2018 35
https://lynt.cz @smitka
150 000 webů
opraveno 2 měsíce od scanu
03.11.2018 36
👍
👎 240 000 zbývá…
https://lynt.cz @smitka03.11.2018 37
https://lynt.cz @smitka03.11.2018 38
https://lynt.cz @smitka03.11.2018 39
https://lynt.cz @smitka03.11.2018 40
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
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
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
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?
https://lynt.cz @smitka
Top 10 web hacking techniques of 2018
03.11.2018 45
https://lynt.cz @smitka
Díky za pozornost!
03.11.2018 46
Sledujte můj twitter @smitka.
Koukněte na mé starší prezentace na SlideShare.
Hlasování o nejlepší web hacking techniky:
https://portswigger.net/polls/top-10-web-hacking-techniques-2018
WordPress CTF k WordCamp Praha 2019
https://2019.prague.wordcamp.org/hacking-soutez-o-10-volnych-vstupenek-na-wordcamp/
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/

Más contenido relacionado

Más de Vladimír Smitka

Más de Vladimír Smitka (20)

Najčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webovNajčastejšie problémy WordPress webov
Najčastejšie problémy WordPress webov
 
Http/2 vs Image Sprites
Http/2 vs Image SpritesHttp/2 vs Image Sprites
Http/2 vs Image Sprites
 
Ansible
AnsibleAnsible
Ansible
 
WordCamp Brno 2017 - rychlý a bezpečný web
WordCamp Brno 2017  - rychlý a bezpečný webWordCamp Brno 2017  - rychlý a bezpečný web
WordCamp Brno 2017 - rychlý a bezpečný web
 
WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnosti
 
Nejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webůNejčastejší problémy WordPress webů
Nejčastejší problémy WordPress webů
 
Wordfence 2016
Wordfence 2016Wordfence 2016
Wordfence 2016
 
WordPress Security: Defend yourself against digital invaders
WordPress Security:Defend yourself against digital invadersWordPress Security:Defend yourself against digital invaders
WordPress Security: Defend yourself against digital invaders
 
WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3WordPress: Základy - bezpečnost 3x3
WordPress: Základy - bezpečnost 3x3
 
Instalace WordPress
Instalace WordPressInstalace WordPress
Instalace WordPress
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 
WordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPressWordCamp Praha 2016 - Bezpečnost WordPress
WordCamp Praha 2016 - Bezpečnost WordPress
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuning
 
Výkon WordPress
Výkon WordPressVýkon WordPress
Výkon WordPress
 
Bezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníkyBezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníky
 
WordPress security for everyone
WordPress security for everyoneWordPress security for everyone
WordPress security for everyone
 
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
 
České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)České weby a Wordpress (Q4/2014)
České weby a Wordpress (Q4/2014)
 
Wordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentaceWordcamp Praha 2015 - další útržky z prezentace
Wordcamp Praha 2015 - další útržky z prezentace
 
Dijskrův algoritmus
Dijskrův algoritmusDijskrův algoritmus
Dijskrův algoritmus
 

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