Jump to content
bogdi19

How to Secure Your Website

Recommended Posts

Contents

Preface ............................................. 2

Organization of This Book............................ 3

Intended Reader ..................................... 3

What is Revised in the 5th Edition................... 3

Fixing Vulnerabilities .............................. 4

?Fundamental Solution and Mitigation Measure?......... 4

1. Web Application Security Implementation........... 5

1.1 SQL Injection.................................... 6

1.2 OS Command Injection..............................10

1.3 Unchecked Path Parameter / Directory Traversal....13

1.4 Improper Session Management.......................16

1.5 Cross-Site Scripting .............................22

1.6 CSRF (Cross-Site Request Forgery).................29

1.7 HTTP Header Injection............................ 33

1.8 Mail Header Injection ........................... 37

1.9 Lack of Authentication and Authorization ........ 40

2. Approaches to Improve Website Security ........... 42

2.1 Secure Web Server................................ 42

2.2 Configure DNS Security .......................... 43

2.3 Protect against Network Sniffing................. 44

2.4 Secure Password.................................. 45

2.5 Mitigate Phishing Attacks ....................... 47

2.6 Protect Web Applications with WAF................ 50

2.7 Secure Mobile Websites .......................... 56

3. Case Studies...................................... 63

3.1 SQL Injection.................................... 63

3.2 OS Command Injection............................. 69

3.3 Unchecked Path Parameters........................ 72

3.4 Improper Session Management...................... 74

3.5 Cross-Site Scripting ............................ 77

3.6 CSRF (Cross-Site Request Forgery)................ 88

3.7 HTTP Header Injection............................ 93

3.8 Mail Header Injection ........................... 94

Postface............................................. 97

References........................................... 98

Terminology.......................................... 100

Checklist............................................ 101

CWE Mapping Table.................................... 105

http://www.ipa.go.jp/security/vuln/documents/website_security_en.pdf

Edited by bogdi19
  • Upvote 1
Link to comment
Share on other sites

Eu sunt de parere ca daca serverul este configurat si administrat corespunzator nu este nevoie sa mai sanitizezi fiecare variabila si chestiuta!

Principala protectie ar trebui sa fie un server securizat(module pentru diferite vulnerabilitati, sandbox pe fiecare domeniu, chiar un web firewall), daca ai un proiect mediu spre mare este imposibil sa nu iti scape ceva, mai ales daca lucrezi pentru un client si ai un termen limita.

Link to comment
Share on other sites

Sa securizezi partea de aplicatie web din server e stupid si inutil. Daca programatorul e prost, merita orice deface, e pacat ca sysadminii isi pierd timp sa repare problemele programatorilor...

Nu e inutil si nu e stupid, cand ai proiecte foarte mari unde modifici/adaugi module foarte des e o solutie foarte buna, e posibil ca anumite parti sa iti scape, crezi ca wordpress.com, tumblr.com verifica fiecare bucata de cod sau au grija sa aiba si polite de asigurare!

Daca serverele ar fi mai secure nu ar mai fi atatea probleme, oricat de bun programator ai fi tot iti scapa anumite buguri, sunt foarte multe exemple de cms-uri care au vulnerabilitati, asta inseamna ca programatorii sunt prosti ?

Link to comment
Share on other sites

Daca sunt sysadmin, nu e problema mea sa pun filtre pentru "SeLeCt" sau "<script>" pentru ca nu e problema mea ca programatorul nu poate filtra asta. Da, un sysadmin bun is bate capul si isi pierde timpul cu asa ceva, dar nu este problema lui.

Intr-adevar, sunt multe scripturi publice vulnerabile, dar tot nu vad ce legatura ar putea avea sysadmin-ul. Asta tine de Project Manager si de cati bani baga in proiect, daca nu baga, folosesc un script public si "bum", problema lor.

Sysadminul trebuie sa fie atent la problemele lui, configurarea serverului: php.ini, permisiuni fisiere, sub ce utilizatori ruleaza procesele si tot asa. Dar de multe ori vin programatori cu request-uri ca "Vreau 9999 time limit", vreau "9999 max_file_upload" sau mai stiu eu ce, fara un motiv serios si de aici apar problemele. Din moment ce vulnerabila e aplicatia web, programatorul e de vina.

Link to comment
Share on other sites

In plus, eu ca programator vreau sa fac un mini-cms, care va accepta si cod html/javascript. Daca sysadminul imi filtreaza <script>, imi ingreuneaza si mie munca. In plus, daca eu fac un script bazandu-ma pe acel server si pe securitatea lui, cand il portez pe alt server, configurat diferit (poate chiar diferente minore), risc sa deschid gauri mari de securitate, care la testele initiale nu au fost gasite, datorita serverului.

Link to comment
Share on other sites

In plus, eu ca programator vreau sa fac un mini-cms, care va accepta si cod html/javascript. Daca sysadminul imi filtreaza <script>, imi ingreuneaza si mie munca. In plus, daca eu fac un script bazandu-ma pe acel server si pe securitatea lui, cand il portez pe alt server, configurat diferit (poate chiar diferente minore), risc sa deschid gauri mari de securitate, care la testele initiale nu au fost gasite, datorita serverului.

Cred ca iti dai seama ca eu ma refeream la chestii generale, nu ma refeream la mini-cms-uri, ma refeream la cms-uri mari(vbulletin, phpbb...) unde o protectie in plus nu strica, ma refeream la site-uri pentru firme mari(nu isi schimba hostul de la x la y) si in ultimul rand, nu cred ca ti-ai dori sa trimiti cod html si js!

Link to comment
Share on other sites

Cum sa securizezi un website?

Reguli care propun sa fie incluse in Systems development life cycle (SDLC)

Regula numarul 1 sa nu iti hostezi site-ul la un alt provider

(asta e doar parerea mea personala)

Regula numarul 2 sa te gandesti la calitate, nu la cantitate

(aceasta regula acopera majoritatea vulnerabilitatilor web)

Regula numarul 3 sa mergi la prasit daca nu te duce capul de altceva indiferent titlul de studiu pe care il detii

(Daca esti varza , esti varza , o diploma in plus una in minus nu iti schimba nimic .Aici am mai rezolvat jumate de vulnerabilitatii peste noapte)

In 3 puncte am rezolvat jumatate din problemele firmelor de hosting existente pe piata si jumatate din problemele celor care vor sa faca bussines pentru cantitate (avem un procent mare de indivizi cu dorinta de a se imbogatii).

Edited by pyth0n3
Link to comment
Share on other sites

Cred ca iti dai seama ca eu ma refeream la chestii generale, nu ma refeream la mini-cms-uri, ma refeream la cms-uri mari(vbulletin, phpbb...) unde o protectie in plus nu strica, ma refeream la site-uri pentru firme mari(nu isi schimba hostul de la x la y) si in ultimul rand, nu cred ca ti-ai dori sa trimiti cod html si js!

Uite, un "mini-cms" de genul care ziceam eu, este file-managerul din cPanel, care culmea... se muta de la hostul x, la hostul y. Si culmea, cand editezi un fisier, trimite cod html, js, php sau orice alt cod, prin ajax... Gandeste la scara larga, nu la mini-cms-uri facute de un mini-programator in pauza de masa.

O alta porcarie de mini-cms care te lasa sa trimiti <script> si chiar cod php printr-un formular, este WordPress. Ai incercat vreodata sa modifici tema de la wordpress direct din admin? Daca nu, te anunt ca se poate (nu la wordpress.com, la cel hostat de tine). Daca dai peste un sysadmin "comunist" care nu te lasa sa faci nici o setare, cum folosesti tu wordpress-ul? :| Default? Nu, mersi.

Link to comment
Share on other sites

Uite, un "mini-cms" de genul care ziceam eu, este file-managerul din cPanel, care culmea... se muta de la hostul x, la hostul y. Si culmea, cand editezi un fisier, trimite cod html, js, php sau orice alt cod, prin ajax... Gandeste la scara larga, nu la mini-cms-uri facute de un mini-programator in pauza de masa.

O alta porcarie de mini-cms care te lasa sa trimiti <script> si chiar cod php printr-un formular, este WordPress. Ai incercat vreodata sa modifici tema de la wordpress direct din admin? Daca nu, te anunt ca se poate (nu la wordpress.com, la cel hostat de tine). Daca dai peste un sysadmin "comunist" care nu te lasa sa faci nici o setare, cum folosesti tu wordpress-ul? :| Default? Nu, mersi.

Vorbim de cu totul alte chestii dupa cum observi, file managerul din cPanel dupa cum bine ar trebui sa stii e ca functioneaza dupa alte reguli si drepturi, nu pune toate lucrurile in aceiasi oala, eu nu vorbesc de tine care ai hosting la ssnet, eu vorbesc de firme mijlocii si mari dupa cum bine am precizat.

Lasand numai pe seama aplicatiei web sarcina de a filtra anumiti parametri apar problemele de securitate, repet si sper sa se inteleaga odata: oricat de bun programator ai fi tot ramane vreo vulnerabilitate(ma refer strict la cms-uri mijlocii si mari) din cauze bine stiute, filtrarea lor din request ar elimina din sansele de a fi exploatata vulnerabilitatea respectiva!

Consider ca acceptarea de cod html si js e pentru a usura munca programatorilor, bbcode este un exemplu bun pentru a fi folosit!

Link to comment
Share on other sites

Uite, cauta Magento Enterprise. Vezi cat costa. Vezi care sunt detaliile. Afla ca poti introduce din admin cod HTML si JS. Uite la blogspot.com. Poti introduce HTTML si JS. Caut mai multe exemple de firme de astea mici? Vreau sa spun ca o aplicatie GIGANT se poate adresa unui utilizator NOOB. Programatorul are mai mult de munca daca permite HTML si JS. Nu mai putin.

Link to comment
Share on other sites

Uite, cauta Magento Enterprise. Vezi cat costa. Vezi care sunt detaliile. Afla ca poti introduce din admin cod HTML si JS. Uite la blogspot.com. Poti introduce HTTML si JS. Caut mai multe exemple de firme de astea mici? Vreau sa spun ca o aplicatie GIGANT se poate adresa unui utilizator NOOB. Programatorul are mai mult de munca daca permite HTML si JS. Nu mai putin.

Cu ce ai mai multa munca daca accepti HTML si Js, uimeste-ma si pe mine

De ce trebuie ca sa accepti js si html cand poti crea bbcode-uri pentru asta, da-mi exemple reale la ce folosesti tu html si js si daca ar putea folosit un cod bb pentru ce faci tu, cati administratori modifica si adauga cod html zilnic incat sa fie ceva necesar.

Edited by Vlachs
Link to comment
Share on other sites

Cu faptul ca trebuie sa validezi ce baga omul si mai ales unde. De exemplu, la wordpress. In comentarii poti baga coduri html, dar nu orice fel de cod, doar cateva. In editorul de template-uri, poti baga cam orice.

Poti folosi bbcode-uri pentru tot ce ai scris tu, mi se pare o solutie mai buna si mai sigura!

Link to comment
Share on other sites

Si cum editezi tu o tema de wordpress (care contine cod php si html) din bb-code?

Ne lungim aiurea si vad ca nu poti sa citesti ce am scris, in fine e ultimul raspuns pentru ca vad ca dai niste raspunsuri puerile netinand cont de lucrurile practice, daca vrei sa editezi o tema nu te opreste nimeni sa folosesti un client ftp, vulnerabilitatile apar pentru ca se accepta astfel de lucruri.

Daca ai de gand sa scrii ceva, incearca sa dai un raspuns corespunzator situatiei, repet si poate ai sa citesti, nu fiecare administrator este programator, nu cred ca editezi zilnic 100.000 de linii de cod din file manager-ul din cpanel incat sa nu poti trai fara un editor de html/js, daca ai de gand sa te rezumi la ceva concret bine, daca nu...mai bine nu mai posta!

Link to comment
Share on other sites

Ok. Da-mi peste nas la urmatorul raspuns pueril. Am un site pe porcaria aia de mini-cms, de 2 lei, de la blogspot. Vreau sa-mi editez tema. Ma poti ajuta sa fac rost de datele de la FTP? Dau o bere.

Acum sa analizam si din alt punct de vedere. Daca wordpress permite introducerea de cod html in comentarii, il face vulnerabil?

Parerea mea e ca daca un programator nu stie sa-si scrie codul asa cum trebuie, nu e vina sysadminului. Am vazut 2 site-uri foarte mari, cu mii de vizitatori unici pe zi, pe platforme custom, mutate de pe un host pe altul in 2011. Cu ambele am interactionat direct. N-a existat nici un fel de problema de securitate / compatibilitate, desi singurul element comun intre cele 2 servere era distributia de linux. La o faza de asta, o securizare facuta de sysadmin aiurea si uitata, deschide porti imense pentru hackeri.

Link to comment
Share on other sites

Ok. Da-mi peste nas la urmatorul raspuns pueril. Am un site pe porcaria aia de mini-cms, de 2 lei, de la blogspot. Vreau sa-mi editez tema. Ma poti ajuta sa fac rost de datele de la FTP? Dau o bere.

Acum sa analizam si din alt punct de vedere. Daca wordpress permite introducerea de cod html in comentarii, il face vulnerabil?

Parerea mea e ca daca un programator nu stie sa-si scrie codul asa cum trebuie, nu e vina sysadminului. Am vazut 2 site-uri foarte mari, cu mii de vizitatori unici pe zi, pe platforme custom, mutate de pe un host pe altul in 2011. Cu ambele am interactionat direct. N-a existat nici un fel de problema de securitate / compatibilitate, desi singurul element comun intre cele 2 servere era distributia de linux. La o faza de asta, o securizare facuta de sysadmin aiurea si uitata, deschide porti imense pentru hackeri.

Incepi sa devii enervant, suferi de vreo ceva incat nu esti capabil sa vezi ca am scris, te-as face tampit daca nu ar exista posibilitatea sa imi iau ban!

Proiectele mijlocii si mari sunt facute de mai multi programatori, x face functia/clasa x1 si tot asa, crezi ca nu o sa apara diferite vulnerabilitati, yahoo/google/... sunt dovada, ei sunt programatori de cacat si tu gwydion care esti un zeu poti sa scrii zeci de mii de linii de cod fara a aparea vreo vulnerabilitate.

Un CMS e facut pe baza unor nevoi, UTILIZATORUL NORMAL nu sta sa modifice ZILNIC bucati de cod in template-ul lui, el are nevoie sa posteze un text si atata tot, respectiva faza ca wordpress accepta anumita o anumita bucata de cod html functioneaza asemenea unui bbcode!

Nu ma intereseaza site-urile alea "foarte mari" cu mii de vizitatori unici pe zi, dupa cum am postat de 3 ori pana acum este vorba de firme/site-uri mijlocii si mari, nu rasnite de site-uri(poti sa le lasi aici sa vad si eu ce site-uri foarte mari cu cms propriu) care se chinuie pe o zi pe alta!

Pentru blogspot este total diferita situatia, logarea se face printr-un cod gmail si sunt multe alte chestii de tinut cont, editarea temei se poate realiza de asemenea prin implementarea de coduri bb sau o sintaxa proprie!

Te rog din toata istetimea ta, da un exemplu concret in care ai neaparat nevoie sa trimiti cod html sau js si nu se poate realiza printr-o alta metoda!

Link to comment
Share on other sites

Benny, du-te si vorbeste cu un sysadmin si discutam apoi. :)

Nytro eu unu raman la idea mea, astept sa vina un sysadmin si un programator si sa imi spuna:

- Programatorul: "Ba esti prost, astea sunt motivele!"

- Sysadmin-ul:"Ba esti tampit, si astea sunt motivele!"

Link to comment
Share on other sites

Sa spunem ca eu am un site cu cms propriu securizat ca la carte. Pe langa site mai am hostat pe acelasi server si un blog wp. E o situatie des intalnita si normala pentru a comunica in permanenta cu clientii tai. Wordpress e destul de bine puse la punct la capitolul securizare. Problema e ca din wp se pot urca shelluri pe server daca stii unde si cum sa il gadili. Automat cms-ul meu super securizat devine victima colaterala din cauza shellului urcat prin wp. Daca serverul nu e securizat se poate accesa prin shell cam orice inclusiv partea de cms. In schimb daca sysadminul a facut tweakurile necesare la server shellul nu ruleaza deloc sau ruleaza foarte limitat. Nu cred ca e vreo persoana atat de dementa incat sa scrie de la zero o aplicatie web de blogging ca sa fie sigura ca nu ii va fi sparta masina. Hostgator a inceput sa aplice o politica ciudata dar de efect pe unele servere de hosting. Daca urci un shell comun in 5 minute contul de hosting e suspendat si tot site-ul e wiped pana vine clientul si isi rezolva problema.

Link to comment
Share on other sites

Trebuie sa existe o colaborare intre syadmin si programator, ca sysadmin nu poti bloca de exemplu "<script>" pentru ca poate ai gazduit un forum ca RST si vei bloca jumatate dintre posturi. Ca sysadmin, nu poti sa pui reguli pentru a evita SQL Injection, cum ar fi "UNION" pentru ca pot fi mesaje care sa contina acest cuvant perfect valide, care sa nu aiba nici cea mai mica legatura cu SQLI. Nu poti nici macar sa blochezi doua request-uri in mai putin de o secunda pentru ca se intampla ca aici, deschizi doua tab-uri si unul dintre ele e blocat si risti sa pierzi clienti.

Programatorii vin cu tot felul de pretentii ca sa mearga scripturile lor, ceea ce e si normal, insa e problema lor sa se ocupe de securitatea APLICATIILOR WEB nu a sysadminilor. Ca folosesc scripturi 3rd party, de asemenea, e problema lor. Nu e vina sysadminului ca aplicatia are SQL Injection.

Si oricum am spune, administratorii tot petrec mult timp sa verifice loguri, sa vada unde pot sa apara probleme in aplicatie si sa incerce sa le rezolve de pe partea de administrare, ceea ce repet, nu e ok, pentru ca ulterior pot sa apara probleme.

Sysadmin: "Ba, esti tampit, ai SQL Injection in aplicatie, uite aici cateva loguri, uite ca unii au dat cu Acunetix si altii cu Havij, asta e parametru vulerabil, repara problema, doar nu o sa stau eu sa dau DROP la pachete pe baza de sute de vectori ce pot fi folositi pentru ca tu nu faci o filtrare pe parametrii aplicatiei".

Link to comment
Share on other sites

Acum pe bune Nytro, nu cred ca scopul este de a ii arata lu x ca greseste si ca e tampit ca programator ci este acela de a nu lasa pe y sa exploateze o vulnerabilitate.

Si cred ca exagerezi putin cu <script> si alte faze de genul, modsecurity si alte module sunt inutile de acum ?

Dupa cum te spui tu, un sysadmin trebuie sa stea toata ziua si sa o frece, el nu are nimic de facut

Edited by Vlachs
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...