
Herramienta ofensiva para MSSQL escrita en Python, basada en SQLRecon
PySQLRecon
PySQLRecon es un puerto en Python del increíble proyecto SQLRecon de @sanjivkawa. Consulta la sección de comandos para ver la lista de capacidades.
Post que demuestra SCCM TAKEOVER-1 con PySQLRecon.
PySQLRecon se puede instalar con pip3 install pysqlrecon o clonando este repositorio y ejecutando pip3 install .
Todos los módulos principales de SQLRecon tienen comandos equivalentes. Los comandos marcados con [PRIV] requieren privilegios elevados o derechos de administrador del sistema para ejecutarse. Por el contrario, los comandos marcados con [NORM] pueden ser ejecutados por usuarios normales sin necesidad de privilegios elevados.
El soporte para suplantación ([I]) o ejecución en servidores vinculados ([L]) se indica al final de la descripción del comando.
adsi [PRIV] Obtain ADSI creds from ADSI linked server [I,L]
agentcmd [PRIV] Execute a system command using agent jobs [I,L]
agentstatus [PRIV] Enumerate SQL agent status and jobs [I,L]
checkrpc [NORM] Enumerate RPC status of linked servers [I,L]
clr [PRIV] Load and execute .NET assembly in a stored procedure [I,L]
columns [NORM] Enumerate columns within a table [I,L]
databases [NORM] Enumerate databases on a server [I,L]
disableclr [PRIV] Disable CLR integration [I,L]
disableole [PRIV] Disable OLE automation procedures [I,L]
disablerpc [PRIV] Disable RPC and RPC Out on linked server [I]
disablexp [PRIV] Disable xp_cmdshell [I,L]
enableclr [PRIV] Enable CLR integration [I,L]
enableole [PRIV] Enable OLE automation procedures [I,L]
enablerpc [PRIV] Enable RPC and RPC Out on linked server [I]
enablexp [PRIV] Enable xp_cmdshell [I,L]
impersonate [NORM] Enumerate users that can be impersonated
info [NORM] Gather information about the SQL server
links [NORM] Enumerate linked servers [I,L]
olecmd [PRIV] Execute a system command using OLE automation procedures [I,L]
query [NORM] Execute a custom SQL query [I,L]
rows [NORM] Get the count of rows in a table [I,L]
sample [NORM] Query a sample of table data [I,L]
sccm [SUBM] Submodule for SCCM specific commands
search [NORM] Search a table for a column name [I,L]
smb [NORM] Coerce NetNTLM auth via xp_dirtree [I,L]
tables [NORM] Enumerate tables within a database [I,L]
users [NORM] Enumerate users with database access [I,L]
whoami [NORM] Gather logged in user, mapped user and roles [I,L]
xpcmd [PRIV] Execute a system command using xp_cmdshell [I,L]
Los comandos SCCM se pueden encontrar ejecutando pysqlrecon [OPCIONES] sccm -h (las banderas globales requeridas deberán especificarse para que esto funcione; consulta uso)
addadmin [PRIV] Elevate an account to Full Administrator [I]
credentials [NORM] Display encrypted credentials [I]
logons [NORM] Display SCCM clients and last logged on user [I]
removeadmin [PRIV] Remove elevated account or elevated privileges [I]
sites [NORM] Gather SCCM site info [I]
taskdata [NORM] Decrypt task sequences [I]
tasklist [NORM] Display task sequences [I]
users [NORM] Enumerate SCCM users [I]
PySQLRecon tiene opciones globales (disponibles para cualquier comando), y algunos comandos introducen banderas adicionales. Todas las opciones globales deben especificarse antes del nombre del comando:
pysqlrecon [GLOBAL_OPTS] COMMAND [COMMAND_OPTS]
Ver opciones globales:
pysqlrecon --help
Ver opciones específicas de un comando:
pysqlrecon [GLOBAL_OPTS] COMMAND --help
Cambia la base de datos a la que se autentica, o que se usa en ciertos comandos de PySQLRecon (query, tables, columns, rows), con la bandera --database.
Dirige la ejecución de un comando de PySQLRecon a un servidor vinculado (en lugar del servidor SQL al que se está autenticando) usando la bandera --link.
Suplanta una cuenta de usuario al ejecutar un comando de PySQLRecon con la bandera --impersonate.
--link y --impersonate son incompatibles.
ntlmrelayxPySQLRecon se puede usar con proxychains para aprovechar la autenticación retransmitida dirigida a un servicio mssql://. Debido a la forma en que funcionan las sesiones de ntlmrelayx, el parámetro --database no será respetado al ejecutar PySQLRecon (la sesión retransmitida siempre se conectará a la base de datos master). Esto puede ser relevante especialmente cuando se usan módulos SCCM, que requieren que se especifique la base de datos del sitio. Para solucionarlo, primero cambia el contexto de la base de datos usando el módulo query (esto persistirá en cualquier uso posterior de PySQLRecon, con la misma sesión retransmitida). Ejemplo:
proxychains4 pysqlrecon -t <target> -d <DOMAIN> -u <username> -p FAKE query --query 'use new_db_name'
Ahora puedes ejecutar módulos/consultas que apunten a recursos dentro de esa base de datos específica, incluso sin especificar --database, desde la misma sesión de ntlmrelayx.
pysqlrecon usa uv para gestionar dependencias. Instala desde el código fuente y configura para desarrollo con:
# Instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Instalar pysqlrecon
git clone https://github.com/tw1sm/pysqlrecon
cd pysqlrecon
uv sync
uv run pysqlrecon --help
PySQLRecon es fácilmente extensible: consulta la plantilla y las instrucciones en resources