În această serie, analizăm modul în care putem asigura proiectele noastre WordPress de la XSS - sau script-ul cross-site. În primul articol din serie, am definit ceea ce este în realitate scriptingul încrucișat, înțelegând cum funcționează și de ce este periculos.
De asemenea, am petrecut ceva timp discutând despre modul în care acest lucru influențează eforturile noastre zilnice de dezvoltare WordPress și ce putem face în legătură cu aceasta. Deși există câteva funcții pe care WordPress le are la dispoziție pentru a ajuta la validarea și dezinfectarea datelor, există mai multă muncă pe care o putem face pentru a ne asigura proiectele.
În acest articol final, vom examina câteva sfaturi practice pe care le putem urma și câteva teste pe care le putem administra pentru a ne asigura munca împotriva atacurilor XSS.
În general, modul în care încerci să testezi site-ul tău pentru vulnerabilități de script încrucișate este să găsești oriunde în site-ul sau aplicația care acceptă intrarea utilizatorului.
Evident, aceasta va veni sub forma câmpurilor de intrare, a textarelor sau a altora similare.
Dacă site-ul nu efectuează dezinfectarea și / sau validarea adecvată, atunci veți reuși în mod normal să găsiți exploatații; cu toate acestea, în cazul în care site-ul este gestionarea corectă a datelor primite, atunci probabil că nu veți vedea niciun rezultat pentru eforturile dvs..
Să aruncăm o privire asupra mai multor cazuri pe care le putem administra pe propriile noastre site-uri (sau chiar pe altele, deși facem acea pe riscul propriu!).
Unul dintre primele lucruri pe care le putem face pentru a localiza o vulnerabilitate este încercarea de a injecta un cod care să determine dacă există sau nu o vulnerabilitate.
Codul în cauză este după cum urmează:
'; alert (String.fromCharCode (88,83,83)) //'; alert (String.fromCharCode (88,83,83)) // "; alert (String.fromCharCode (88,83,83) /";alert(String.fromCharCode(88,83,83))//-->„>">
Plasați acest cod în orice câmp de introducere și trimiteți-l.
Dacă o vulnerabilitate face există, atunci va fi afișat cuvântul "XSS". Dacă nu este returnat, atunci sunteți probabil sigur (deși acest lucru nu poate fi garantat 100%); cu toate acestea, dacă este produs, atunci probabil aceasta înseamnă că există o vulnerabilitate pe care tu sau cineva mai răuvoitoare o puteți exploata.
În ultimul articol, am discutat despre aceeași politică de origine, care în principiu dictează că un site nu ar trebui să poată solicita active din orice alt domeniu decât cel pe care se află în prezent.
Pentru a încerca să executați codul de la un server la distanță - sau un server care este nu parte a aceleași origini - puteți executa următorul cod:
„>
Rețineți că prefixul pentru cazul de testare este nu o greseala de scriere. Este necesar pentru a testa vulnerabilitatea. Dacă o vulnerabilitate există, atunci un cookie de browser din domeniul de la distanță va fi afișat; în caz contrar, veți vedea fie nimic, fie consola dvs. poate returna un mesaj despre politica de același tip.
Reacții la Janne pentru această tactică particulară.
În cele din urmă, una dintre vulnerabilitățile mai bine cunoscute încearcă să execute codul JavaScript într-un atribut al unui "img
' etichetă.
De exemplu, crearea unui element, cum ar fi:
Ar dezvălui o vulnerabilitate care ar afișa un dialog de alertă cu "XSS" ca mesaj, mai degrabă decât o imagine ruptă reală.
Simplu, nu-i așa? Cu toate acestea, este nevoie doar de o vulnerabilitate pentru a expune un exploit.
Lucrul este, asta este doar vârful aisbergului, deoarece se referă la testarea XSS. De fapt, ar fi nevoie de un întreg wiki pentru a ajuta la documentarea diferitelor vulnerabilități care sunt acolo.
De fapt, asta este exact ceea ce Deschideți Securitatea aplicațiilor web proiectul vizează: să documentați diferitele vulnerabilități XSS care există și cum să le testați. Puteți vizita întreaga listă, a se vedea definiția atacurilor, precum și modul de administrare a acestora.
Dar asta nu este tot! Pe măsură ce apar tehnologii mai noi - cum ar fi HTML5 - există o mulțime de lucruri suplimentare pe care ar trebui să le luăm în considerare.
Deși poate părea un pic ciudat că un limbaj de markup ar putea fi susceptibil de atacuri de script-uri încrucișate, are sens, în special având în vedere unele dintre atributele pe care noile elemente le permit.
Caz elocvent:
formaction
atribut care poate executa JavaScriptonfocus
atribut care poate executa JavaScriptposter
atribut care poate executa JavaScriptAcordat, nu toate acestea sunt valabile pentru fiecare browser, dar este important să le cunoașteți, astfel încât să puteți testa corect în browserele relevante.
Acestea fiind spuse, puteți găsi o listă cuprinzătoare de ștergere HTML5 a vulnerabilităților cunoscute și browserele relevante de pe site-ul de securitate HTML5.
Una dintre cele mai lungi site-uri de resurse XSS care rulează pe web este Ha.ckers.org și au un utilitar XSS ieftin.
Pur și simplu puneți, pe lângă oferirea unui dicționar de vulnerabilități cunoscute, calculatorul lor va codifica automat XSS-ul dvs. în mai multe tipuri de codare diferite, cum ar fi Hex, zecimal, Base64 și așa mai departe, astfel încât să puteți încerca, de asemenea, acestea traducerile în aplicația dvs..
La urma urmei, jumătate din securitate se asigură că toate tipurile de intrări sunt dezinfectate, evitate și validate - nu doar cazul de bază.
Evident, câmpul de scripting cross-site este bogat în vulnerabilități care nu se limitează la un singur browser, să nu mai vorbim de o singură versiune de browser. Din fericire, există o mulțime de resurse, foi de înșelăciune, cum sunt tos și alte materiale educaționale la dispoziția noastră, nu numai pentru a ne ține la curent cu ceea ce există, dar cum putem să defensivăm programul împotriva lui.
Și, deși acest articol este în mod special orientat către noi dezvoltatorii WordPress, tactica și tehnicile depășesc WordPress și sunt aplicabile pentru oricine construiește aplicații web.
În cele din urmă, aș vrea să-i mulțumesc lui Janne Ahlberg pentru că a inspirat conținutul acestei serii. Este un specialist în securitate care face o mulțime de lucrări XSS pe care le raportează către Envato, așa că dacă sunteți interesat de acest subiect, mai ales că se referă la promovarea muncii dvs. pe una din piețele Envato, recomandăm să urmați blogul său.