- Modificato
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
- Come eseguire eseguibili sul router: https://forum.fibra.click/d/19669-modifica-tplink-vx220-g2v-e-vr1210v/8
- HLOG, QLN e altre info VDSL: https://forum.fibra.click/d/19669-modifica-tplink-vx220-g2v-e-vr1210v/10