Inyección SQL en GTD-PHP Versión 0.7
GTD-PHP es una implementación basada den web del sistema personal de organización “Getting Things Done” o “Resolver las Cosas”. GTD-PHP es un de las diversas herramientas utilizadas con las soluciones de productividad descritas en el libro “Getting Things Done”.
Para la siguiente demostración se utilizará la versión 0.7 de GTD-PHP incluida en la más reciente versión de OWASP Broken Web Applicación Project.
Configurado Zed Attack Proxy con Firefox, se ejecutan las herramientas de “Spider” y “Active Scan”, para luego analizar los resultados obtenidos en la pestaña de nombre “Alerts”.
Zed Attack Proxy expone cuatro alertas relacionadas a Inyecciones SQL. Uno de los cuales utiliza el método GET y los otros tres utilizan el método POST.
Las verificaciones se realizarán utilizando la herramienta “Sqlmap”. La primera verificación se realiza contra el hallazgo obtenido por Zed Attack Proxy utilizando el método “GET”.
http: // 192.168.0.X/gtd-php/editChecklistItem.php?checklistItemId=5
Sqlmap ha detectado como vulnerable el parámetro de nombre “chekcklistItemId”. La opción “-b” se utiliza para capturar los banners del DBMS o Sistema Gestor de Base de Datos.
$ sqlmap -u "http: //192.168.0.X/gtd-php/editChecklistItem.php?checklistItemId=5" -b
Los siguientes hallazgos encontrados por ZAP utilizan el método POST. Esto requiere la definición de otras opciones al utilizar la herramienta Sqlmap.
http:// 192.168.0.33/gtd-php/listItems.php?type=r
Sqlmap muestra una advertencia indicando la probable inyección del parámetro “contextId”. Pero al finalizar las pruebas Sqlmap expone la no posibilidad de realizar una inyección.”--method” fuerza a utilizar un método HTTP definido. “--data” define la cadena de datos a enviar a través del método POST. “-p” define el parámetro a evaluar.
$ sqlmap -u "http: //192.168.0.X/gtd-php/listItems.php" --method POST --data="contextId=4-2&submit=Filter&categoryId=1&timeId=1" -p "contextId"
En el siguiente hallazgo, aunque los resultados de ZAP exponen la utilización del método POST, el parámetro inyectable de nombre “type” se ubica en la URL.
http:// 192.168.0.X/gtd-php/listItems.php?type=r+AND+1%3D1+--+
En primera instancia Sqlmap indica la posibilidad de inyectar el parámetro de nombre “type”, pero al finalizar las pruebas indica la no posibilidad de hacerlo.
$ sqlmap -u "http://192.168.0.X/gtd-php/listItems.php?type=r" -b
El hallazgo final también se reporta utilizando el método POST, pero el parámetro vulnerable de nombre “tcId” se ubica en la URL.
http: //192.168.0.X/gtd-php/updateTimeContext.php?tcId=4-2
En este hallazgo Sqlmap reporta la improbabilidad de inyectar el parámetro de nombre “tcId”.
$ sqlmap -u "http: //192.168.0.X/gtd-php/updateTimeContext.php?tcId=4" -b
Fuentes:
http://www.gtd-php.com/
https://code.google.com/p/zaproxy/
http://sourceforge.net/projects/owaspbwa/
https://www.owasp.org/index.php/SQL_Injection
http://sourceforge.net/p/owaspbwa/tickets/?limit=999&sort=_severity+asc
http://sqlmap.org/
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/