Arachni Web Application Security Scanner Introducción al análisis de vulnerabilidades Autor: G.J.A PSI 2011/2012 ¿Qué es Arachni? Arachni es un framework que nos permite realizar ataques sobre una aplicación web y obtener las vulnerabilidades encontradas. La web oficial es http://arachni-scanner.com ¿Qué pruebas podemos realizar con él? Arachni posee los siguientes modulos con los que poder realizar pruebas sobre una aplicación web -Path_traversal http://www.owasp.org/index.php/Path_Traversal -os_cmd_injection_timing/os_cmd_injection http://www.owasp.org/index.php/OS_Command_Injection -response_splitting http://www.owasp.org/index.php/HTTP_Response_Splitting -xpath http://www.owasp.org/index.php/XPATH_Injection -xss/xss_event/xss_uri/xss_tag/xss_path https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) -code_injection/code_injection_timing https://www.owasp.org/index.php/Code_Injection -sqli_blid_rdiff /sqli_blind_timing http://www.owasp.org/index.php/Blind_SQL_Injection -rfi(Remote File Inclusion) http://projects.webappsec.org/w/page/13246955/Remote%20File%20Inclusion -unvalidated_redirect http://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards -ldapi http://www.owasp.org/index.php/LDAP_injection -csrf http://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) -sqli http://www.owasp.org/index.php/SQL_Injection -xst http://www.owasp.org/index.php/Cross_Site_Tracing -unencrypted_password_forms http://www.owasp.org/index.php/Top_10_2010-A9-Insufficient_Transport_Layer_Protection Para ver todos los módulos disponibles basta con usar $arachni –lsmod Entorno de pruebas Para realizar las pruebas he usado Dojo http://www.mavensecurity.com/web_security_dojo/ una distro Linux basada en Ubuntu que cuenta con numerosas herramientas para pruebas de seguridad y hallar vulnerabilidades. Las aplicación sobre la que se han realizado las pruebas han sido Damn Vulnerable Web App (DVWA) e Insecure Web App ,aplicaciones con numerosas vulnerabilidades cuya función es probar herramientas de testeo y comprobar nuestras habilidades. Comenzando las pruebas No es necesaria una conexión a Internet para estas pruebas Una vez arrancado Dojo,vamos a la pestaña Applications>Targets>DMVA . Esto lanzará Firefox,y nos mostrará la pantalla de login para DVMA. El usuario es admin y la contraseña password. Abrimos el terminal Arachni cli(Applications>Tools>Arachni_cli) Para realizar un análisis con todos los módulos basta con ejecutar $arachni URL El análisis puede tardar desde varios minutos a varias horas,dependiendo de la aplicación que estemos analizando.Con DVWA e Insecure Web App estos análisis tardan alrededor de 20 minutos.Una buena idea es elegir que vulnerabilidad queremos buscar cargando el módulo adecuado $arachni –m xss_* URL Asi comprobaremos si hay algún tipo de vulnerabilidad XSS Cada análisis se guarda en un archivo .afr que podemos interpretar con Arachni pero podemos darle varios formatos.Para darle salida en un archivo de texto basta con añadir la opción $arachni -m xss_* --report=txt http://localhost:8080/insecure/public/Login.jsp Los distintos formatos se pueden consultar con $arachni --lsrep Arachni Web User Interface Por si lo preferimos, Arachni también posee una interfaz via web. Para ello ,ejecutamos los siguientes comandos, en dos consolas del Arachni client (Applications>Tools>Arachni_cli) $arachni_xmlrpcd $arachni_web En el navegador ahora,si ponemos localhost:4567 accederemos a la interfaz gráfica,con la que podemos realizar los mismos análisis que por línea de comandos.Para poder realizar el análisis hay que asegurarse que tenemos un dispatcher vivo en la pestaña Dispatchers. Conclusión Arachni es una herramienta útil para un pre-auditoría sobre una aplicación web, pero no es correcto pensar que con arreglar los avisos que nos proporciona la aplicación es segura 100% ya que Arachni tiene sus limitaciones. Como se puede ver en el análisis de la DVWA,no hay referencias a los ataques de xss,SQL injection y demás vulnerabilidades que podemos encontrar en la aplicación Screenshots Insecure Web Application Damn Vulnerable Web Appilcation Análisis en curso Análisis finalizado Algunas vulnerabilidades encontradas Insecure Web Application [+] [1] Cross-Site Scripting in HTML tag. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 5b42c2448cfd3ac3a6d7256c1e0fa423 [~] Severity: High [~] URL: http://localhost:8080/insecure/public/ForgotLogin.jsp [~] Element: form [~] Method: POST [~] Tags: xss, script, tag, regexp, dom, attribute, injection [~] Variable: email [~] Description: [~] Unvalidated user input is being embedded in a HTML element. This can lead to a Cross-Site Scripting vulnerability or a form of HTML manipulation. [~] CWE: http://cwe.mitre.org/data/definitions/79.html [~] Requires manual verification?: false [~] References: [~] ha.ckers - http://ha.ckers.org/xss.html [~] Secunia - http://secunia.com/advisories/9716/ [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost:8080/insecure/public/ForgotLogin.jsp [~] Injected value: [email protected]" arachni_xss_in_tag="5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb5 7e9 [~] Matched string: <input type="text" name="email" id="email" size="100" value="[email protected]" arachni_xss_in_tag="5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb5 7e9"> [+] [2] Unencrypted password form. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 03721c189bcd149c0f41e80afe34ac51 [~] Severity: Medium [~] URL: http://localhost:8080/insecure/public/Login.jsp [~] Element: form [~] Tags: unencrypted, password, form [~] Variable: pass [~] Description: [~] Transmission of password does not use an encrypted channel. [~] CWE: http://cwe.mitre.org/data/definitions/319.html [~] Requires manual verification?: false [~] References: [~] OWASP Top 10 2010 - http://www.owasp.org/index.php/Top_10_2010-A9Insufficient_Transport_Layer_Protection [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost:8080/insecure/public/Login.jsp [+] [3] A common directory exists on the server. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 16c4d4d2b7fd8bee3b7e8ef2fc5ec853 [~] Severity: Medium [~] URL: http://localhost/doc/ [~] Element: path [~] Tags: path, directory, common [~] Description: [~] [~] CWE: http://cwe.mitre.org/data/definitions/538.html [~] Requires manual verification?: false [~] References: [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost/doc/?5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb 57e9= [~] ID: doc [~] Injected value: doc Damn Vulnerable Web App [+] [1] A common directory exists on the server. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 37eddd67bb00f74e04ea2f697f52ee0a [~] Severity: Medium [~] URL: http://localhost/dvwa/config/ [~] Element: path [~] Tags: path, directory, common [~] Description: [~] [~] CWE: http://cwe.mitre.org/data/definitions/538.html [~] Requires manual verification?: false [~] References: [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost/dvwa/config/?91ad30139bee44d279edd2d74cabdbacd63833a452621964cdd 31841722039d8= [~] ID: config [~] Injected value: config [+] [2] A common directory exists on the server. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 63d3a23179f10d2d5e89b9b6f106ea3e [~] Severity: Medium [~] URL: http://localhost/dvwa/docs/ [~] Element: path [~] Tags: path, directory, common [~] Description: [~] [~] CWE: http://cwe.mitre.org/data/definitions/538.html [~] Requires manual verification?: false [~] References: [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost/dvwa/docs/?91ad30139bee44d279edd2d74cabdbacd63833a452621964cdd3 1841722039d8= [~] ID: docs [~] Injected value: docs [+] [3] A common directory exists on the server. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 16c4d4d2b7fd8bee3b7e8ef2fc5ec853 [~] Severity: Medium [~] URL: http://localhost/doc/ [~] Element: path [~] Tags: path, directory, common [~] Description: [~] [~] CWE: http://cwe.mitre.org/data/definitions/538.html [~] Requires manual verification?: false [~] References: [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost/doc/?91ad30139bee44d279edd2d74cabdbacd63833a452621964cdd3184172 2039d8= [~] ID: doc [~] Injected value: doc [+] [4] A common directory exists on the server. [~] ~~~~~~~~~~~~~~~~~~~~ [~] ID Hash: 50f4d9dd6920d330afa24c519f39f114 [~] Severity: Medium [~] URL: http://localhost/doc/ftp/ [~] Element: path [~] Tags: path, directory, common [~] Description: [~] [~] CWE: http://cwe.mitre.org/data/definitions/538.html [~] Requires manual verification?: false [~] References: [*] Variations [~] ---------[~] Variation 1: [~] URL: http://localhost/doc/ftp/?91ad30139bee44d279edd2d74cabdbacd63833a452621964cdd3184 1722039d8= [~] ID: ftp [~] Injected value: ftp