Je to už viac ako rok čo sa z času na čas venujem slovenským doménam a ich bezpečnosti. Mám vytvoreného robota, ktorý každé ráno aktualizuje zoznam domén, postupne ich prechádza a hľadá pre mňa zaujímavé veci, hlavne z hľadiska bezpečnosti.
Takto sa mi podarilo nazbierať podľa mňa pekné množstvo informácií, snáď to raz odpublikujem. Medzi inými robot skúša pristúpiť k súborom, ktoré by nemali byť verejne dostupné, resp. by mal byť prístup k nim odoprený. Medzi takéto súbory patrí aj konfiguračný súbor .htaccess, ktorý pravdepodobne pozná väčšina programátorov, ale pre neznalých:
.htaccess je textový súbor, ktorý umožňuje zmeniť niektoré (záleží od nastavenia) vlastnosti webového servera (ako napríklad Apache) bez priameho ovplyvnenia hlavného konfiguračného súboru. To znamená, že je možné nastavovať rôzne správanie rôznych projektov, ktoré však využívajú ten istý webový server.
Prístup k týmto súborom by nemal byť povolený, pretože môžu obsahovať informácie, ktoré by mohli ohroziť bezpečnosť webu, či priamo webového servera. Väčšinou, ak je prístupný súbor .htaccess býva prístupný aj súbor .htpasswd (ak je vytvorený), ktorý obsahuje prístupy pre tzv. basic authentification (základnú autentifikáciu). Prístupové údaje sú v tomto taktiež textovom súbore uložené v tvare meno_uzivatela:hash_hesla. Ak útočník získa prístup k takémuto súboru, je pravdepodobné, že sa dostane do zabezpečenej časti webu, kam ste ho nemali v úmysle pustiť. Na získanie hesla je možné použiť napríklad známy softvér John the Ripper.
Oba tieto súbory by mali byť chránené pred prístupom z vonku. Napríklad Apache vo svojej štandardnej konfigurácii obsahuje aj tieto riadky (v súbore httpd.conf).
<FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All </FilesMatch>
Vďaka nim je prístup k týmto súborom zakázaný a výsledkom je chybová hláška so statusom 403 Forbidden, ako napríklad tu. Stáva sa však, že prístup k týmto súborom je povolený a teda si môže ktokoľvek prečítať jeho obsah.
Na slovensku bolo v dobe písania článku zaregistrovaných 197 818 domén, z čoho je väčšina funkčných (v zmysle že sú na nich zobrazované webstránky). Z nich viac ako “300″ umožňuje načítať súbor .htaccess. Nie všetky domény v zozname sú slovenské, no presmerovávajú na ne slovenské domény a tak som ich zo zoznamu nevyhadzoval. Rovnako som neskúšal subdomény a ani priečinky jednotlivých domén, takže zoznam určite nie je konečný.
Tu je ich zoznam:
1tatranskaspravcovska.sk, 1ts.sk, 4metal.sk, aaa-auto-banskabystrica.sk, aaa-auto-bratislava.sk, aaa-auto-kosice.sk, aaa-auto-lucenec.sk, aaa-auto-nitra.sk, aaa-auto-poprad.sk, aaa-auto-presov.sk, aaa-auto-prievidza.sk, aaa-auto-ruzomberok.sk, aaa-auto-trencin.sk, aaa-auto-zilina.sk, aaapremiumauto.sk, adresar.sk, airtoy.cz, airtoy.sk, ake.kz, aktualnezlavy.sk, alegraprint.sk, alpine.sk, alusolid.sk, archon.sk, armaturex.sk, asanista.sk, aspi.sk, audi-auto.sk, audiotechnika.sk, australiastudium.sk, australia-studium.sk, auto-bmw.sk, badpiestany.com, ber.sk, betaol.cz, betterplace.org, bevito.sk, bigfutbal.sk, bkonline.sk, bkteam.sk, blanar.sk, brusky.sk, buginy.sk, burningmedia.sk, ceramicasantagostino.sk, citroen-levne.sk, comexim.sk, crdesign.cz, csko.sk, cub.sk, cyklotour.sk, cyprian.sk, danovesluzby.sk, d-box.sk, ddp.sk, decormaison.cz, delta-kolo.cz, demontservis.sk, denniksport.sk, deweb.sk, divoke-kmene.sk, divokekmeny.sk, domov.sk, donauchem.cz, doplnkystravy.sk, dopravnik.sk, dotmac.sk, e107.sk, efmuk.sk, ekonomickysoftware.sk, eletechnik.sk, eny.sk, erotikdating.sk, esthetic.sk, etngroup.sk, euroinformacie.sk, evidencia.sk, exedra.sk, exedrafit.sk, expocom.sk, f-h.sk, fiat-auto.sk, financial.sk, firmyasluzby.sk, fischbacher.sk, flashdev.sk, ford-auto.sk, friendlyhouses.sk, funeral.sk, fun-online.sk, games.sk, granit.sk, graniti.sk, hako.sk, healthspa.sk, hokejportal.sk, honda-auto.sk, hromozvody.sk, hry24.sk, chatamatus.sk, chatanakoncikorne.sk, chatnet.sk, chudnete.sk, i-katalog.sk, imapy.sk, immocap.sk, impregnacia.sk, imprint.sk, inprost.sk, inqb.sk, internship.sk, investhouse.sk, iserver.sk, istrofinal.sk, iura.sk, jabbim.sk, jakota.sk, jazvy.sk, jobmania.sk, juj.sk, jurajblanar.sk, karatesk.sk, katalogcrv.sk, katalogokien.sk, knihyezop.sk, kontakt.sk, koragroup.sk, kostal.sk, kozmetickachirurgia.sk, kreditnakarta.sk, kto.sk, kupelepiestany.sk, lba.sk, lepsiezdravie.sk, letbalonom.sk, maesw.sk, mamtalent.sk, manipulatory.sk, marianske-lazne.sk, mayertransport.sk, mazda-auto.sk, mercedes-auto.sk, mesacnikpodnikanie.sk, mesta.sk, metavium.sk, metooradio.sk, metootv.sk, microtherm.cz, mladezvakcii.sk, mojemesto.sk, mortality.sk, motivacia.sk, mrmaros.sk, msrk.sk, musicstar.sk, nabytokbeba.sk, najlacnejsie-knihy.sk, napojove-prepravky.sk, naspirale.cz, nautila.sk, navigacnesystemy.sk, navigacnysystem.sk, neira.sk, netfinity.sk, netster.sk, nike-shop.sk, nissan-auto.sk, noemi.sk, obcianskypreukaz.sk, obtulowicz.sk, olympiady.sk, onaaauto.sk, onlineslovnik.sk, onlineuctovnictvo.sk, opel-auto.sk, oravskevesele.sk, owayo.com, pages.sk, parkoviska.sk, party.sk, paxz.nl, personalfabric.sk, peugeot-auto.sk, pizzamicio.sk, planovac.sk, plastickachirurgia.sk, plastove-kontajnery.sk, plastove-palety.sk, plastove-prepravky.sk, pohodafestival.sk, pomahameliecit.sk, poradenskesluzby.sk, porges.sk, porno-sex-erotika.sk, porno-videa-sex-tv.sk, povinnavybava.sk, povolenie.sk, ppc-pay-per-click-cpc.sk, praca.in, pracadoma.sk, prazdroj.sk, privateli.sk, profilex.sk, promotive.sk, protezy.sk, prvatatranskaspravcovska.sk, pyrostop-ba.sk, ranajkujzdravo.sk, reality123.sk, redflower.sk, regulacnatechnika.sk, rekuperacia.sk, rekuperator.sk, relaxacnecentrum.sk, renault-auto.sk, retrofutbal.sk, rkvin.sk, rogeriana.sk, rozhanovce.sk, salaty.sk, sanitarnatechnika.sk, santagostino.sk, seat-auto.sk, semania.mobilmania.cz, severskelisty.sk, shops.sk, signal.sk, siklienka.sk, sina.sk, skateobchod.sk, skate-obchod.sk, skg.sk, skladacie-kontajnery.sk, skladovatechnika.sk, sklenarstvo.sk, slovakdomains.sk, slovakiaguide.sk, smo.sk, smolnik.sk, smspoistenie.sk, sms-poistenie.sk, snickers.sk, spapiestany.sk, sponzorovaneodkazy.sk, sponzorovane-odkazy.sk, sportfinal.sk, sport-mix.sk, sportpodlahy.sk, sport-podlahy.sk, sport-povrchy.sk, sportpress.sk, sprchy.sk, ssjr.sk, stavebnesluzby.sk, stefanbackor.sk, stickfish.com, stranky.sk, stupido.sk, sunflowers.sk, sustruhy.sk, swat.sk, tattoo-spray.sk, tectus.sk, thermia.sk, thermiahotel.sk, thermiapalace.sk, thermiapiestany.sk, tommeetippee.sk, top-office.sk, toyota-auto.sk, tpa-horwath.sk, tracker.sk, tvarnenie.sk, tzbinfo.sk, tzb-info.sk, uctovnesluzby.sk, uctovnictvoonline.sk, ulozto.sk, unidekor.sk, unimpex-bratislava.sk, union.sk, unionprihlaska.sk, unionzdravotnapoistovna.sk, unionzp.sk, union-zp.sk, upratovaciservis.sk, usporne-cerpadla.sk, uspornedomy.sk, uverypozicky.sk, uzp.sk, velkeveci.sk, vodicskypreukaz.sk, vw-auto.sk, vynosy.sk, vyznamenanie.sk, wareznet.sk, web.analytics.yahoo.com, webkraft.sk, webzabava.sk, wsia.sk, ymca-nesvady.sk, zabes.sk, zahradnenabytky.sk, zakonysr.sk, zariadenie-predajni.sk, zizdravo.sk
Pred niekoľkými mesiacmi sa podobná chyba objavila aj na populárnom Twitteri.
#SetEnvIf User-Agent .*R6_Feed.* robot Order allow,deny Allow from all Deny from env=robot Deny from 72.47.254.135 70.74.201.136 129.128.99.97 213.186.116.115 69.31.45.178 217.20.175.128 77.222.42.34 217.16.16.225 217.16.16.202 83.222.23.240 85.21.154.98 83.222.23.222 212.193.228.118 213.251.189.203 62.149.130.16 151.56.63.169 64.72.112.19 67.228.15.148 194.85.93.194 77.221.130.5 80.91.176.143 81.177.4.224 68.178.174.65 80.245.112.5 193.178.144.158 193.178.144.158 151.56.103.207 193.178.144.117 193.178.144.158 193.178.144.62 193.178.144.8 193.178.144.9 193.178.145.111 193.178.145.185 193.178.145.235 193.178.145.245 193.178.146.237 194.135.22.221 194.54.90.182 194.85.90.193 194.85.90.253 194.85.93.194 195.245.118.44 195.248.190.145 208.109.206.50 212.193.228.118 213.172.16.3 213.186.114.74 213.186.116.231 213.186.126.2 213.186.192.131 213.186.192.164 213.188.130.113 213.248.54.68 216.119.125.140 217.112.35.22 217.112.35.28 217.112.37.47 217.112.42.64 217.16.16.201 217.16.16.202 217.16.16.220 217.20.175.128 62.149.0.175 62.149.0.46 62.149.130.16 62.149.130.37 62.149.18.31 62.149.18.4 62.80.178.142 63.247.74.34 64.202.165.131 64.202.165.132 64.202.165.133 64.202.165.201 64.40.144.166 66.118.138.196 67.222.1.136 67.228.15.148 68.178.174.65 69.31.45.178 69.50.162.178 69.72.149.27 72.233.48.174 72.36.239.90 74.208.16.18 74.52.59.226 77.221.130.13 77.221.130.5 77.222.40.141 77.222.40.151 77.222.40.206 77.222.40.43 77.222.40.63 77.222.40.78 77.222.42.34 77.234.201.70 77.47.129.39 77.87.192.13 77.87.192.14 77.87.192.7 78.108.81.161 78.110.50.106 80.245.112.5 80.78.36.201 80.82.45.89 80.91.176.143 80.91.176.175 80.91.189.44 80.93.49.112 80.93.56.169 80.93.62.112 80.93.62.69 81.176.226.50 81.176.76.66 81.177.16.111 81.177.19.5 81.177.4.224 81.177.9.35 82.146.41.76 83.222.23.222 83.222.23.231 83.222.23.240 83.222.23.242 84.19.188.193 85.21.154.98 87.242.74.39 87.242.77.34 88.198.54.120 89.108.66.231 89.111.176.20 91.186.4.115 91.195.214.132 202.190.77.19 208.113.171.20 62.178.2.49 206.251.244.15 # General Apache options #AddHandler fastcgi-script .fcgi AddHandler cgi-script .cgi Options +FollowSymLinks +ExecCGI # If you don't want Rails to look in certain directories, # use the following rewrite rules so that Apache won't rewrite certain requests # # Example: # RewriteCond %{REQUEST_URI} ^/notrails.* # RewriteRule .* - [L] # Redirect all requests not available on the filesystem to Rails # By default the cgi dispatcher is used which is very slow # # For better performance replace the dispatcher with the fastcgi one # # Example: # RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] RewriteEngine On # If your Rails application is accessed via an Alias directive, # then you MUST also set the RewriteBase in this htaccess file. # # Example: # Alias /myrailsapp /path/to/myrailsapp/public # RewriteBase /myrailsapp RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] # In case Rails experiences terminal errors # Instead of displaying this message you can supply a file here which will # be rendered instead # # Example: # ErrorDocument 500 /500.html ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
Záver
Aj napriek tomu, že zobrazenie obsahu .htaccess súboru nevedie k možnosti ovládnuť server, či inak priamo ohroziť bezpečnosť samotného webu, môže obsahovať veľmi zaujimavé informácie, ktoré môžu dopomôcť útočníkovi k objaveniu bezpečnostnej zraniteľnosti. Často sa v súbore objavujú absolútne cesty k priečinkom, odkiaľ je spúšťaný web, samozrejme pravidlá na vytváranie tzv. COOL URI, linky, cestu do administrátorského prostredia, atď. Preto je určite viac než rozumné tieto súbory chrániť a znemožniť prístup k nim.





thumbs up! :)
Pěkné.. .htaccess je v defaultním nastavení nepřístupný, proč by tonastavení někdo měnil?
Zajímavé, myslel jsem si, že zakázaný přístup k .htaccess je tak nějak standard a dělají to všichni. Jen tak pro úplnost, jak je to se souborem web.config? Vyskytuje se tam podobný problém?
Ja to riesim priamo v .htacces subore kde na zaciatok pridam:
RewriteEngine On
order allow,deny
deny from all
RewriteEngine On
<Files .htaccess>
order allow,deny
deny from all
</Filesgt;
Heh som sa tam nasiel, nastastie len default htaccess frameworku.
Dik za clanok ;)
no, nastastie sa tam nenachadzam :) Wordpress je celom bezpecny
@ooo
Kolko casu trva tvojmu robotovi, kym skontroluje ~197 000 slov. domen? Za predpokladu, ze kontroluje seriovo a jedna kontrola trva sekundu, mi to vychadza na cca 54 hodin :-D. Nuz, ale to mam asi nespravne predpoklady, nakolko robot chruma domeny kazde rano.
#7 Jan Garaj: bot si kazde rano updatuje slovenske domeny, teda ich zoznam. prechadzanie trva daleko dlhsie, robi sa systematicky a v multithreade, zalezi od moznosti aktualnych masin, ale vacsinou v stovkach req. za sekundu. i tak to trva vecnost, ale prejst vsetky domeny na zakladne veci trvalo asi dve hodiny.
ono asi aj zalozi, ci vsetci citatelia blogu maju v to rano spustene pocitace alebo nie :-)
#8 oooo: Pekne. Davno, pradavno som aj ja mal jeden podobny test. Avsak po mesiaci neustaleho behu som sa naucil, ze seriovo, jednovlaknovo testovat nikto-m je blbost (skontrolovana bola cca 1/3 slov. domen).
BTW: Automatizovane testy (skripty) by mohli priamo vykonavat webhostingove spolocnosti s naslednym varovanim svojich klientov. Ide predsa aj o ich povest.
#10 Jan Garaj:Proste geniálny nápad. Ja ako zákazník budem platiť viac, pretože treba platiť (spravovať) službu, ktorú ja ani nevyužijem, ktorá je tu iba preto, že nejaký iný zákazník nevie bezpečnostné pravidlá pri tvorbe webu. Navyše mám pochybnosti, že keď hacknú nejaký web, že ľudia sa hneď na to pozerajú formou, že za to môže poskytovateľ webhostingu.
Mna by zaujimalo ako moze niekto to defaultne nastavenie z configuracneho suboru odstranit a takto spristupnit tieto subory :->
#11 Danoboss: Kto vie, ten vie. Kto nevie, ten kocikuje :-P. Takze ten, kto nevie si zaplati. Iny, vyslovene Ty :-), samozrejme nemusi – zalezi na biznismodele webhostingu.
Casto krat to ani nieje ich chyba, stranky su vacsinou zahostovane na nekvalitnych serveroch, zo soft hladiska su derave ako cednik. Keby si bol zaciatocnik tak pochybujem ze ta napadne takato zakladna vec.
Rasťo, napiš prosím niečo o datových schránkách, ktoré sú teraz u nás v ostrej prevádzke (z pohladu prieniku…. :-) Teda bezpečnosti)
#15 Accuphose: Ja si myslím, že najnovší článok by mal byť o tomto: http://www.itnews.sk/rozhovory/2009-10-27/c129884-publikovane-vazne-zranitelnosti-v-slovenskych-a-ceskych-kartach-mifare to
#15 Accuphose: ak sa mi podari dostat tam access a trosku sa v tom posparat, tak napisem
#16 Danoboss: a co o tom? vsak bolo napisane uz uplne vsetko.
Hi, tak zaujimave ale ja mam tieto subory free preto lebo ich vobec nevyuzivam kedze nepouzivam ani apache tak sa zneuzit moc nedaju. A este k tomu je to jeden a ten isty na vsetkych weboch ten zakladny v Drupalovi ktory sa skludom moze zmazat. Bezpecnostne riziko to v tomto pripade nie je lebo v nom nie je nic podstatne len volne siritelne riadky pre apacha.