Conducător științific Absolvent Ș.L. Pupezescu Valentin Istudor Laurențiu-Cosmin Anul 2017 CUPRINS 1. Sisteme de gestionare a bazelor de date… [310180]

[anonimizat] “MariaDB”

Conducător științific Absolvent

Ș.L. [anonimizat] 2017

CUPRINS

1. Sisteme de gestionare a bazelor de date relaționale

2. Probleme de securitate într-o aplicație WEB

2.1 Probleme de securitate ale serverului WEB

2.2 Probleme de securitate ale serverului de baze de date

3. Descrierea aplicației

3.1 Prezentare specific aplicație

3.2 Tehnologii folosite

3.3 Linux Kali și uneltele sale

3.4 Baza de date a aplicației.Diagrama bazei de date

3.5 Arhitectura aplicației. Diagrama UML

4. Prezentarea aplicatiei. Functionalități principale și măsuri luate pentru securizarea aplicației

5. Prezentare instrumente folosite în testare

6. Testarea aplicației nesecurizate

7. Testarea aplicației securizate

8. Concluzii

9. Bibliografie

10. Anexe

Introducere

Timpul a [anonimizat]. [anonimizat], inovativitate, accesibilitate și nu în ultimul rând securitate. Se dorește creșterea nivelului de trai prin tehnologizarea tuturor lucrurilor care ne înconjoară. Aceasta atrage după sine pericolul securității oamenilor creșterea numărului de posibile ținte cibernetice. Atacatorii au prin intermediul acestora o varietate de modalități de a obține date confidențiale pentru victimă sau pot altera integritatea acestora.

Omul este parte integrantă a sistemelor tehnologice datorită faptului că nu am ajuns încă la momentul în care sistemele informatice se pot dezvolta și functiona integral autonom. Astfel, una din cele mai mari probleme apărute la adresa securității este reprezentată de factorul uman.

Nu numai utilizatorii de rând întâmpină probleme când vine vorba de asigurarea unui spațiu informatic sigur; problemele de securitate apar și în cadrul firmelor. Peste 70% din companii au parte de pierderi financiare din cauza incidentelor de securitate. Țintele majore ale acestor atacuri informatice sunt bazele de date datorită importanței și volumului mare de date pe care îl conțin. O [anonimizat] o firmă care încearcă să creeze o [anonimizat]. Pe lânga pierderile financiare ar urma o pierdere a clienților care vor alege contracandidat: [anonimizat], fapt ce va declanșa declinul total al afacerii.

Pentru a [anonimizat] o serie de politici și proceduri. Educarea angajatilor pentru recunoașterea potențialelor amenințări la adresa securității reprezintă un pas important pentru diminuarea influenței factorului uman.

În urma acestor atacuri nu au de suferit doar utilizatorii normali sau firmele ci și reputația brandurilor care se ocupă cu protecția datelor. [anonimizat].

[anonimizat] s-a [anonimizat] a devenit o prioritate. Este nevoie de instruirea unui număr mare de specialiști în domeniul securității care să poată ține pasul cu creșterea numarului de hackeri și asigurarea celor 2 cerințe majore: integritatea datelor și confidențialitatea acestora.

1. Sisteme de Gestiune a Bazelor de Date relaționare

Societatea modernă a zilelor noastre a devenit dependentă de utilizarea sistemelor de baze de date în activități diverse. Pe parcursul unei zile o persoană interacționează deseori cu bazele de date în realizarea unor acțiuni de tipul: cumpărături online, înregistrarea pe un site de socializare, rezervarea unor bilete la film, depunerea unei sume de bani într-un cont bancar, accesarea unui motor de căutare.

Exemplu: presupunem situația în care ne-am afla într-un supermarket de unde cumpărăm diferite produse. Ajunși la casă, vânzătorul scanează codul de bare al fiecărui produs. Aceste produse sunt căutate în baza internă de date a magazinului și se află prețul fiecărui produs.

Un sistem de baze de date este o modalitate virtuală prin care se menține pe un calculator evidența unei aplicații sau a unei activități folosind baze de date [1]. Aceste sisteme de baze de date pot avea marimi variabile. Astfel unele sisteme pot avea înregistrări de ordinul milioanelor (conturile de pe un site de socializare cum este facebook), iar altele pot avea dimensiuni mult mai mici (evidența elevilor unei clase).

Sistemul de Gestiune al Bazei de Date (SGBD) reprezintă un ansamblu de programe specializate destinate creării, întreținerii și accesării bazei de date.

Principalele modele de organizare a bazelor de date sunt:

ierarhic

rețea

relațional

obiect-orientat

Cel mai utilizat model dintre cele menționate este modelul relațional în care datele sunt organizate în tabele conectate. Aceste model corespunde noțiunii de relație din matematică, unde relație se refera la o mulțime de entități de același tip.

Încă de la apariție a avut un succes imens care continuă și in prezent având in vedere faptul ca majoritatea aplicatiilor actuale folosesc un sistem bazat pe modelul relațional.

Pe lânga avantajele date de simplitatea și precizia acestui model beneficiem și de un limbaj standardizat, limbajul SQL, care vine și cu un suport teoretic substanțial. [1]

Modelul relațional presupune structurarea datelor sub forma unor tabele care definesc relații. Fiecare relație are un nume și atribute, coloanele tabelei, pentru care avem un domeniu de valori posibile. Domeniul poate fi același pentru fiecare atribut sau poate avea valori diferite. Un element al unei relații se numeste tuplu. Aceasta este echivalentul unei linii din tabelă. [2]

O relație are urmatoarele proprietăți [2]:

– numele relației o identifică în mod unic

– fiecare atribut are denumire unică în cadrul relației

– intr-o celula putem pune doar valori singulare

– toate valorile tuplurilor aparțin domeniului de definiție al atributelor

– ordinea atributelor este nesemnificativă

– toate tuplurile sunt distincte

2. Probleme de securitate într-o aplicație WEB

Conform unui studiu realizat de Ofcom – Media and Analyst Center un adult petrece aproximativ 20 ore saptămânal pe internet. Inevitabil, acesta va intra în contact cu o sumedenie de aplicații WEB care stochează date importante sau confidențiale pentru utilizator. Aceste date reprezintă ținta răufăcătorilor cibernetici, iar deținătorii site-urilor trebuie sa le asigure securitatea.

Nevoia de asigurare a securității a apărut odată cu modernizarea tehnologiilor. Companiile au realizat că informația de multe ori este mai valoroasă decât bunurile materiale așa că furtul, modificarea, ștergerea sau împiedicarea accesului la aceasta ar aduce prejudicii majore firmei.

2.1 Probleme de securitate ale serverului WEB

Un server WEB este un sistem care stochează pagini WEB și le pune la dispoziția clienților folosind protocolul HTTP. Legătura client-server se realizează pe baza unei aplicații instalate pe server și care transferă paginile WEB găzduite către client în functie de cerințele utilizatorului. [3]

Prin intermediul serverului WEB, un utilizator poate avea acces la fișierele salvate pe sistemul pe care rulează. Astfel, trebuie acordată o atenție sporită securității.

Un atacator poate obține acces neautrizat la anumite fișiere conținând date importante cum ar fi parole sau informatii confidențiale prin exploatarea unor bug-uri din serverul WEB sau din script-uri.

A. CGI este un protocol care permite unei pagini WEB sa ruleze un program CGI pe un server. Aceste scripturi CGI rulează în timp real și se folosesc în paralel cu scripturile HTML pentru a îi imbunătăți funcționalitatea; le putem asemăna cu niște mini-servere care preiau cereri de la client, accesează baza de date și întoarce informații către browser [4]. Problema cu aceste scripturi este că pot contine bug-uri care pot face serverul vulnerabil pentru atacatori:

– pot afișa informații relevante pentru atacator despre host

– atacatorul poate introduce date care se pot transforma în comenzi executabile care ar dăuna host-ului

B. Atacurile de tip DDoS (Distributed Denial of Service) sunt cele mai răspândite modalități de atac asupra unui server deoarece sunt greu de combătut și provoacă daune majore. Principiul acestui tip de atac este reprezentat de trimiterea unei cantități mari de date către server folosind o multitudine de conexiuni la server. Astfel se suprasolicită rețeaua prin efectuarea unui numar mare de cereri de la atacatori și răspunsuri de la server și poate scoate din funcțiune un site pentru câteva ore. Problema cu aceste atacuri este că orice client poate deveni “atacator” fără voia sa; atacatorii pot accesa oricând calculatoarele infectate în prealabil de aceștia și pot lansa un atac DDoS fară acceptul clientului.

C. Drepturile de acces – o configurare eronată a permisiunilor pe un server poate determina portițe de acces pentru atacatori.

D. TCP/IP este un protocol de transmitere a datelor pe internet. Acest protocol permite comunicarea între sisteme indiferent de sistemul de operare instalat. Problema acestui protocol este că nu a fost gândit inițial pentru securitate ci aveau nevoie de funcționalitatea lui. Astfel, un atacator îi poate exploata vulnerabilitățile prin interpunerea între client și server și urmarirea traficului generat. [4]

2.2 Probleme de securitate ale serverului de baze de date

Țintele preferate ale atacurilor informatice sunt reprezentate de bazele de date datorită conținutului acestora și al volumului de date pe care îl stochează. Astfel trebuie să se asigure îndeplinirea următoarelor cerințe: [5]

integritatea fizică și logică a bazei de date

integritatea elementelor din baza de date

controlul accesului

identificare

disponibilitate

Toate Sistemele de Gestionare a Bazelor de Date au funcționalități care implică limitarea accesului la anumite date. Astfel se pot atribui fiecărui utilizator drepturi de acces pentru a efectua operații specifice activității sale. Putem asigura confidențialitatea datelor și totodata alterarea lor accidentală prin blocarea utilizatorilor la porțiuni din tabelă ce nu le sunt adresate.

Atacatorii pot exploata anumite vulnerabilități pe care le are site-ul folosind diverse metode:

A. SQL Injection reprezintă una din cele mai eficiente tehnici de atac asupra bazei de date a aplicației. Această tehnică presupune modificarea sau crearea unor comenzi SQL pentru dezvăluirea sau alterarea unor date din baza de date. Această vulnerabilitate apare atunci când prelucrarea datelor de la utilizatori nu se realizează corect, nu se face validarea parametrilor. [6]

B. Criptarea reprezintă tehnica prin care un text clar este transfigurat în alt text, numit text criptat având ca scop păstrarea unei anumite informații. În cazul în care aceasta ajunge pe mâini nedorite ideal ar fi să nu se poată obține textul clar dacă nu se cunoaște tehnica de criptare sau cheia folosită.

Folosirea unei metode nesigure de criptare poate determina aflarea parolelor prin diferite tehnici de atac criptanalitic. Presupunând că atacatatorul a reușit sa obțină câmpul username și parolă din baza de date, avem nevoie de o metodă de criptare suficient de bună pentru a nu permite aflarea acesteia prin nicio metodă. Deoarece puterea de calcul a sistemelor informatice a ajuns la un nivel foarte ridicat este nevoie ca tehnicile de criptare să evolueze proporțional pentru a fi capabile să mențină cantitatea de secret pe care o ascund.

C. Cross-Site Scripting sau XSS este de asemenea o metodă de injectare a unui cod personal într-o pagina WEB care în mod normal nu prezintă probleme de securitate. Ținta atacului nu este serverul WEB, codul malițios executându-se direct în browserul utilizatorului. Aceste atacuri se pot desfășura dacă sursa datelor ce intră în aplicație nu este verificată sau dacă sunt introduse într-o secvență care este transmisă clientului fară a fi verificată de prezența unui malware. [7]

D. Atacurile de tip brute force reprezintă un tip de atac criptanalitic care presupune o cautare exhaustivă a parolei prin încercarea tuturor combinațiilor și testarea lor pentru a vedea dacă este cea corectă. Cu cât lungimea parolei este mai mare cu atât este mai greu de aflat folosind această metodă.

E. Omul reprezintă unul din cele mai mari riscuri asupra securității. În majoritatea cazurilor factorul uman este reprezentat de angajații firmelor care întreprind acțiuni în mod deficitar sau incorect ducând la probleme se securitate.

Astfel trebuie sa existe o politică de securitate bine pusă la punct și o serie de instruiri a angajaților pentru respectarea regulilor și corectarea acțiunilor conform normelor pentru a diminua cât mai mult riscurile.

Un pericol foarte mare îl reprezintă și acordul firmelor ca angajații să își aducă propriile dispozitive la locul de muncă pe care le pot folosi în cadrul sistemelor interne ale companiei (stick-uri USB, CD-uri, laptopuri etc.). Un sistem de operare cum este Linux Kali poate fi cu ușurință instalat pe un stick și folosit în cadrul firmei. O soluție la această problemă este dezactivarea port-urilor USB.

3. Descierea aplicației

Dear Diary este un site WEB de tip rețea de socializare. Oferă posibilitatea creării unui jurnal online, putând astfel fi accesat de oriunde doar pe baza unui cont de utilizator oferind nu numai funcționalitatea unui jurnal fizic, ci și numeroase alte avantaje.

3.1 Prezentare specific aplicație

Dear Diary este organizat pe 2 nivele de securitate: public și privat. Utilizatorul îți poate alege ca postările sale să fie private și sa le poată vedea doar el sau poate alege ca unele sau toate sa fie publice, iar ceilalți utilizatori sa le poată citi și aprecia. De asemenea postările publice pot fi văzute și de cititorii care nu au cont pe site.

Beneficiile acestui site cu specific social sunt multiple și cuprind:

– utilizatorul poate ține o evidență a memoriilor pe care le poate revedea peste luni sau ani fără a întâmpina problemele unui jurnal fizic care se poate deteriora sau poate ajunge în mainile altor persoane decât deținătorul

– utilizatorul își poate publica rutina zilnică sau poate împărtăși păreri, impresii sau orice fel de gând cu cititorii

– utilizatorul poate citi postările altor persoane

3.2 Tehnologii folosite

În realizarea proiectului s-au folosit:

Hardware: – procesor Intel Core i5 – 5200U

– memorie RAM DDR3 8GB

– placa video Nvidia GeForce 940M

Software: – sistem de operare: Linux Kali

– editor de text: Sublime Text

– server: Apache

– baza de date: MariaDB

– limbaje folosite: PHP, CSS, HTML, SQL

Kali este o distribuție Linux bazată pe Debian concepută în special pentru securitate. Avantajul acestei distribuții este că vine cu peste 300 de programe preinstalate pentru testarea vulnerabilităților cum ar fi: Armitage, Nmap, Aircrack-ng, Grabber sau WireShark. Kali se poate rula direct de pe un live CD/USB sau poate fi instalat fie nativ fie într-o masină virtuală [8].

Sublime Text este un editor de text care suportă multe limbaje de programare și markup. L-am preferat în detrimentul altora pentru compatibilitatea cu platforma și limbajele folosite la proiect, stabilitate, rapiditate, o multitudine de plugin-uri.

Apache este un server web open-source apărut în anul 1995. Conform estimărilor este cea mai folosită versiune de server fiind utilizată în găzduirea a peste 65% din site-urile WEB din lume. Wikipedia, spre exemplu, rulează pe un server Apache, iar Google folosește o versiune modificată numită Google Web Server. Popularitatea acestui server a crescut atât de mult datorită faptului că este gratuit și pentru că permite găzduirea virtuală, lucru ce conferă posibilitatea de a ține mai multe site-uri pe același server. De asemenea Apache permite “content negotiation” ce constă în redarea unor versiuni diferite pentru un document în același URL. Un alt avantaj este ca permite autentificarea bazelor de date care se bazează pe DBMS (Database Management System), asa cum este și MariaDB.[9]

MariaDB este un sistem de gestiune a bazelor de date relaționale open source derivat din MySQL. După ce Sun Microsystems a cumpărat MySQL în anul 2008, iar mai apoi Oracle a achiziționat Sun Mycrosystems în 2009, MySQL a devenit proprietatea Oracle. Principalii dezvoltatori au plecat de la MySQL și au înființat o nouă companie creând MariaDB. Deoarece Oracle nu mai dorește ca MySQL să rămână open source, MariaDB devine alegerea cea mai potrivită. Acest lucru pare susținut și de marile companii care au adoptat acest SGBD: Google, Wikipedia, Tumblr, booking.com, dar și de unele distribuții de linux: Ubuntu, Debian, Fedora, Red Hat devenind baza de date implicită în defavoarea MySQL.[10]

MariaDB a avut cea mai rapidă creștere a popularității pentru o bază de date open source. Fondatorii au gândit-o ca o alternativă la MySQL, astfel, dacă versiunea celor două SGBD-uri este aceeași, se pot substitui fară a apărea probleme de compatibilitate[11]:

– datele și definițiile tabelelor sunt binar compatibile

– toate API, protocoalele și structurile coincid

– conectorii MySQL (PHP, Perl, Python, Java, .NET etc.) functionează pe MariaDB fară a fi nevoie de vreo schimbare

– pachetul mysql-client functionează și cu MariaDB

Astfel, respectând coincidența versiunilor, pentru substituția celor doua SGBD-uri pur și simplu se dezinstaleaza una și se instalează cealaltă fară a aparea probleme la compatibilitate.

Cel mai mare avantaj al SGBD-ului MariaDB este plusul de viteză pe care îl are față de MySQL, lucru resimțit în operațiunile cu volum de date foarte mare.

PHP este un limbaj de scripting, open source, folosit în special pentru dezvoltarea aplicațiilor WEB dinamice și interactive. De cele mai multe ori acesta se folosește integrat în cod HTML, dar poate fi folosit și independent permițând crearea aplicațiilor din linia de comandă. PHP este un limbaj de programare server-side a cărui popularitate a crescut datorită urmatoarelor caracteristici[12]:

– simpu: codul este inclus între marcaje speciale <?php cod ?> fară a fi nevoie de includerea unor biblioteci sau directive de compilare

– securitate: programatorii au la dispoziție o serie de măsuri de siguranță

– familiar: poate fi comparat cu limbaje la C sau Perl în privința sintaxei

– eficient: alocarea resurselor se face optim

– flexibil: poate fi integrat în majoritatea serverelor WEB

– gratuit

Codul PHP se execută pe server și se generează un cod HTML care este trimis clientului. Clientul primeste rezultatul rulării script-ului PHP fară a putea vedea codul. Ca mijloc de securitate se poate configura ca serverul să proceseze toate fișierele HTML folosind PHP.

De asemenea PHP permite și folosirea sa ca limbaj de programare orientată pe obiecte, unde datele și funcțiile sunt tratate ca obiecte.

HTML (HyperText Markup Language) este un limbaj de marcare care stă la baza oricărui site WEB. Paginile HTML sunt formate de obicei din perechi de etichete: una de deschidere <tag> și una de închidere </tag>, dar există și etichete singulare (exemplu: <br> este o etichetă care introduce un sfârșit de linie). Browserul recunoaște aceste etichete, le interpretează și afișează rezultatul. Toate fișierele HTML încep cu eticheta <html> și se termina cu eticheta </html> și au extensia .html sau .htm. [13]

Un document HTML este format din:

versiunea documentului

head-ul delimitat de etichetele <head> și </head> conținând titlul, descrieri de tip meta, script-uri și legături externe

body-ul cu etichetele <body> și </body> care conține corpul documentului, ceea ce browserul va afișa pe ecran

Vizualizarea paginior HTML se face folosind un browser. Acesta recunoaște codul HTML și afișează pe ecran rezultatul.

CSS (Cascading Style Sheets) este un limbaj de stilizare folosit pentru formatarea unei pagini WEB. Îmbunătățește aspectul paginii și ajută la obținerea unui cod HTML mult mai ordonat și mai simplu. A fost creat în primul rând pentru a face o separare între prezentare și conținut. De asemenea produce și o încărcare mai rapidă a paginii deoarece folosirea CSS implică o micșorare a codului HTML. [14]

Codul CSS se poate stoca folosind trei modalități:

folosind un fișier extern cu extensia .css

intern, în head

inline, în interiorul tag-ului HTML

Cea mai folosită metodă este fișierul extern datorită simplității cu care se realizează o eventuală modificare a site-ului. Pentru aplicarea fișierului .css asupra paginii se inserează între tag-urile <head> o trimitere folosind tag-ul <link>.

CSS-ul intern se folosește doar în condițiile în care pagina are caracteristici proprii pe care nu le împarte cu celelalte pagini. Este identic cu cel extern doar că se folosește în interiorul paginii HTML folosind tag-ul <style> și atributul <type = “text/css”>. De obicei nu este recomandată folosirea sa.

CSS inline se referă la introducerea codului CSS în interiorul tag-urilor HTML, dar folosind această metodă pierdem avantajele CSS-ului extern cum ar fi simplitatea, lizibilitatea sau o încărcare mai rapidă a paginilor.

SQL (Structured Query Language) este un limbaj de programare folosit pentru managementul datelor în sistemele de gestiune a bazelor de date relaționale. Inițial a fost lansat de IBM apoi standardizat de ANSI și ISO. Pe lângă varianta standardizată există o mulțime de versiuni și dialecte.

SQL a fost creat având ca scop îndeplinirea urmatoarelor caracteristici:

– crearea bazelor de date și structurilor relaționale

– inserare, modificare și stergere a datelor din relatii

– interogări în baza de date

SQL are 2 componente majore [15]:

1) un limbaj de definire a datelor pentru definirea structurii bazelor de date și controlul accesului la date:

CREATE TABLE – pentru crearea unui tabel

ALTER TABLE – modificarea structurii unui tabel existent

TRUNCATE TABLE – șterge toate datele din tabel

DROP TABLE – șterge tabelul

2) un limbaj de manipulare a datelor care permite o serie de operații:

INSERT – pentru inserarea datelor in tabel

SELECT – pentru afisarea datelor

UPDATE – actualizarea unui set de date

DELETE – șterge un set de date

În proiectarea unui tabel trebuie avută în vedere definirea structurii sale: definirea coloanelor, definirea constrângerilor de integritate, definirea parametrilor și definirea spațiului unde se creează tabela.

Constrângerile de integritate sunt reguli care se aplică în cadrul tabelului reprezentând norme de funcționare. Aceste reguli se verifică automat atunci când se execută o operație și în cazul în care nu se validează, se generează o eroare și se întrerupe operația.

Constrângerile de integritate pot fi [16]:

– NOT NULL – câmpul nu poate avea valoarea null

– UNIQUE – mai multe inregistrări nu pot avea aceeași valoare

– PRIMARY KEY – se defineste o cheie primară (unică)

– FOREIGN KEY – definește o cheie străină (stabilește o relație între o cheie primară și una unică în același tabel sau în tabele diferite)

– CHECK – forțează verificarea unei condiții

3.3 Kali Linux și uneltele sale

Linux este un grup de sisteme de operare de tip Unix care folosesc nucleul Linux. Linux oferă suport și poate fi instalat pe o mare varietate de hardware cum ar fi: computere, telefoane mobile, tablete sau console video, dar cea mai largă utilizare o are în cadrul serverelor. Dezvoltarea primului sistem Linux a fost începută de Linus Torvalds, un inginer finlandez, care și-a dorit un sistem similar cu Minix, dar cu limitări mai putine. Astfel Linux este un sistem open source sub licență publică generală GNU GPL. [17]

Componentele unui sistem Linux sunt [18]:

– hardware (memorie, hard-disk)

– nucleu (kernel)

– shell

– utilitare

Figura 3.1 Sistemul Linux [19]

Nucleul este componenta sistemului de operare care se încarcă în memorie atunci cand se pornește computerul. Acesta controlează accesul la dispozitivele hardware ale calculatorului, gestionează procesele ( deoarece Linuxul este un sistem de operare multitasking ) și memoria. Nucleul rămâne încărcat în memorie până la oprirea calculatorului.

Shell-ul este interfața cu nucleul. Acesta ascunde complexitatea kernel-ului și preia comenzile de la utilizator care sunt executate de kernel.

Utilitarele sunt programe care descriu funcționalitățile unui sistem de operare. În momentul lansării lor în execuție sunt încărcate de pe hard-disk în memorie, iar dupa terminarea execuției memoria este eliberată.

Printre avantajele folosirii unui sistem bazat pe linux se numără [20]:

– portabil ( poate rula pe siseme hardware diferite)

– open source (este gratuit și se lucrează constant la îmbunătățirea lui prin contribuția echipelor de dezvoltare)

– utilizatori multiplii pot accesa resurse comune în același timp

– programe multiple pot rula pe sistem în același timp

– securitate ( Linux dispune de măsuri de securitate cum ar fi autentificarea sau criptarea datelor)

– shell ( program special de interpretare a comenzilor )

Sistemele de operare Linux sunt disponibile sub variante numite distribuții. Unele din cele mai populare distribuții sunt: Ubuntu, Mint, Arch, Kali.

Kali este distribuția de Linux creată și dezvoltată de Offensive Security. Această distribuție este bazată pe Debian GNU/Linux și a fost concepută în special pentru informatica criminalistică și pentru testarea securității. Kali este versiunea mai nouă și îmbunătățită a binecunoscutului sistem de operare BackTrack Linux, folosit de pentestări și atacatori în trecut și vine cu sute de unelte utile în testare.[8]

Pentru a face din Kali o distribuție cât mai apropiată de nevoile utilizatorilor acesta vine cu o serie de modificări:

– utilizator unic ( deoarece majoritatea programelor care rulează pe Kali au nevoie de drepturi de execuție de la “root” s-a ales varianta conectării doar cu acest utilizator care are drepturi asupra întregului sistem de operare)

– în mod implicit, serviciile de internet și bluetooth-ul sunt dezactivate

– Kali Linux dispune de un nucleu modificat specializat pe wireless injection

– sursele de descărcare a uneltelor sunt menținute într-un număr cât mai mic din motive de securitate

Linux Kali dispune de o varietate de unelte folosite pentru testarea vulnerabilităților sau analiza traficului dintr-o rețea. Unele din cele mai folosite dintre acestea sunt:

Sqlmap este o unealtă open source de testare foarte puternică care automatizează sistemul de detectare a vulnerabilităților unui site la sql injection și preluare a bazelor de date. Sqlmap nu se folosește doar la testare ci și pentru a exploata SQL Injection prin extragerea datelor din baza de date sau chiar modificarea tabelelor. Pentru linux kali nu este nevoie de instalare pentru sqlmap deoarece vine preinstalat, dar pentru celelalte poate fi procurat de la link-ul http://sqlmap.org . Deoarece este conceput în python sistemul de operare trebuie să aibă python instalat. [21]

Nmap este un scanner de securitate folosit pentru crearea unei hărți a rețelei utilizat în descoperirea host-urilor și serviciilor din rețea. Funcționarea acestui instrument se bazează pe trimiterea unor pachete speciale către host și interpretarea rezultatelor. Avantajul acestui scaner de porturi este că ia in considerare diferite particularități ale rețelei cum ar fi traficul din rețea la acel moment sau latența.[22]

Wireshark este un instrument gratuit folosit pentru capturarea și analizarea traficului din rețea. Acesta are o interfață grafică care simplifică lucrul cu utilizatorul și o varietate de funcționalități incluzând filtrarea și sortarea informației.

Nikto este un scanner open source pentru servere WEB folosit pentru testarea a peste 6500 fișiere potențial periculoase sau CGI-uri, aplicații depășite de pe server și alte teste asupra serverului.

BeEF este un instrument de testare conceput pentru a lansa atacuri și testa vulnerabilitățile browserului WEB. De asemenea este o unealtă excelentă pentru testarea slăbiciunilor browser-ului la atacurile de tip XSS sau alte atacuri ce implică injectarea.

3.4 Baza de date a aplicației. Diagrama bazei de date

Baza de date a aplicației se numeste ddbase și are în componență două tabele legate între ele printr-o cheie străină. Prima tabelă, users, este tabela care ține evidența conturilor de utilizator, iar cea de-a doua este tabela posts care gestionează postările utilizatorilor conectați. Pentru crearea bazei de date s-a folosit terminalul din Kali Linux, iar pentru vizualizarea grafică MySQL Workbench.

După logarea pe sistemul de operare se deschide terminalul și se porneste serverul MariaDB prin rularea comenzii:

service mysql start

Pentru acest proiect am creat un utilizator nou pentru baza de date căruia i-am atribuit toate drepturile pe care le are un root (administrator). Înainte de a face asta este nevoie de conectarea la baza de date folosind ca utiliator root, nefiind necesară introducerea unei parole. Implicit baza de date MariaDB nu are parolă, dar pentru securitate îi vom atribui ulterior una.

Pentru conectarea la MariaDB rulăm în terminal comanda:

mysql –u root –p

Următoarea etapă constă în crearea unui utilizator nou, stringdot, căruia îi atribuim parola Ninja123, parolă ce conține litere mici, litere mari și numere din considerente de securitate.

CREATE USER ‘stringdot’@’localhost’ IDENTIFIED BY ‘Ninja123’;

Crearea bazei de date ddbase se face rulând urmatoarea comandă:

CREATE DATABASE ddbase;

Acum că avem baza de date vom atribui utilizatorului creat, stringdot, toate permisiunile necesare execuției operațiilor într-o bază de date.

GRANT ALL PRIVILEGES ON *.* TO ‘stringdot’@’localhost’;

După setarea permisiunilor avem nevoie de o reactualizare a privilegiilor.

FLUSH PRIVILEGES;

În continuare vom parcurge urmatoarele etape pentru crearea bazei de date:

logarea folosid userul nou creat

mysql –u stringdot –p

*introducere parolă*

afișare baze de date

show schemas;

selectare baza de date ddbase

use ddbase;

crearea tabelei users

CREATE TABLE users(

id_user int(11) NOT NULL auto_increment,

name varchar(45) NOT NULL,

username varchar(45) NOT NULL,

password varchar(45) NOT NULL,

email varchar(45) NOT NULL,

gender varchar(45) NOT NULL,

avatar varchar(100),

UNIQUE (username),

PRIMARY KEY(id_user)

);

crearea tabelei posts

CREATE TABLE posts(

id_post int(11) NOT NULL auto_increment,

username varchar(45) NOT NULL,

postare varchar(1000) NOT NULL,

date_post datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

viewz varchar(10),

id int(11),

PRIMARY KEY(id_post),

FOREIGN KEY(id) REFERENCES users(id_user)

);

Pentru crearea diagramei bazei de date se pornește MySQL Workbench apoi se selectează din secțiunea “Models” opțiunea “Create EER Model from Database”. Introducem parola utilizatorului stringdot, selectăm baza de date ddbase și obținem urmatoarea diagramă care exemplifică în mod vizual structura tabelelor și tipul relației dintre acestea:

Figura 3.2 Diagrama bazei de date ddbase

3.5 Arhitectura aplicației. Diagrama UML

Calitatea unei aplicații este influențată major de arhitectura acesteia. O arhitectură neadecvată duce la performanțe scăzute, dezvoltare greoaie, probleme în cazul modificării aplicației, întreținere dificilă sau lipsa scalabilității. Pe langă acestea este nevoie și de o analiză a constrângerilor tehnice cum ar fi serverele sau conexiunea.

Atunci când se începe dezvoltarea unei aplicații WEB trebuie luat în calcul un număr mare de de cerințe cum ar fi: calitatea, funcționalitatea sau posibilitatea integrării acesteia. Un impact important asupra aplicației îl are alegerea tipului de arhitectură utilizat.

Dacă serverul și clientul sunt amplasate pe același sistem spunem ca avem de-a face cu o arhitectură cu un singur nivel. Avantajele acestei arhitecturi constau în simplitatea și eficiența sa, dar presupune costuri ridicate deoarece este nevoie de un echipament performant.

Arhitectura pe 2 nivele sau arhitectura client-server presupune existența unui server care oferă servicii unui utilizator. Comunicarea este realizată direct fară a exista intermediari. Într-o aplicație normală clientul vizualizează informația în browser, procesează aplicațiile și trimite cereri către server, iar aplicația server controlează accesul la date. Cele două părți împart logica aplicației. Problema arhitecturii cu 2 nivele o reprezintă stabilirea unui plan de executare a prelucrărilor pentru obținerea unui echilibru astfel încât să nu avem o încărcare excesivă a serverului sau a clientului.[23]

Figura 3.3 Arhitectura pe 2 nivele

Faptele au confirmat că acest model pe 2 nivele are situații când este depășit și a apărut necesitatea introducerii celui de-al 3-lea nivel. Modelul pe 3 nivele introduce între client și baza de date un server de aplicație prin a cărui introducere se ușurează activitatea serverului prin distribuirea sarcinilor pe mai multe sisteme. În acest model clientului îi revine doar interfața de sistem cu utilizatorul, logica aplicației revenind nivelului nou introdus, serverul de aplicație, iar ultimul nivel se ocupă cu accesul la informația stocată în baza de date.

Figura 3.4 Arhitectura pe 3 nivele

Dear Diary este o aplicație care folosește modelul arhitectural cu un singur nivel, dar a fost testată cu succes și pentru cazul folosirii arhitecturii cu două nivele prin legarea în rețea a sistemului conținând întreaga aplicație și a unui laptop. Pentru conectarea la site avem nevoie de IP-ul sistemului pe care se află aplicația. Acest IP il vom introduce în URL-ul browserului laptopului.

Ideal pentru o aplicație de acest tip este folosirea unei arhitecturi pe 3 nivele datorită beneficiilor oferite:

scalabilitate (este superioară deoarece codul aplicației și baza de date sunt separate)

micșorarea traficului în rețea

flexibilitate (fiecare componentă poate fi înlocuită fară a le afecta pe celalalte)

UML este un limbaj de modelare vizual, orientat pe obiect, care definește structura și proprietățile dinamice ale unei aplicații. Acest limbaj tratează aspecte ca proiectarea bazelor de date sau interacțiunea porțiunilor de cod și este deosebit de important pentru proiectele cu o complexitate mare deoarece eficientizează și clarifică elementele abstracte. [24]

UML pune la dispoziție o gamă variată de diagrame pentru modelarea pentru acoperirea întregului proiect software [25]:

– diagrame de activitate (reprezentarea comportării unei activități la rularea programului)

– diagrame de clase (reprezentarea vizuală a claselor și a legăturilor dintre ele)

– diagrame de componente (se folosesc când părți ale sistemului software comunică între ele prin intermediul interfețelor)

– diagrame use case (sunt folosite în cadrul întâlnirilor dintre dezvoltator și client pentru a explica interacțiunea dintre actor, element extern, și sistem)

– diagrame deployment (reprezentarea componentelor fizice ale sistemului și componentele software din acestea )

– diagrame de secvențe ( reprezentarea relației între obiecte în timpul desfășurării unei operații)

– diagrame package (reprezentarea dependențelor între pachetele din componența sistemului)

Figura 3.5 Diagrama deployment a aplicației Dear Diary

Figura 3.6 Diagrama user case a aplicației Dear Diary

Diagrama use case și diagrama deployment a aplicației Dear Diary a fost creată folosind mediul de editare de pe siteul https://creately.com/diagram-type/use-case .

4. Prezentarea aplicatiei. Functionalități principale și măsuri luate pentru securizarea aplicației

Dear Diary este o aplicație WEB destinată utilizatorilor de orice vârstă care caută un loc pentru a-și expune gândurile, pentru a stoca amintiri sau pentru a citi frânturi din viața altora.

Un vizitator al siteului are drepturi limitate în ceea ce privește vizualizarea conținutului. De asemenea acesta nu poate face nici un fel de postare. Pentru a beneficia de toate funcționalitățile siteului este recomandată înregistrarea unui cont de utilizator.

Figura 4.1 Bara de logare utilizator neînregistrat

Vizitatorul își poate crea cont apasând butonul “Sign Up” din bara de logare și completarea formularului de înregistrare aferent. Toate câmpurile formularului sunt obligatorii.

4.2 Formular de înregistrare a contului de utilizator

După ce utilizatorul completează toate câmpurile și apasă butonul “Sign Up” se verifică dacă adresa de email este validă, iar usernameul să nu fie folosit de alt utilizator. În cazul în care este deja folosit apare un mesaj de eroare. Pentru varianta aplicației nesecurizate corespunzător am folosit la criptarea parolei functia md5 care livrează ca rezultat o valoare fixă de 128 biți. Această funcție de hash nu mai este sigură și poate fi relativ ușor de spart prin brute force sau metoda dicționarului.

Pentru varianta aplicației sigure am ales ca metodă de hash SHA256. Dacă un atacator ar încerca o tehnică de atac de tip brute force având la dispoziție un calculator performant și pentru o lungime a parolei de 10 caractere și parola fiind alcătuită din caractere alfanumerice ar dura 65 ani pentru descoperirea sa. De asemenea am introdus pentru câmpul parolă o lungime minimă de 6 caractere.

Ca protecție suplimentară s-ar fi putut introduce funcționalitatea ca după un număr de încercări eronate consecutive de logare ale aceluiași IP să fie nevoit să aștepte un anumit timp pentru a putea reîncerca.

Înainte de a începe crearea formularului de înregistrare se deschide sesiunea folosind funcția session_start(), apoi se include conectarea la baza de date folosind funcția require_once(dbconnect.php).

Sesiunile în PHP reprezintă o modalitate prin care anumite informații se pot menține de la o pagină la alta. O sesiune începe atunci când un script apelează funcția session_start() și se încheie atunci când se închide browserul.

Figura 4.3 Conectarea la baza de date

În cazul în care conectarea nu a reușit se declanșează un mesaj de eroare.

După includerea conectării la baza de date se verifică dacă formularul conține date la apăsarea butonului “Sign Up” sau dacă este vreun câmp necompletat, iar dacă sunt toate completate se preiau datele din formular.

Figura 4.4 Preluare date din formular

Pentru varianta aplicației sigure pentru criptarea parolei se folosește functia hash().

$password = hash( ‘sha256’, $_POST[‘register_password’]);

Inserarea datelor în baza de date se face prin formarea și execuția query-ului de inserare folosind funcția mysqli_query() care primește ca argumente numele conexiunii și numele query-ului. În cazul în care nu s-a putut face inserarea apare un mesaj de eroare, iar daca a reușit afișează succes și posibilitatea de a reveni la pagina principală pentru logare.

Figura 4.5 Inserare date în baza de date

Pentru a proteja formularul de înregistrare împotriva atacurilor de tip SQL Injection pentru aplicația sigură putem folosi declarații pregătite sau funcția mysqli_real_escape_string() care este utilizată pentru filtrarea caracterelor speciale. În practică este de preferat folosirea declarațiilor pregătite deoarece sunt considerate mai sigure. Inserarea se realizează în tabela users în câmpurile sugerate în paranteză.

Figura 4.6 Inserare date în baza de date folosind declarații pregătite

După crearea contului de utilizator clientul este gata pentru logarea și folosirea tuturor funcționalitățilot oferite de aplicație. Logarea se realizează folosind numele de utilizator (username) și parola alese la înregistrare.

Formularul de logare necesită conectarea la baza de date și compararea datelor preluate din formular cu cele folosite la înregistrare. Dacă acestea coincid se porneste sesiunea și se face o redirecționare către pagina “Public”. În cazul în care numele de utilizator nu a fost găsit in baza de date sau parola nu coincide se generează un mesaj de eroare și opțiunea de revenire la pagina principală.

Pentru a compara parola din formular cu cea din baza de date trebuie realizată o criptare a parolei folosind md5 pentru varianta nesecurizată a aplicației și sha256 pentru varianta sigură.

Figura 4.7 Verificare username și parola varianta nesigură

Pentru varianta sigură putem folosi funcțiile mysqli_real_escape_string() care filtrează caracterele speciale și stripslashes()care elimină backslashurile și transformă backslashurile duble în backslashuri simple asupra datelor preluate din formular.

Figura 4.8 Protecție împotriva SQL Injection folosind funcții

La fel ca și în cazul formularului de înregistrare vom alege însă declarațiile pregătite deoarece sunt mai sigure.

Figura 4.9 Protecție împotriva SQL Injection folosind declarații pregătite

Delogarea se realizează prin distrugerea sesiunii folosind funcția session_destroy().

După logarea în contul de utilizator meniul siteului se modifică în felul urmator:

Figura 4.10 Meniu site utilizator neînregistrat

Figura 4.11 Meniu site utilizator înregistrat

Home reprezintă pagina de pornire cu care este întâmpinat un vizitator al siteului. Aceasta conține informații despre specificul aplicației și funcționalitățile oferite de site.

Pagina Contact este disponibilă atât vizitatorilor cât și utilizatorilor înregistrați. Reprezintă modalitatea prin care clienții pot contacta administratorul siteului pentru a oferi sugestii cu privire la aplicație sau a semnala nereguli.

Profile reprezintă pagina personală a fiecărui utilizator. Aceasta conține informațiile despre utilizator sugerate la înregistrare, un formular prin care se pot face postări (publice sau private), un formular de upload pentru avatarul personal și postările personale ale utilizatorului. Dacă utilizatorul se află pe profilul propriu acesta vede atât postările publice cât și cele private, iar daca se află pe profilul unui alt utilizator acesta poate vedea doar postările de natură publică.

Figura 4.12 Personal feed

Postările pe site se fac prin intermediul unui textarea. Implicit postările sunt publice; pentru postarea unui text privat se bifează căsuța “private”. Inserarea textului se face în tabela posts în câmpul post, tipul postării se inserează în câmpul viewz, iar pentru identificare se inserează numele de utilizator în coloana username.

Pentru varianta nesecurizată a aplicației se verifică daca postarea conține text, iar dacă aceasta conține se verifică tipul postării (privat sau public) și se face inserarea. Numele de utilizator transmis în tabela posts este username-ul cu care este conectat clientul .

Figura 4.13 Inserare postare în baza de date

Această variantă nu este numai nesigură ci este și generatoare de erori atunci când se încearcă introducerea unui text conținând apostof. Pentru a securiza postarea mesajelor vom folosi declarațiile pregătite.

Figura 4.14 Inserare postare în baza de date folosind declarații pregătite

Afișarea postărilor se face în ordine descrescătoare în funcție de timpul la care s-a făcut postarea. La momentul postării unui mesaj se preia automat data și ora curentă a serverului bazei de date folosind funcția CURRENT_TIMESTAMP din SQL.

Afișarea pe pagina Public se face în funcție de conținutul coloanei viewz din tabela posts; se vor afișa doar postările publice ale tuturor utilizatorilor. Același lucru se întâmplă și la vizitarea profilului altui utilizator; se pot vizualiza doar mesajele publice. Pe profilul personal clientul va vedea tot conținutul, fie el public sau privat.

În teorie folosirea declarațiilor pregatite doar pentru porțiunile care preiau date de la utilizator este suficientă pentru blocarea atacurilor de tip SQL Injection, dar pentru a fi siguri că nu trec neintenționat cu vederea anumite scenarii și să lase loc unei vulnerabilități, dezvoltatorii aleg să securizeze toate interogările către baza de date.

Dear Diary este o aplicație unde autentificarea și autorizarea accesului se face pe baza unui username și a unei parole. Problema cu acest tip de securitate este că datele transmise între client (browser) și server nu sunt protejate și pot fi interceptate. O altă problemă este că utilizatorul nu are nici o modalitate de a stabili dacă serverul WEB este cel corect.

Rezolvarea acestei probleme o reprezintă Protocolul SSL. Acest protocol asigură un canal de comunicații sigur între utilizator și serverul WEB. Pentru a asigura clienții că serverul la care se conectează este cel corect se folosesc certificate SSL semnate digital.[26]

Protocolul SSL folosește doua tipuri de criptare:

– simetrică: se folosește aceeași cheie pentru criptare și decriptare. Este utilă în criptarea cantităților mari de date deoarece este mai rapidă.

– asimetrică: utilizează o pereche de chei diferite (o cheie publică folosită pentru criptare și o cheie privată folosită la decriptare; cele două chei se pot utiliza și vice-versa)

Pentru utilizarea acestui protocol serverul are nevoie de un certificat SSL de la autoritatea care se ocupă cu furnizarea acestui serviciu. Browserul verifică automat aceste certificate și semnalează utilizatorul în cazul in care validarea eșuează.

Certificatele SSL conțin cheia publică din setul de chei asimetrice. Cu această cheie publică se codifică cheia sesiunii și se transmite serverului care o decodifică folosind cheia sa privată. După stabilirea conexiunii sesiunea de comunicații între server și client este criptată și decriptată folosind cheia sesiunii.

SSL previne atacurile de tipul man in the middle (interpunerea atacatorului între client și server și ascultarea traficului) deoarece traficul care ar ajunge la hacker este criptat.

Site-urile care posedă certificat SSL sunt accesate folosind prefixul HTTPS. Acestea conțin în bara de adrese un lacăt verde care identifică conexiunea ca fiind sigură.

Figura 4.15 Bara de adrese a unui site care foloseste SSL

5. Prezentare instrumente folosite în testare

6. Testarea aplicației nesecurizate

Deoarece SQL Injection este una din cele mai comune probleme ale aplicațiilor WEB vom începe testarea Dear Diary cu aceasta. Principiul pe care se bazează acest tip de atac este inserarea unei secvențe SQL într-o intrare a siteului pentru a determina executarea anumitor operații asupra bazei de date. În anumite circumstanțe un hacker poate chiar afla conținutul întregii baze de date.

Un prim test pentru identificarea unui site vulnerabil la SQL Injection este adăugarea în bara de adrese a browserului a unui apostrof la sfârșitul URL-urilor de forma http://site.xyz/index.php?id=1.

Un URL cu structură asemănătoare se găsește și pe pagina Profile a aplicației noastre:

Figura 6.1 Link posibil vulnerabil la SQL Injection

După introducerea apostrofului în URL am primit eroarea: Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/profile.php on line 100 ceea ce indică că pagina e vulnerabilă și putem continua testarea aplicației .

Înainte de a afla mai multe informații despre baza de date avem nevoie de numărul de coloane. Pentru a face asta vom introduce în URL structura order by 1–. Se incrementează acel număr până la primirea unei erori.

Pentru Dear Diary primim eroarea Unknown column ‘8’ in ‘order clause’ ceea ce semnifică că tabela noastră are 7 coloane și putem trece la verificarea funcției UNION (funcție ce combină rezultatul mai multor select-uri) ce ne va fi de ajutor în selectarea mai multor informații din baza de date în aceeași declarație.

Vom folosi urmatoarea construcție:

http://localhost/profile.php?user=-COSMIN union all select 1,2,3,4,5,6,7–

Injectarea manuală necesită un efort susținut din partea atacatorului și nu este garantat succesul găsirii unei vulnerabilități. Din fericire există numeroase instrumente de injectare automată a codului SQL care care îmbunătățesc extrem de mult posibilitatea succesului în privința atacului.

Testarea aplicației pentru găsirea vulnerabilităților la SQL Injection implică 2 etape [27]:

– scanarea pentru găsirea vulnerabilităților (căutarea intrărilor din aplicație care pot fi exploatate sau alte ”găuri” specifice. Exemple: Acunetix, Arachni, Grabber )

– SQL Injection propriu-zis ( după identificarea vulnerabilităților începe exploatarea lor )

Bibliografie

[1] – Prof. Felicia Ionescu , Curs de prelucrare a bazelor de date

[2] – Modelul de date relațional, http://contabilitatesiinformaticadegestiune.blogspot.ro/2011/11/modelul-de-date-relational.html,

accesat la data: 23.05.2017

[3] – https://ro.wikipedia.org/wiki/Server_web, accesat la data: 28.05.2017

[4] – Sonia Jahid and Imranul Hoque, Security issues of Web Server, https://www.academia.edu/472431/SECURITY_ISSUES_OF_WEB_SERVER,

accesat la data: 29.05.2017

[5] – Diana Bărbat, Securitatea bazelor de date – Atacuri și metode de control,

http://asociatia-profesorilor.ro/securitatea-bazelor-de-date-atacuri-si-metode-de-control.html

accesat la data: 01.06.2017

[6] – Michael Mimoso, Top Web application security problems identified,

http://searchsecurity.techtarget.com/news/873823/Top-Web-application-security-problems-identified

accesat la data: 28.05.2017

[7] – Ghid de securizare a aplicațiilor WEB,

https://www.cert.ro/vezi/document/ghid-securizare-aplicatii-web

accesat la data: 05.06.2017

[8] – Kali Linux, https://en.wikipedia.org/wiki/Kali_Linux, accesat la data: 08.06.2017

[9] – Apache HTTP Server, http://clubtech.ro/viewtopic.php?t=1746, accesat la data: 08.06.2017

[10] – MariaDB vs MySQL, http://www.iulianhalac.com/adio-mysql-a-ajuns-la-sfarsit/

[11] – Moving to MariaDB, https://mariadb.com/kb/en/mariadb/moving-to-mariadb/

[12] – PHP, https://ro.wikipedia.org/wiki/PHP, accesat la data: 09.06.2017

[13] – HTML, https://ro.wikipedia.org/wiki/HyperText_Markup_Language, accesat la data de 09.06.2017

[14] – CSS, https://en.wikipedia.org/wiki/Cascading_Style_Sheets, accesat la data de 09.06.2017

[15] – Thomas Cannolly and Carolyn Begg, Database Systems – A practical approach to Design, Implementation, and Management, Fourth Edition, pp 113

[16] – Limbajul SQL, http://www.runceanu.ro/adrian/wp-content/cursuri/bd2013/C9-BD.pdf,

accesat la data de 13.06.2017

[17] – Linux, https://ro.wikipedia.org/wiki/Linux, accesat la data de 12.06.2017

[18] – Linux, http://vega.unitbv.ro/~jipa/ui/linux/comp_login.html, accesat la data de 12.06.2017

[19] – Sistemul Linux, Figura 3.1, http://vega.unitbv.ro/~jipa/ui/img/compon.jpg

[20] – Linux, https://www.tutorialspoint.com/operating_system/os_linux.htm,

accesat la data de 12.06.2017

[21] – Sqlmap, http://tools.kali.org/vulnerability-analysis/sqlmap, accesat la data de 12.06.2017

[22] – Nmap, https://ro.wikipedia.org/wiki/Nmap, accesat la data de 18.06.2017

[23] – Arhitectura Client Server, https://ro.scribd.com/doc/43124974/Arhitectura-Client-Server, accesat la data de 13.06.2017

[24] – Unified Modeling Language, https://ro.wikipedia.org/wiki/Unified_Modeling_Language, accesat la data de 14.06.2017

[25] – UML diagram types, http://creately.com/blog/diagrams/uml-diagram-types-examples, accesat la data de 14.06.2017

[26] – Ce este SSL?, https://www.domreg.ro/ce-este-ssl.shtml, accesat la data de 18.06.2017

[27] – SQL Injection tools for automated tests, http://searchsqlserver.techtarget.com/tip/SQL-injection-tools-for-automated-testing, accesat la data de 19.06.2017

Figuri

Figura 3.1 – http://vega.unitbv.ro/~jipa/ui/img/compon.jpg

Similar Posts