Apro questa discussione per raccontarvi come modificare i router TPLink, nello specifico vr1210v e vx220-g2v ma credo che anche si possa applicare la stessa procedura per altri router TPLink.

Iniziamo con la motivazione di queste modifiche, beh ho iniziato a fare questo principalmente perché mi piace esplorare come funzionano i dispositivi e sopperire a mancanze della gui di TPLink (ad esempio non è possibile specificare l'indirizzo per RDNSS).

Avvertenza: la seguente spiegazione è molto tecnica e la modifica potenzialmente è rischiosa, il target di questa discussione sono utenti con esperienza con Linux, non chiedetemi cose ovvie e ricordate che NON sono responsabile di eventuali danni

Ultima avvertenza: evitate di modificare router offerti in comodato d'uso dagli ISP, il TPLink vx220-g2v costa 116€ non ha davvero senso danneggiare proprietà altrui per risparmiare quei soldi

Ho iniziato ad esplorare il router esplorando la telnet già presente collegandomi al router e inserendo la stessa password che si usa per accedere normalmente alla gui, ecco il risultato.. come vedete è molto limitato e non permette di accedere alla shell di Linux:

Ovviamente successivamente ho provato a cercare eventuali porte in ascolto sul router ma non ho trovato nulla di interessante, quindi sono andato avanti cercando di estrarre il firmware del router (https://static.tp-link.com/2020/202012/20201211/VX220_2.0.0%200.9_v603c.0_%20Build_201127_Rel.51511n.bin.zip), estraendo l'archivio zip si ottiene il file "VX220_2.0.0 0.9_v603c.0_ Build_201127_Rel.51511n.bin".

A questo punto usando binwalk per cercare di analizzare il firmware si ottiene questo:

Molto bene c'è un immagine UBI, binwalk può estrarla con l'opzione "-e":

Ok il rootfs del firmware è stato estratto! Ora cosa si può fare per ottenere accesso alla shell del router? Beh iniziamo con il file /etc/passwd

/etc/passwd è un symlink a /var/passwd che però non esiste.. /var/passwd non fa parte del firmware, infatti in /var il router salva la configurazione dell'utente compreso /var/passwd.

Però come si vede dall'immagine c'è /etc/passwd.bak, vediamo cosa contiene:

Ecco per accedere alla shell ci serve la password di "admin", ma come scoprirla? Si può usare un software chiamato "John the Ripper" che permette di cercare nel suo dizionario se l'hash della password è associata ad una specifica password:

Quindi la password di admin è.. 1234 piuttosto semplice 🤣

Ok adesso che sappiamo la password bisogna trovare un modo per eseguire il login sul router come utente admin usando la password 1234, sul router c'è già telnet quindi sarebbe molto bello potere utilizzare telnet per lo scopo.

Qua ho passato ore a cercare un modo per avviare telnet per consentire il login come admin.. Fortunatamente ho trovato un tool chiamato tpconf_bin_xml (https://github.com/sta-c0000/tpconf_bin_xml) che è stato creato per TP-Link TD-W9970 e TD-W9980 che però funziona anche per vr1210v e vx220-g2v (ok tra l'altro nella pagina c'è pure la password di admin 🤣 ahh ore perse ad estrarre il firmware...)

A quanto si può fare eseguire dal firmware TPLink qualsiasi comando semplicemente inserendolo nel tag "Description" del xml della configurazione, trovate info precise qua https://forum.kitz.co.uk/index.php/topic,17108.msg369453.html?PHPSESSID=b6666195b33baf41579e2c23d94181b3#msg369453

Quindi ho esportato il backup della configurazione dalla gui del router:

E successivamente convertito a XML tramite tpconf_bin_xml.py:

Ok conversione riuscita ma attenzione al messaggio "wrong endianness, automatically switching", questo che il file di backup utilizza little-endian invece di big-endian sarà essenziale interessarsi questo aspetto in fase di riconversione del .xml modificato a ".bin" supportato dal router.

Adesso la modifica, è piuttosto semplice basta aggiungere questa riga che comporterà l'esecuzione del comando telnet al riavvio del router!

Adesso si può creare il file bin da passare al router, come vedete ho specificato --littleendian altrimenti il file sarà non valido per i router vr1210v e vx220-g2v.

Poi ripristinare il backup dal router e al riavvio è sufficiente usare telnet per accedere al router! Ed ecco finalmente la shell del router!

Si può accedere al comando che gestisce i driver vdsl:

Ed anche ad iptables!

In sintesi cosa bisogna fare per accedere alla shell:

  • Esportare il file backup dal router
  • Convertire il file backup in xml con tpconf_bin_xml.py
  • Modificare l'xml aggiungendo
    <Description val="300Mbps Wireless N USB VDSL/ADSL Modem Router`telnetd -p 1023 -l login`" />
  • Convertire il file xml in bin con tpconf_bin_xml.py --littleendian
  • Ripristinare il backup usando il file modificato
  • Accedere da telnet (utente: admin, password: 1234)

Appendice

    ErnyTech Sei un grande 😂
    Dovresti farti assumere da TP-Link!

      ErnyTech password: 1234

      Ma nemmeno si sono sforzati di renderla pseudocasuale come sugli Zyxel? (che non sono campioni in sicurezza, anzi)

        giusgius

        Dovresti farti assumere da TP-Link!

        Magari 🤣

        handymenny A quanto pare TPLink è peggio 🤣 però finché sono queste cagate che difficilmente possono danneggiare l'utente (serve cmq la password per ripristinare il backup ecc) ci sta

          ErnyTech le credenziali di default di tp-link come sono? Perché se anche quelle sono fisse, ci vuole poco a farci una botnet

            ErnyTech Aggiunta alla spiegazione: Come eseguire eseguibili sul router

            Allora il firmware è read only quindi non si può facilmente aggiungere binari, tuttavia il router monta pendrive con filesystem NTFS automaticamente:

            Potete quindi eseguire qualsiasi eseguibile (se vi basta la memoria e cpu) nel router! Attenzione che vanno cross compilati per ARM e le librerie linkate staticamente (non si sono tutte le classiche librerie di una distro GNU Linux)

            Di seguito cpuinfo:

            handymenny Le devi cambiare al primo login

            ErnyTech HLOG, QLN e altre info VDSL

            Come ogni modem che usa i driver broadcom si può utilizzare DSLstats, è necessario ovviamente avere accesso alla shell come ho spiegato sopra.

            Configurare DSLstats come segue:

            Modem: TP-Link TD-WD8960N
            Ip: il vostro ip del router
            Telnet user: admin
            Telnet password: 1234
            Telnet port: 1023
            Cli command: xdslctl

            Ed ecco un (brutto) HLOG

            Da veramente un sacco di informazioni DSLstats!

            Grazie per la segnalazione,

            I nostri ingegneri del reparto R&D confermano che non è possibile eseguire la procedura sopra descritta sul modello VR1210v con l'ultima release del FW ufficiale.

            Stiamo verificando per il modello VX220-G2v.

            Saluti
            TP-Link Italia Support

            O_O

            giuse56

            Siamo il supporto tecnico TP-Link Italia, in quanto ci è pervenuta questa segnalazione che stiamo appunto verificando con il nostro team R&D.

            Non risponderemo al forum ad eventuali richieste dirette in merito ai nostri apparati, per farlo ci sono gli appositi canali.

            Grazie!

            wow che forum famoso

            Grande! Questo forum scomoda pure la tp link!😁

            un mese dopo

            @ErnyTech conosci qualche comando per variare l'snr della connessione VDSL da Telnet per il modello vx220-g2v?
            ho seguito la tua guida e ha funzionato perfettamente 😃
            così a occhio penso che il comando giusto sia xdslctl configure --snr xx

            ho provato con xdslctl configure --snr 1
            che corrisponde a -5,5dB di SNR ma dopo che la linea si è riallineata la modifica non si era applicata (VDSL2)

              ah cavolo, non lo sapevo.
              beh perlomeno avrò una linea più stabile, disastrata com'è non è poco.

              6 mesi dopo

              Salve, molto interessato al problema ho completato la procedura e sarei pronto a caricare sul router il .bin modificato. Mi trattiene un chiarimento necessario. ErnyTech ha postato la procedura dicevdo che funziona sul router VR1210V ma il supporto TPlink dice che non funziona sul VR1210V ultimo firmware. Chiedo a ErnyTeck se ha provato personalmente la procedura anche con l'ultimo firmware disponibile.
              Io sono aggiornato a Firmware Version:2.0.0 0.9 v6041.0 Build 210701 Rel.27192n Hardware Version:Archer VR1210v v1 00000001. Prima di completare il caricamento attendo cortese risposta. Grazie

                Informativa privacy - Informativa cookie - Termini e condizioni - Regolamento - Disclaimer - 🏳️‍🌈
                P.I. IT16712091004 - info@fibraclick.it

                ♻️ Il server di questo sito è alimentato al 100% con energia rinnovabile