javascript injection tutorial
Què és la injecció de Javascript?
Javascript és una de les tecnologies més populars i s’utilitza més per a pàgines web i aplicacions web.
Es pot utilitzar per realitzar diferents funcionalitats de llocs web. Tot i això, aquesta tecnologia pot comportar alguns problemes de seguretat, que el desenvolupador i el comprovador haurien de tenir en compte.
Javascript es pot utilitzar no només amb bons propòsits, sinó també per a alguns atacs maliciosos. Un d’ells és la injecció de Javascript. L’essència de JS Injection és injectar el codi Javascript, que s’executarà des del costat del client.
En aquest tutorial, aprendrem més sobre com comprovar si és possible la injecció Javascript, com es pot realitzar la injecció JS i quines són les conseqüències que pot produir la injecció JS.
Què aprendreu:
- Riscos de la injecció de JavaScript
- Per què és important provar la injecció JS?
- Comparació amb altres atacs
- S'està cercant la injecció de JavaScript
- Modificació de paràmetres
- Modificació del disseny de llocs web
- Com provar contra la injecció de JavaScript
- Possible protecció contra aquest atac
- Conclusió
- Lectura recomanada
Riscos de la injecció de JavaScript
JS Injection ofereix moltes possibilitats per a un usuari maliciós de modificar el disseny del lloc web, obtenir informació del lloc web, canviar la informació del lloc web mostrat i manipular-lo amb els paràmetres (per exemple, cookies). Per tant, això pot provocar danys greus al lloc web, filtracions d'informació i fins i tot piratejar.
L’objectiu principal de JS Injection és canviar l’aspecte del lloc web i manipular els paràmetres. Les conseqüències de la injecció de JS poden ser molt diferents: des del disseny del lloc web perjudicial fins a l'accés al compte d'una altra persona.
Per què és important provar la injecció JS?
Molts es preguntarien si realment és necessària la prova de la injecció JS.
La comprovació de les vulnerabilitats de la injecció JS forma part de les proves de seguretat. Les proves de seguretat solen realitzar-se només si s’inclouen a la planificació del projecte, ja que requereixen temps, molta atenció i comprovació de múltiples detalls.
He notat que durant la realització del projecte és bastant comú saltar-se les proves contra possibles atacs, inclosa la injecció JS. D’aquesta manera els equips intenten estalviar temps del projecte. Tot i això, aquesta pràctica sovint acaba amb les queixes dels clients.
Cal saber que es recomana fer proves de seguretat encara que no estigui inclosa en els plans del projecte. S’ha de comprovar si hi ha possibles atacs principals; al mateix temps, s’ha de comprovar si hi ha possibles vulnerabilitats de la injecció JS.
Sortint de Javascript simple Vulnerabilitats d'injecció al producte pot costar la qualitat i la reputació de l’empresa. Sempre que he après a provar contra possibles atacs i en proves de seguretat generals, mai no ometo aquesta part de la prova. D'aquesta manera, estic més segur de la qualitat del producte.
Comparació amb altres atacs
Cal esmentar que la injecció JS no és tan arriscada com Injecció SQL , ja que es realitza al costat del client i no arriba a la base de dades del sistema, tal com passa durant l'atac SQL Injection. A més, no és tan arriscat com un atac XSS.
De vegades, durant aquest atac, només es pot canviar l’aspecte del lloc web, mentre que l’objectiu principal de l’atac XSS és piratejar altres dades d’inici de sessió.
Tanmateix, JS Injection també pot causar danys greus al lloc web. No només pot destruir l’aspecte del lloc web, sinó que també pot esdevenir una bona base per piratejar les dades d’inici de sessió d’altres persones.
S'està cercant la injecció de JavaScript
Quan comenceu a provar contra JS Injection, el primer que heu de fer és comprovar si JS Injection és possible o no. Comprovar aquest tipus de possibilitat d’injecció és molt fàcil: quan navegueu al lloc web, heu d’escriure el codi de barres d’adreces del navegador així:
javascript: alert ('Executat!');
Si apareix una finestra emergent amb el missatge 'Executat!', El lloc web és vulnerable a JS Injection.
A continuació, a la barra d’adreces del lloc web podeu provar diverses ordres Javascript.
Cal esmentar que JS Injection no només és possible des de la barra d’adreces del lloc web. Hi ha diversos altres elements del lloc web que poden ser vulnerables a JS Injection. El més important és conèixer exactament les parts del lloc web que es poden veure afectades per Javascript Injection i com comprovar-ho.
Els objectius típics de la injecció JS són:
- Diversos fòrums
- Camps de comentaris de l'article
- Llibres de visites
- Qualsevol altre formulari on es pugui inserir text.
Per provar si aquest atac és possible per al formulari d’estalvi de text, tot i proporcionar text normal, escriviu el codi Javascript tal com s’esmenta a continuació i deseu el text al formulari i actualitzeu la pàgina.
javascript: alert ('Executat!');
Si a la pàgina recentment oberta inclou un quadre de text amb el missatge 'Executat!', Aquest tipus d'atac d'injecció és possible per al formulari provat.
Si de totes dues maneres apareix un quadre de text amb el missatge, podeu provar de trencar el lloc web amb mètodes d'injecció JS més complicats. A continuació, podeu provar diferents tipus d’injecció: modificació de paràmetres o modificació de disseny.
Per descomptat, la modificació dels paràmetres es considera més arriscada que la modificació del disseny. Per tant, mentre es realitzen proves, s’ha de dedicar més atenció a la modificació dels paràmetres.
A més, cal tenir en compte que les parts del lloc web més vulnerables per a la injecció de Javascript són camps d’entrada, on es guarden qualsevol tipus de dades.
Modificació de paràmetres
Com es va esmentar anteriorment, un dels possibles danys per injecció de Javascript és la modificació de paràmetres.
Durant aquest atac d'injecció, un usuari maliciós pot obtenir informació sobre paràmetres o canviar qualsevol valor de paràmetre( Exemple ,configuració de cookies). Això pot provocar riscos força greus, ja que un usuari maliciós pot obtenir contingut sensible. Aquest tipus d'injecció es pot realitzar mitjançant algunes ordres de Javascript.
Recordem que l’ordre Javascript que retorna la galeta de sessió actual s’escriu en conseqüència:
javascript: alert (document.cookie);
Si s’introdueix a la barra d’URL del navegador, es mostrarà una finestra emergent amb les cookies de sessió actuals.
Si el lloc web utilitza cookies, podem llegir informació com l’identificador de sessió del servidor o altres dades d’usuari emmagatzemades a les cookies.
Cal esmentar que en lloc d'alerta () es pot utilitzar qualsevol altra funció Javascript.
Per exemple ,si hem trobat un lloc web vulnerable, que emmagatzema l'identificador de sessió al paràmetre de galeta 'session_id'. Llavors podem escriure una funció que canviï l'identificador de sessió actual:
javascript: void (document.cookie = “session_id =<>');
D'aquesta manera es canviarà el valor de l'identificador de sessió. A més, també és possible qualsevol altra forma de canviar paràmetres.
Per exemple, un usuari maliciós vol iniciar la sessió com altres persones. Per iniciar la sessió, l'usuari maliciós canviarà primer la configuració de les cookies d'autorització a true. Si la configuració de les galetes no s'estableix com a 'veritable', el valor de la galeta es pot retornar com a 'indefinit'.
millor programa per fer diagrames de flux
Per canviar aquests valors de galetes, un usuari maliciós realitzarà segons l'ordre Javascript de la barra d'URL del navegador:
javascript: void (document.cookie = “autorització = true”);
Com a resultat, el paràmetre de cookies actual autorització = fals es canviarà a autorització = cert. D’aquesta manera, un usuari maliciós podrà accedir al contingut sensible.
També cal esmentar que, de vegades, el codi Javascript retorna informació força sensible.
javascript: alert (document.cookie);
Per exemple, si el desenvolupador d’un lloc web no era prou prudent, també pot retornar noms i valors de paràmetres de nom d’usuari i contrasenya. Llavors, aquesta informació es pot utilitzar per piratejar el lloc web o simplement canviar el valor del paràmetre sensible.
Per exemple, amb el codi següent podem canviar el valor del nom d'usuari:
javascript: void (document.cookie = ”nom d’usuari = altreUsuari”);
D'aquesta manera, qualsevol altre valor de paràmetre també es pot modificar.
Modificació del disseny de llocs web
Javascript també es pot utilitzar per modificar el formulari de qualsevol lloc web i, en general, el disseny del lloc web.
Per exemple, amb Javascript podeu canviar qualsevol informació que es mostri al lloc web:
- Text mostrat.
- Antecedents del lloc web.
- Aspecte del formulari del lloc web.
- Aspecte de la finestra emergent.
- Aspecte de qualsevol altre element del lloc web.
Per exemple, per canviar l'adreça de correu electrònic que es mostra al lloc web, s'ha d'utilitzar l'ordre Javascript adequada:
javascript: void (document.forms (0) .email.value = 'Test@test.com') ;
També són possibles altres manipulacions complicades amb el disseny del lloc web. Amb aquest atac també podem accedir i canviar la classe CSS del lloc web.
Per exemple, si volem canviar la imatge de fons del lloc web amb JS Injection, l'ordre s'hauria d'executar en conseqüència:
javascript: void (document. background-image: url ('other-image.jpg');
A més, un usuari maliciós pot escriure el codi d’injecció de Javascript que s’esmenta a continuació al formulari d’inserció de text i desar-lo.
javascript: void (alerta („Hola!“));
A continuació, cada vegada que s'obre una pàgina, apareixerà un quadre de text amb el missatge 'Hola!'.
El disseny del lloc web canviat amb Javascript Injection és menys arriscat que la modificació de paràmetres. Tanmateix, si el disseny del lloc web es canviarà de manera malintencionada, pot costar la reputació de la companyia.
Com provar contra la injecció de JavaScript
Es pot provar de les maneres següents:
- De forma manual
- Amb eines de prova
- Amb connectors del navegador
Les possibles vulnerabilitats de Javascript es poden comprovar manualment si teniu un bon coneixement de com s’ha de realitzar. A més, es pot provar amb diverses eines d'automatització.
Per exemple, si heu automatitzat les proves a nivell API amb l'eina SOAP UI, també és possible executar proves d'injecció Javascript amb SOAP UI .
Tot i això, només puc comentar per la meva pròpia experiència, que hauríeu d’haver tingut un bon coneixement sobre l’eina SOAP UI per provar-la amb JS Injection, ja que tots els passos de la prova s’haurien d’escriure sense errors. Si algun pas de prova s’escriu incorrectament, també pot provocar resultats de proves de seguretat incorrectes.
També podeu trobar diversos connectors del navegador per comprovar els possibles atacs. Tanmateix, es recomana no oblidar-vos de comprovar manualment aquest atac, ja que normalment proporciona resultats més precisos.
M’agradaria dir que provar manualment contra Javascript Injection em fa sentir més segur i segur de la seguretat del lloc web. D'aquesta manera, podeu estar segur que no s'ha perdut cap formulari durant la prova i que tots els resultats són visibles.
Per provar contra Javascript Injection, heu de tenir coneixements generals sobre Javascript i heu de saber quines parts del lloc web són més vulnerables. A més, recordeu que el lloc web pot estar protegit contra JS Injection i, mentre proveu, heu d’intentar trencar aquesta protecció.
D'aquesta manera, tindreu la certesa si la protecció contra aquest atac és prou forta o no.
Possible protecció contra aquest atac
En primer lloc, per evitar aquest atac, caldria validar totes les entrades rebudes. L’entrada s’ha de validar cada vegada i no només quan s’accepten inicialment les dades.
Es recomana no confiar en la validació del client. A més, es recomana realitzar una lògica important al costat del servidor.
Molts intenten protegir-se contra la injecció de Javascript canviant les cometes a doble i el codi Javascript no s’hauria de realitzar d’aquesta manera.
Per exemple, si escriviu al camp de comentaris qualsevol cosa amb cometes ..., aquestes cometes se substituiran per doble -<>...<>. D'aquesta manera, no s'executarà el codi Javascript introduït.
He notat que substituir les cometes per cometes dobles és una pràctica força habitual per evitar possibles atacs per injecció JS. No obstant això, hi ha algunes maneres de codificar les cometes per fer que es realitzi el codi d'injecció JS. Per tant, canviar les cometes a doble no és una manera perfecta de protegir-se d’aquest atac.
Conclusió
Sempre s’ha de tenir en compte que la injecció de Javascript és un dels possibles atacs contra llocs web, ja que Javascript és una de les tecnologies més utilitzades per als llocs web. Per tant, mentre proveu llocs web o qualsevol altra tecnologia web, no s’ha d’oblidar provar contra aquest atac.
En realitzar proves de seguretat, no s’ha d’oblidar JS Injection. Algunes persones consideren aquesta prova com un atac menys arriscat, ja que es realitza al costat del client.
No obstant això, és un enfocament incorrecte i sempre hem de recordar que la injecció de Javascript pot causar danys greus al lloc web, com ara fuites d'informació sensible, canvis de paràmetres o pirateria dels comptes d'usuari.
Per tant, hauríem de considerar-ho com una part important de les proves i és una part de la inversió per a la bona reputació de la companyia i del bon producte.
La prova de la injecció JS no és molt difícil. En primer lloc, heu de tenir coneixements generals sobre Javascript i heu de saber com comprovar si aquest atac és possible per a la solució web actual o no.
També heu de recordar, mentre feu les proves, que un lloc web pot tenir protecció contra aquest tipus d’atac, però pot ser massa feble; també s’hauria de comprovar. Una altra cosa important que cal recordar és que hi ha diferents tipus d’atacs per injecció de Javascript i que no s’ha d’oblidar de provar-ne cap.
Heu realitzat proves d'injecció de Javascript ?? Estarem encantats de rebre notícies vostres i de compartir les vostres experiències a la secció de comentaris que hi ha a continuació.
Lectura recomanada
- Tutorials Eclipse en profunditat per a principiants
- Com es configura el marc de proves Node.js: tutorial de Node.js
- Tutorial sobre injecció d'HTML: tipus i prevenció amb exemples
- Tutorial de proves d'injecció SQL (Exemple i prevenció d'atacs per injecció SQL)
- Tutorial de reflexió de Java amb exemples
- Tutorial SVN: Gestió del codi font mitjançant Subversion
- Tutorial de Python DateTime amb exemples
- Tutorial SVN de tortuga: revisions al dipòsit de codis