Pro utok proti CAPTCHA preci nemusim precist obrazek. Serveru ve sve odpovedi posilam "vylustene cislo" a v nejake podobe odkaz na to, ktery obrazek mi vlastne poslal (skryty parametr formulare, referer apod.).
Jsou dve moznosti:
1. Bud je vztah mezi CAPTCHA a toho "nejakeho odkazu" nahodny; tj. server neco ciste nahodne vygeneruje a ulozi do nejake databaze, dokud nedostane odpoved. Takovyto server snadno podlehne DOS utoku a CAPTCHA bude aspon dodatecne vyrazeno.
2. Anebo je mezi CAPTCH a "nejakym odkazem" algoritmicky vztah. Bud zautocim proti tomuto algoritmickemu vztahu, anebo (kdyz to jde, tj. pokud neni napriklad timestamp kryptograficky podepsanou soucasti "nejakeho odkazu") proste jen podstrcim ten "nejaky odkaz".
K cemu je dobre vyDOSovat server tak, az CAPTCHA lehne, kdyz je to prave to, co potrebuji, abych se dostal dale? To mi pripada, jako by ke dverim prisel zlodej a chtel se do nich dostat tim, ze do zamku zalepi epoxydem sirku.
Jenze to funguje, svym zpusobem. Pokud mi nekdo trikrat zaDOSuje server kvuli CAPTCHA, tak CAPTCHA uplne vyradim (resp. prilitne na me marketak a serve me do kulicky, abych ji vyradil). Server, ke kteremu se nemuzou uzivatele pripojit, totiz nic nevydelava.
A kdyz vam zlodej zalepi epoxydem zamek, tak to taky zabere. Bud totiz zustanete naporad doma (nebo aspon tech par dni, nez sezenete zamecnika) - anebo odejdete z baraku a nechate odemcino. A vase sedmibodove bezpecnostni dvere jsou vam naprd.
Napriklad ja mam ten kod z obrazka ulozeny na serveri v session premennej a jedine, co sa posiela serveru ako identifikacia klienta je ID tejto session.
Takze utocnik by takymto sposobom neuspel.
Prvy sposob je jednoznacne zly a nemal by ho nikto pouzivat. Resource urcite raz dojdu. A doplati na to iba legitimny uzivatel.
Druhy sposob povazujem za samozrejmost ale nevidim sposob, ako chcete zautocit na "algoritmicky vztah". Nemozete predsa poznat moj (z hladiska spravcu webu s CAPTCHA) algoritmus. Nemate najmensiu sa ho dozvediet. Takze slova "zautocim proti tomuto algoritmickemu vztahu" su podla mojho nazoru prilis nadsadene.
Ad to lámání algoritmu --- stačilo by, kdyby si server pamatoval jedno tajné číslo (klidně pro všechny sessiony stejné) a každému klientovi posílal zamlžený obrázek s náhodnými písmeny a MD5 toho tajného čísla a těch písmen --- s tím, že klient má vrátit MD5 beze změny a ještě musí vyluštit ta písmena. Pak to algoritmicky nelouskneš (ani nedávno objevená slabina v MD5 ti nepomůže).
Pokud ten cas prihashujes jen dovnitr, tak si nepomuzes. Server asi tezko zpetne zjisti, jaky cas tam pri vygenerovani prihashoval.
Takze ten retezec, co mi server posle a ja ho musim predat, musi obsahovat nejaky nahodny salt (to je vzdycky dobry napad) a casovou znacku a musi byt podepsan nejakym HMAC kodem (nebo obecneji jakykoliv message authentication, ktery je zalozen na klici), jehoz klic je vytvoren konkatenaci privatniho klice a lusteneho cisla. Pri kontrole podpisu taktez kontroluji casovou znacku a vyhazuji stare zpravy.
Kdyz ted koukam na to, co pisu, tak to asi bude fungovat, pokud tedy mam dostatek CPU sily na generovani tech message authentication kodu. - A pokud uhlidam klic :-)
Pokud to bude takhle staticky, tak si nejsem jisty, zda si pomuzes. CAPTCHA ma typicky par set tisic (par milionu) moznosti. Dokud by MD5 hashovalo jen neco tajneho a tyhle cislice, tak staci jen shromazdit vsechny moznosti a provadet replay attack.
imho uplny offtopic prispoevok
(doslova by som povedal ze niekdo chce byt moc mudri ...)
najskor, absolutne ste nepochopili co to je CAPTCHA, jak funguje a na co sluzi
teda captcha je obrazok vygenrovani serverom na ochranu proti robotom, vytvara ho (ten obrazok) server s danym formularom (napr na prispevok do fora) a jej ulohou je zabranit robotom v pouzit formulara (napr robotom ktory vkladaju odkazy na ine stranky a snazia sa tak navysit pagerank webu)
teda
1. ked zautoci dos utokom na server zhodite cely server a zadny link do fora nepridate
2. za predpokladu ze ako "algoritmicky vztah" beriete uz generovanie obrazku - to bolo riesene v clanku (aj ked imho clanok by som sam prirovnal ako offtopic)
vasa druha moznost je tiez out lebe zadny odkaz neexistuje (teda pokial to nerobila lopata)
k clanku (imho clanok trochu offtopic)
nevyhody
1. moze byt generovana tiez zvukova stopa ktora text precita
(doporucuje sa aj pri viac zdeformovanom texte)
2. v alt obrazku moze byt = "obrazovy kod potrebny pre vyplnenie formularu - stiahnite si obrazok"
3. to iste co pre body 1. a 2.
prelomenia
1. sam pisete nepouzitelene
2. nedokazem si uplne predstavit jak by to podla Vas malo realne fungovat
teda ze napr do Kambodze poslete 10 PC prenajmete priestory dotiahnete net a budete platit mesacne ludi ? ehmm to by uz snad bolo lacnejsie si zaplatit adwords na googly..
3.+ 4. blokovanie zobrazovania obrazkov na inych serveroch napr cez .htaccess alebo script (dalo by sa obist ze by somm robil screen shot webu a vyrezval cast ale imho v globalu nepouzitelne)