En la entrada anterior sobre W3AF, se han mencionado conceptos básicos de funcionamiento y configuración, en esta entrada, intentaré explicar como funcionan los plugins, exploits y perfiles en W3AF.

PLUGINS W3AF

Los plugins en W3AF son la base del framework, ya que separa de forma lógica las 3 categorías de acciones llevadas a cabo, que son Descubrimiento, Auditoria y Explotación o Ataque, cada uno de los plugins disponibles en W3AF corresponden a una de las 3 categorías anteriormente mencionadas, y cada uno de estos a su vez, tienen subplugins que pueden ser activados o desactivados dependiendo de las necesidades de la ejecución del escaneo/ataque. En este punto, los plugins que se encuentran en la jerarquía mas alta en W3AF se pueden listar de la siguiente forma:

w3af>>> plugins

w3af/plugins>>> help

|———————————————————————————————————————————————————————|

| list | List available plugins.

|———————————————————————————————————————————————————————|

| back | Go to the previous menu.

| exit | Exit w3af.

| assert | Check assertion.

|———————————————————————————————————————————————————————|

| audit | View, configure and enable audit plugins

| bruteforce | View, configure and enable bruteforce plugins

| discovery | View, configure and enable discovery plugins

| output | View, configure and enable output plugins

| evasion | View, configure and enable evasion plugins

| grep | View, configure and enable grep plugins

| mangle | View, configure and enable mangle plugins

|———————————————————————————————————————————————————————|

Los plugins anteriores corresponden a los plugins principales contenidos en W3AF, cada uno de estos puede ser configurado para activar o desactivar determinados sub-plugins que se encuentran incluidos en el plugin principal, de esta forma, se crea una estructura jerárquica de plugins que pueden ser activados y configurados de distintos modos.

La arquitectura y el flujo de información entre los plugins disponibles en W3AF es el siguiente:

El funcionamiento de estos plugins se ejecuta en el siguiente orden:
1. Se ejecutan los plugins de Discovery habilitados para intentar descubrir peticiones “fuzzables”, esas son potenciales vulnerabilidades que pueden ser tomadas en cuenta luego por los plugins de Auditoria. Todos los plugins de Descubrimiento se ejecutan en ciclo constante donde cada salida de uno de ellos es enviada al siguiente, de esta forma, el procesamiento no termina hasta que todos los plugins terminan, por este motivo, en ocasiones un escaneo puede llevar horas, en especial cuando se habilitan todos. Por otro lado algunos plugins también intentan recolectar información sobre el objetivo, como por ejemplo tipo de servidor, “fingerprint” del servicio httpd, métodos HTTP, detección de load balancer en el objetivo, etc.

2. Posteriormente se ejecutan los plugins de auditoria que toman como entrada, la salida de la ejecución de los plugins de descubrimiento, el objetivo de los plugins de auditoria es recopilar la mayor cantidad de vulnerabilidades sobre el objetivo y posteriormente almacenarlas en una zona conocida como “objetos vulnerables” que posteriormente pueden ser tomados como insumo para los plugins de exploits que intentaran aprovecharlas.

3. Finalmente, se encuentran los plugins de ataque que se encargan de leer la zona de “Conocimiento Base” y obtener los objetos vulnerables almacenados por los plugins de auditoria, estos plugins intentan aprovechar dichas vulnerabilidades intentando inyectar un payload en el objetivo.

4. Los pasos anteriores son el escenario típico de un escaneo con W3AF, sin embargo, estos tienen el apoyo de otros plugins que facilitan determinadas funciones que son necesarias, en esta categoría de Plugins se encuentran:

  1. Output: Especifica el formato de salida de los mensajes que produce la ejecución de cada plugin.

  2. Mangle: Intentan modificar las peticiones y respuestas por medio de expresiones regulares.

  3. Evasion: Intentan modificar las peticiones con el fin de evadir sistemas IDS instalados en el objetivo.

  4. Bruteforce: Intentan ejecutar un ataque de fuerza bruta contra login.

Navegado por los Plugins

Navegar por plugins y sus configuraciones es uno de los primeros pasos que se deben realizar en orden de habilitar aquellos que resulten interesantes dependiendo del conocimiento que se tenga del objetivo y otros criterios que puedan ser también aplicables, a continuación se listan los comandos utilizados para navegar, configurar y activar/desactivar plugins.

  1. Ir a la estructura de plugins.

    w3af>>> plugins

    w3af/plugins>>>

  2. Listar plugins disponibles para un plugin raíz:

    w3af/plugins>>> list audit

    |——————————————————————————————————————————————————————–|

    | Plugin name | Status | Conf | Description |

    |——————————————————————————————————————————————————————–|

    | LDAPi | | | Find LDAP injection bugs. |

    | blindSqli | | Yes | Find blind SQL injection vulnerabilities. |

    | buffOverflow | | | Find buffer overflow vulnerabilities. |

    | dav | | | Verify if the WebDAV module is properly configured. |

    …. snop ….

    Existen 3 columnas que corresponden a:
    Plugin Name: Nombre del Plugin
    Status: Estado del Plugin Activado/Desactivado.
    Conf: Indica si tiene opciones de configuración personalizadas.
    Description: Descripción del Plugin.

  3. Consultar información sobre uno de los plugins del listado:

    w3af/plugins>>> help audit

    View, configure and enable audit plugins

    Syntax: audit [config plugin | plugin1[,plugin2 … pluginN] | desc plugin]

    Example1: audit

    Result: All enabled audit plugins are listed.

    Example2: audit LDAPi,blindSqli

    Result: LDAPi and blindSqli are configured to run

    Example3: audit config LDAPi

    Result: Enters to the plugin configuration menu.

    Example4: audit all,!blindSqli

    Result: All audit plugins are configured to run except blindSqli.

    Example5: audit desc LDAPi

    Result: You will get the plugin description.

    Example6: audit LDAPi,blindSqli

    audit !LDAPi

    Result: LDAPi is disabled in the second command, only blindSqli will run.

  4. Consultar la descripción de un plugin dentro de una de las categorías de plugins raíz, por ejemplo, describir el uso del plugin “dav” incluido en el plugin “audit”

    w3af/plugins>>> audit desc dav

    This plugin finds WebDAV configuration errors. These errors are generally server configuration errors rather than a web application errors. To check for vulnerabilities of this kind, the plugin will try to PUT a file on a directory
    that has WebDAV enabled, if the file is uploaded successfully, then we have found a bug.

  5. Activando un plugin dentro de una de las categorías de plugins principales.

w3af/plugins>>> audit xss xsrf dav

  1. Desactivando un plugin dentro de una de las categorías de plugins principales.

    w3af/plugins>>> audit !LDAPi !sslCertificate

  2. Configurando opciones de sub-plugins:

    w3af/plugins>>> audit config xss
    w3af/plugins/audit/config:xss>>> view

    |————————————————————————————–|

    | Setting | Value | Description |

    |————————————————————————————–|

    | numberOfChecks | 3 | Set the amount of checks to perform for each fuzzable |

    | | | parameter. Valid numbers: 1 to 15 |

    | checkStored | True | Identify stored cross site scripting vulnerabilities |

    |————————————————————————————–|
    w3af/plugins/audit/config:xss>>> set numberOfChecks 5

    Las instrucciones anteriores corresponden a los pasos que se deben llevar a cabo para configurar cualquier plugin existente en W3AF, como puede apreciarse, son bastante sencillos sin embargo se requieren conocimientos avanzados sobre seguridad en aplicaciones web con el fin de establecer una configuración optima.

PROFILES W3AF

Los profiles en W3AF son simplemente configuraciones guardadas de plugins y sub-plugins habilitados, enfocados en objetivos con características especificas, frecuentemente este tipo de asociaciones se realizan en el momento de iniciar un proceso de recolección de información por medio de otras herramientas como por ejemplo, técnicas de ingeniería social, en cualquier caso, el uso de perfiles, permite habilitar solamente aquellos plugins que resultan interesantes contra un objetivo, desactivando el resto.

  1. Establecer el contexto de perfiles:

w3af>>> profiles

w3af/profiles>>>

  1. Listando los perfiles disponibles:

    w3af/profiles>>> list

    |———————————————————————————————————————————————————————|

    | Profile | Description |

    |———————————————————————————————————————————————————————|

    | bruteforce | Bruteforce form or basic authentication access controls using default credentials. To run this profile, set the target URL to the resource |

    | | where the access control is, and then click on Start. |

    | audit_high_risk | Perform a scan to only identify the vulnerabilities with higher risk, like SQL Injection, OS Commanding, Insecure File Uploads, etc. |

    | full_audit_manual_disc | Perform a manual discovery using the spiderMan plugin, and afterwards scan the site for any known vulnerabilities. |

    | full_audit | This profile performs a full audit of the target website, using only the webSpider plugin for discovery. |

    | OWASP_TOP10 | The Open Web Application Security Project (OWASP) is a worldwide free and open community focused on improving the security of application |

    | | software. OWASP searched for and published the ten most common security flaws. This profile search for this top 10 security flaws. For |

    | | more information about the security flaws: http://www.owasp.org/index.php/OWASP_Top_Ten_Project . |

    | web_infrastructure | Use all the available techniques in w3af to fingerprint the remote Web infrastructure. |

    | fast_scan | Perform a fast scan of the target site, using only a few discovery plugins and the fastest audit plugins. |

    | dav | Dav Profile |

    | sitemap | Use different online techniques to create a fast sitemap of the target web application. This plugin will only work if you’ve got Internet |

    | | access and the target web application is being spidered by Yahoo! |

    |———————————————————————————————————————————————————————

  2. Usando un Perfile de los listados:

w3af/profiles>>> use dav

The plugins configured by the scan profile have been enabled, and their options configured.

Please set the target URL(s) and start the scan.

EXPLOITS W3AF

Finalmente, una de las partes mas importantes en el proceso de escaneo de vulnerabilidades, es el aprovechamiento de las mismas, es aquí donde juegan un papel importante los plugins de ataque de W3AF, a continuación se explica como se pueden usar estos plugins desde la consola de W3AF

1.Estableciendo el contexto de exploits:

w3af>>> exploit

w3af/exploit>>>

2. Listando los plugins de ataque:

w3af/exploit>>> list

|———————————————————————————————————————————————————————|

| Plugin | Description |

|———————————————————————————————————————————————————————|

| sqlmap | Exploits [blind] sql injections using sqlmap ( http://sqlmap.sf.net ). |

| osCommandingShell | Exploit OS Commanding vulnerabilities. |

| xssBeef | Exploit XSS vulnerabilities using beEF ( http://www.bindshell.net/tools/beef/ ) . |

| localFileReader | Exploit local file inclusion bugs. |

| rfiProxy | Exploits remote file inclusions to create a proxy server. |

| remoteFileIncludeShell | Exploit remote file include vulnerabilities. |

| davShell | Exploit web servers that have unauthenticated DAV access. |

| eval | Exploit eval() vulnerabilities. |

| fileUploadShell | Exploit applications that allow unrestricted file uploads inside the webroot. |

| sql_webshell | Exploits [blind] sql injections by uploading a webshell to the target webroot. |

|———————————————————————————————————————————————————————

3. Para explotar todas las vulnerabilidades encontradas en busca de una consola remota:

w3af/exploit>>> exploit

4. Para ejecutar un “Fast Exploit”

w3af/exploit>>> fastexploit