Torna indietro   Hardware Upgrade Forum > Networking e sicurezza > Networking > Guide e thread ufficiali

Sony FE 16-25mm F2.8 G: meno zoom, più luce
Sony FE 16-25mm F2.8 G: meno zoom, più luce
Il nuovo Sony FE 16-25mm F2.8G si aggiunge all'analogo 24-50mm per offrire una coppia di zoom compatti ma di apertura F2.8 costante, ideali per corpi macchina altrettanto compatti (vedi A7c ) e fotografia di viaggio.
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione
Motorola è decisa sulla sua strada: questo nuovo edge 50 Pro non guarda a specifiche stellari ma considera di più l’aspetto estetico. E si propone elegantemente con linee sinuose e un sistema operativo veloce. Peccato per un prezzo un po' fuori mercato.
Ecovacs Goat G1-800, mettiamo alla prova il robot tagliaerba facile ed efficace
Ecovacs Goat G1-800, mettiamo alla prova il robot tagliaerba facile ed efficace
Ecovacs allarga la sua famiglia di robot tagliaerba, ed abbiamo testato per diverse settimane il nuovo Goat G1-800. Installazione velocissima, app precisa, e lavoro infallibile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-08-2018, 23:51   #61
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da Bovirus Guarda i messaggi
@palmerpalm

Ho visto che hai aggiornato il tool adbtools2.

Mi chiedevo se era possibile implementare le proposte indicate qui

https://www.hwupgrade.it/forum/showp...6&postcount=45
E' nell'elenco delle cose da fare

Adesso stavo lavorando sulla modifica del firmware, a tempo ridotto perchè, essendo in ferie, gli impegni "vacanzieri" e familiari richiedono più tempo degli impegni lavorativi
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2018, 23:55   #62
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pimander Guarda i messaggi
Bel lavoro palmerpalm !

mi era già rassegnato a considerare il router un soprammobile...

Se leggo bene dal post sopra in /tmp c'è parecchio spazio che viene salvato in flash, eventuali pacchetti si potrebbero installare lì no ?
Su /tmp c'è un file system temporaneo di tipo tmpfs, ossia che risiede in memoria, e che viene azzerato ad ogni reboot.

Il posto migliore per mettere pacchetti aggiuntivi è utilizzare una chiavetta USB, mi manca poco per implementare un firmware modificato che permette di installare entware su chiavetta USB e, tramite esso, installare pacchetti aggiuntivi già disponibili.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2018, 00:00   #63
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pimander Guarda i messaggi
E per quanto riguarda l'idea di palmerpalm di metterli su chiavetta, bisogna tener conto che il router monta automaticamente le chiavette su /mnt/sda1 e 2.
Mi pare, ma potrei sbagliarmi, che la chiavetta venga montata automaticamente solamente se è abilitata la relativa funzione di condivisione del contenuto della chiavetta tramite Samba. Se Samba non è abilitato la chiavetta non dovrebbe essere montata.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2018, 00:06   #64
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pimander Guarda i messaggi
H

Infine, per chi volesse compilare socat o quant'altro ho usato buildroot-2018.02-rc2, con

Target Architecture (ARM (little endian))
Target Architecture Variant (cortex-A9)
Anche io ho utilizzato buildroot, ma 2018.05, e qemu per emulare un sistema ARM cortex-A9 vagamente simile a quello del router ed ho utilizzato ampiamente qemu ed il debugger GDB per capire il funzionamento di alcuni eseguibili come sig_verify o cm. Spero di poter fare un post in futuro descrivendo anche questo setup, adesso vado in ordine di priorità puntando a trovare una strada non troppo complicata per installare un firmware modificato.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2018, 00:14   #65
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pimander Guarda i messaggi
Ho avuto la (pessima) idea di settare la password di root e poi copiare /tmp/passwd in /etc/passwd.orig, lasciando solo root,nobody e daemon, sperando che al boot lo copiasse in /tmp.

Ma non gli è piaciuto, o meglio, evidentemente il salt è diverso ad ogni riavvio, e ho dovuto modificare hack-script.sh per eliminare la password che avevo settato

In più sembra che il router si sia accorto di qualcosa e ha ripristinato startup.xml nonché ranzato i 2 script che avevo copiato in /etc.

Morale, qualche modifica al rootfs si può fare e la mantiene, ma bisogna andarci con i piedi di piombo

Update: in effetti non ha ripristinato startup.xml originale, il comando shell era ancora lì...
Pur avendo lavorato nel settore embedded secoli fa, non ho molta esperienza con i SoC, vado un po' a naso. Si direbbe che con i suoi tempi aggiorni la flash del rootfs (o di una sua copia ?). Facendo le prove ho riavviato varie volte e i file aggiunti/modificati erano rimasti. Ma quando ho sgarrato ha recuperato da qualcosa di già modificato.
Forse qualcuno più esperto di SoC ha la spiegazione...

Update2: per non dover eseguire ogni volta hack-script.sh dopo un riavvio ho semplicemente tolto l'asterisco da /etc/passwd.orig e pare che funzioni.
Per quanto riguarda lo "sgarro", ripensandoci, prima di avere la bella idea di settare la password di root avevo curiosato nelle partizioni mtd, montandone qualcuna. Forse è questo che ha fatto scattare qualcosa e ha provocato quel ripristino parziale del rootfs...

Update3: forse ho capito l'arcano... quando la prima volta sono passato in factory-mode mi ero dimenticato di togliere il cavo vdsl e tornando in modo normale con "restore defaultSettings" mi ha rifilato l'ultimo firmware... non avendo voglia di fare il downgrade ho pensato di tenerlo d'occhio ma per il momento di rimanere così. E però ho scoperto adesso per caso che è tornato magicamente al firmware DVA-5592_A1_WI_20170908. Pare che ne abbia una copia di emergenza a bordo e con qualche manovra inconsulta abbia scatenato il panic-mode. Solo non mi spiego come mai startup.xml avesse ancora il comando shell da me aggiunto...
Ho avuto la sensazione, ma non sono affatto sicuro, che se si aggiungono file sul root file system in JFFS2 non ci sono grossi problemi, se invece si modificano file esistenti iniziano ad apparire dei messaggi di checksum error sulla console.

Potrebbe anche essere che, a seguito di questi errori, alcuni nuovi nodi jffs2 che hanno sostituito i vecchi possano essere marcati errati e, quindi, al riavvio potrebbero riapparire vecchi nodi e vecchi files.

Riguardo all'upgrade il router utilizza la partizione mtd3 per caricare il firmware di upgrade; appena caricato, grazie ad un modulo proprietario, tale partizione viene divisa in due e create due nuove partizioni (mtd8 e mtd9) dove vanno il nuovo bootloader ed il nuovo root file system, al riavvio queste due partizioni diventano quelle attive ma, se per qualche ragione qualcosa non dovesse andare, il router fa un paio di reboot e ricarica la versione precedente funzionante ancora presente sulle vecchie partizioni e non ancora cancellata.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 14-08-2018, 00:25   #66
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Firmware Modification Kit

Sul mio repository github adbtools2 ho appena rilasciato un "Firmware Modification Kit" con istruzioni e script per generare un firmware modificato e poterlo caricare sul router, seppure con alcune limitazioni:
  • funiziona solo a partire dal firmware DVA-5592_A1_WI_20180405.sig
  • il firmware modificato non deve essere di dimensione maggiore di quello attuale. Questo vuol dire che si possono aggiungere sì dei files ma non più di qualche Mb
  • gira solamente in ambiente Linux

Nei prossimi giorni cerco di trovare un po' di tempo per fare un post un po' più articolato e di concludere con la installazione di entware.

Al momento il software modificato dal kit può essere ampiamente personalizzato, ma di default effettua solo 3 modifiche:
  • Permette, in modalità normale, l'utilizzo del comando "system shell" per avere una normale shell busybox
  • elimina l'asterisco nel campo della password dell'utente root in /etc/passwd.orig per permettere un "su" a root senza password
  • modifica gli script di upgrade in modo da permettere l'upgrade con un firmware non firmato
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 15-08-2018, 10:29   #67
pecile
Member
 
Iscritto dal: Jan 2008
Messaggi: 163
si riesce ad alzare la portante?
pecile è offline   Rispondi citando il messaggio o parte di esso
Old 15-08-2018, 22:44   #68
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pecile Guarda i messaggi
si riesce ad alzare la portante?
Non credo.
Da quello che ho capito io, la velocità viene di fatto stabilita non dal router che si ha a casa, ma dal dispositivo che è installato nell'armadio.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 15-08-2018, 23:36   #69
pecile
Member
 
Iscritto dal: Jan 2008
Messaggi: 163
Quote:
Originariamente inviato da palmerpalm Guarda i messaggi
Non credo.
Da quello che ho capito io, la velocità viene di fatto stabilita non dal router che si ha a casa, ma dal dispositivo che è installato nell'armadio.
Ok grazie!
pecile è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 17:20   #70
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
@palmerpalm

Ciao,
stavo pensando di metter su una schedulazione per l'accesso da remoto, come avevo sul vecchio router.
Pensavo di usare il busybox che ho compilato che comprende crond e quando si tratta di abilitare/disabilitare usare il meccanismo del clish, visto che modifica le iptables e altre cose.
Se ho capito bene si tratta di eseguire /etc/ah/SSH.sh con dei parametri, come X_ADB_SSHServer.RemoteAccess.Enable = true/false. Ma non mi è chiaro se è un parametro o una (o più) variabile d'ambiente da settare prima di eseguirlo.
Tu sai come funziona ?
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 17:58   #71
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
Capito...

Mi rispondo da solo, bastava guardare hack-script.sh...

Bisogna dare in sequenza (?)

Codice:
cmclient DOM Device /etc/cm/tr181/dom/Management.xml
OK
OK
cmclient SET X_ADB_SSHServer.RemoteAccess.Enable false/true
OK
OK
Non so se il primo sia necessario però.

Update: pare di no, ho riavviato ed è bastato il secondo. Dovrò però gestire lo stato al riavvio visto che così la configurazione non la salva, e anche salvandola è da gestire nel caso che per qualche ragione riavvi mentre non ci sono, per esempio se manca la luce abbastanza tempo da far morire l'UPS.

Ultima modifica di pimander : 16-08-2018 alle 18:06.
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 18:18   #72
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da pimander Guarda i messaggi
Mi rispondo da solo, bastava guardare hack-script.sh...

Bisogna dare in sequenza (?)

Codice:
cmclient DOM Device /etc/cm/tr181/dom/Management.xml
OK
OK
cmclient SET X_ADB_SSHServer.RemoteAccess.Enable false/true
OK
OK
Non so se il primo sia necessario però.

Update: pare di no, ho riavviato ed è bastato il secondo. Dovrò però gestire lo stato al riavvio visto che così la configurazione non la salva, e anche salvandola è da gestire nel caso che per qualche ragione riavvi mentre non ci sono, per esempio se manca la luce abbastanza tempo da far morire l'UPS.
No, il primo non è necessario perché viene eseguito dagli script di startup, che eseguono tutti i file presenti nella stessa directory dove si trova Management.xml.

Io però cercherei di usare il meno possibile le particolarità di tale firmware, tramite l'utilizzo di cmclient, perchè non sono documentate e talvolta potrebbero non fare quello che ci si aspetta. Io cercherei di utilizzare entware che è l'oggetto del mio prossimo post, che sto per fare.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 18:26   #73
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
Non so

Ma entware non è solo un repository di pacchetti con più o meno le stesse cose che ottieni con buildroot ?
Se si qualunque pacchetto bisogna vedere se non fa a pugni con ciò che già gira sul router, o pensi di escludere in qualche modo tutta la gestione che fa attualmente ?
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 19:04   #74
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Rilasciato il firmware modificato (v0.8)

Rilasciato una nuova versione del firmware modificato (v0.8)

Sul mio repository GitHub (https://github.com/digiampietro/adbtools2), come avevo accennato in un post precedente, si trova un po' di documentazione su come diventare root sul router e su come modificare il firmware originale utilizzando il "Firmware Modification Kit" in ambiente Linux e disponibile sempre nello stesso repository (directory mod-kit).

Utilizzando questi tool ho generato una versione di firmware modificato che, rispetto a quello originale, ha le seguenti modifiche:
  • Permette, in modalità normale, l'utilizzo del comando "system shell" per avere una normale shell busybox. Nel firmware originale questa possibilita' esiste solo in modalita' "factory mode"
  • Elimina l'asterisco nel campo della password dell'utente root in /etc/passwd.orig per permettere, nella shell busybox, un "su" a root con password di default "no.wordpass" (nella versione v0.8, in quella precedente la password non era necessaria). Da notare che root non puo' comunque fare il login con telnet o ssh e tale accesso non e' comunque disponibile da Internet. Volendo, utilizzando il "mod-kit", e' possibile generare un proprio firmware in cui mettere una propria password all'utente root.
  • Ha gli script di upgrade modificati in modo da permettere, in futuro, l'upgrade con un firmware non firmato senza dover ricorrere all'hack descritto sotto e necessario per la prima installazione di un firmware non originale.
  • Permette l'installazione di entware (https://github.com/Entware/Entware) su una chiavetta USB pre-formattata con la prima o unica partizione con un file system linux ext2, ext3 o ext4. Entware e' un progetto che mette a disposizione migliaia di pacchetti pre-compilati, pronti da installare su dispositivi embedded, come i router, attraverso un package manager (opkg), simile a quello usato da OpenWRT, e che gestisce automaticamente le dipendenze. Entware cerca di dare "meno fastidio" possibile al firmware originale, si installa in /opt (dove e' stata montata la chiavetta USB) e installa sotto /opt anche le librerie che servono ai vari eseguibili, interferendo quindi pochissimo con il software gia' presente nel firmware. L'elenco dei pacchetti disponibili che vengono scaricati automaticamente da opkg per l'architettura armv7 Cortex-A9 (quella del nostro router DVA-5592) sono consultabili qui: http://bin.entware.net/armv7sf-k3.2/Packages.html

Per procedere alla installazione del firmware ed all'utilizzo di entware sono necessari i seguenti pre-requisiti:
  • procurarsi una chiavetta USB, creare una partizione (anche piu' di una volendo) con un file system linux ext2, ext3 o, preferibilmente, ext4. Nel caso di piu' partizioni, la prima e' quella che verra' utilizzata da entware e che dovra' essere formattata in questo modo. La cosa piu' facile e' effettuare questa formattazione in ambiente Linux con tools come gparted o analoghi; in ambiente Windows probabilmente esistono tools per fare la stessa cosa, ma io non li conosco.
  • per cercare di evitare violazioni del copyright e della proprieta' intellettuale di ADB, D-Link o Wind non e' opportuno mettere a disposizione l'intero file del firmware modificato in un sito web. Come alternativa sara' necessario scaricare:
    • il firmware originale su cui si basa il firmware modificato, scaricabile dal sito ufficiale D-Link: ftp://ftp.dlink.eu/Products/dva/dva-...I_20180405.zip ovviamente va utilizzato il file "unzippato"
    • il file contenente le differenze rispetto al file originale (1,6Mb contro 24Mb) generato utilizzando xdelta3 (http://xdelta.org/) e disponibile su un mio sito alla url: http://va.ler.io/myfiles/dva/DVA-559...0.8.sig.xdelta
    • il software xdelta3; in ambiente Linux e' solitamente disponibile nel software repository standard e, ad esempio, su Ubuntu si installa con:

      Codice:
      $ sudo apt-get install xdelta3
      in ambiente windows si puo' scaricare da https://www.romhacking.net/utilities/598/
    • generare il firmware modificato sotto linux con un comando simile al seguente:

      Codice:
      $ xdelta3 -d -s DVA-5592_A1_WI_20180405.sig DVA-5592_A1_WI_20180405-mod-v0.8.sig.xdelta DVA-5592_A1_WI_20180405-mod-v0.8.sig
    • sotto windows il comando e' analgo, dopo aver scaricato xdelta3:

      Codice:
      C:\> xdelta -d -s DVA-5592_A1_WI_20180405.sig DVA-5592_A1_WI_20180405-mod-v0.8.sig.xdelta DVA-5592_A1_WI_20180405-mod-v0.8.sig
  • scaricare lo script hack-script.sh dal repository adbtools2, lo si puo' fare cliccando su https://raw.githubusercontent.com/di...hack-script.sh e salvando il relativo file di testo. Questo script servira' per fare il copia/incolla, quando si e' in telnet sul router, per creare lo script che permette di "hackerare" il router.

Una volta che si ha a disposizione il file del firmware modificato (DVA-5592_A1_WI_20180405-mod-v0.8.sig) e' necessario procedere ad "hackerare" il router per permettere l'installazione di un firmware non originale e non firmato digitalmente dal costruttore.

Nell'ambito di questa procedura la configurazione del router viene azzerata e riportata alla configurazione di fabbrica, e' bene, pertanto, prima di procedere salvare la configurazione esistente in modo da poterla ricaricare alla fine della procedura.

Inoltre durante la durata della procedura la funzionalita' normale de router viene meno, non funzionera' ne' l'accesso WiFi ne' l'accesso ad Internet fino al completamento della procedura che, di solito, richiede 15-30 minuti.

Da tenere presente le solite avvertenze del caso: si sta per effettuare una operazione che non solo non e' supportata da chi ci ha fornito il router, ma che aggira le protezioni che il costruttore del router ha messo in atto per impedirci proprio di effettuare questa operazione. Essendo una operazione che modifica il firmware del router l'utente che la effettua lo fa a proprio rischio e pericolo, nessuna responsabilita' potra' essere attribuita all'autore di questa procedura, neanche qualora la procedura di modifica, o il firmware modificato dovessero procurare danneggiamenti al router e/o persino all'ambiente circostante.

Io posso solo dire che, nel mio personalissimo caso, ho installato il firmware modificato senza inconvenienti e che, volendo, posso sempre ritornare ad installare il firmware originale.

Per modificare il firmware occorre eseguire i seguenti passi:
  • collegarsi con telnet al router ed entrare in modalita' "factory mode" per avere accesso, da utente non privilegiato, ad una shell Linux sul router. Da notare che il comando "factory-mode" e' nascosto, non viene auto-completato premendo tab

    Codice:
    valerio@ubuntu-hp:~$ telnet 192.168.1.1
    Trying 192.168.1.1...
    Connected to 192.168.1.1.
    Escape character is '^]'.
    Login: admin
    Password:
    
    ********************************************
    *                 D-Link                   *
    *                                          *
    *      WARNING: Authorised Access Only     *
    ********************************************
    
    Welcome
    DLINK# factory
    DLINK(factory)# factory-mode
    DLINK(factory)#
    DLINK(factory)# Connection closed by foreign host.
    valerio@ubuntu-hp:~$
  • il router fa il reboot ed entra in "factory mode", in questa modalita' la funzionalita' di accesso ad Internet viene persa, non ci sono piu' le reti WiFi che avevamo impostato, non e' attivo il DHCP server per cui dovremo impostare a mano l'indirizzo IP sul PC per connetterci al router che ha il suo indirizzo di default 192.168.1.1. Anche eventuali altre configurazioni vengono perse
  • fare il login sul router, entrare nella shell con il comando "system shell" ed "hackerare" il router con hack-script.sh

    Codice:
    valerio@ubuntu-hp:~$ telnet 192.168.1.1
    Trying 192.168.1.1...
    Connected to 192.168.1.1.
    Escape character is '^]'.
    Login: admin
    Password:
    
    ********************************************
    *                 D-Link                   *
    *                                          *
    *      WARNING: Authorised Access Only     *
    ********************************************
    
    Welcome
    DLINK# system shell
    
    
    BusyBox v1.17.3 (2018-04-11 12:29:54 CEST) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    /root $ cat > /tmp/hack-script.sh
       fare un copia incolla dello script sul terminale
          dare un CTRL-D per terminare la copia
    
    /root $ chmod a+x /tmp/hack-script.sh
    /root $ /tmp/hack-script.sh
  • a questo punto si e' "hackerato" il router: si puo' dare il comando "su -" e diventare root (cosa che non ci serve adesso) ed inoltre, fintanto che non si riavvia il router, e' possibile caricare dalla normale interfaccia web, il firmware modificato. Questo e' reso possibile dal fatto che:
    • si e' copiato il file /usr/sbin/upgrade.sh in /tmp/upgrade.sh
    • si e' modificato /tmp/upgrade.sh in modo che continui la procedura di upgrade anche quando il risultato del controllo della firma del file del firmware e' negativo
    • si e' "virtualmente" sostituito /usr/sbin/upgrade.sh con /tmp/upgrade.sh tramite il comando, eseguito da root:

      Codice:
      mount --bind /tmp/upgrade.sh /usr/sbin/upgrade.sh
  • procedere, tramite interfaccia web, a caricare il firmware modificato DVA-5592_A1_WI_20180405-mod-v0.8.sig. L'interfaccia web in "factory mode" e' leggermente diversa ed occorre selezionare la modalita' avanzata per avere il menu' che permette l'aggiornamento del firmware.
  • se tutto procede come previsto il firmware modificato viene installato con successo sul router ed il router fa il reboot con il nuovo firmware rimanendo sempre in "factory mode"
  • a questo punto e' necessario uscire dal "factory mode" con il comando "restore default-setting"

    Codice:
    valerio@ubuntu-hp:~$ telnet 192.168.1.1
    Trying 192.168.1.1...
    Connected to 192.168.1.1.
    Escape character is '^]'.
    Login: admin
    Password:
    
    ********************************************
    *                 D-Link                   *
    *                                          *
    *      WARNING: Authorised Access Only     *
    ********************************************
    
    Welcome
    DLINK# restore default-setting
  • dopo qualche minuto il router fa il reboot e rientra in modalita' normale, se si vuole ripristinare la normale operativita' a questo punto e' possibile ricaricare la configurazione che era stata salvata in precedenza
  • e' possibile verificare che il nuovo firmware e' realmente installato facendo un telnet al router e dando il comando "system shell" e poi "su -", password di default "no.wordpass", verificando cosi' che si e' in grado di diventare root:

    Codice:
    valerio@ubuntu-hp:~$ telnet 192.168.1.1
    Trying 192.168.1.1...
    Connected to 192.168.1.1.
    Escape character is '^]'.
    Login: admin
    Password: 
    
    ********************************************
    *                 D-Link                   *
    *                                          *
    *      WARNING: Authorised Access Only     *
    ********************************************
            
    Welcome
    DLINK# system shell
    
    
    BusyBox v1.17.3 (2018-04-11 12:29:54 CEST) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
    /root $ su -
    
    
    BusyBox v1.17.3 (2018-04-11 12:29:54 CEST) built-in shell (ash)
    Enter 'help' for a list of built-in commands.
    
          ___           ___           ___           ___     
         |\__\         /\  \         /\  \         /\  \    
         |:|  |       /::\  \       /::\  \       /::\  \   
         |:|  |      /:/\:\  \     /:/\:\  \     /:/\:\  \  
         |:|__|__   /::\~\:\  \   /::\~\:\  \   _\:\~\:\  \ 
         /::::\__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /\ \:\ \:\__\
        /:/~~/~    \/__\:\/:/  / \/__\:\/:/  / \:\ \:\ \/__/
       /:/  /           \::/  /       \::/  /   \:\ \:\__\  
       \/__/            /:/  /         \/__/     \:\/:/  /  
                       /:/  /                     \::/  /   
                       \/__/                       \/__/    r41358.07b1b3a7  
    ..................................................................
     yet another purposeful solution by  Advanced Digital Broadcast SA
    ..................................................................
    root@dlinkrouter:~#
  • a questo punto e' possibile inserire la chiavetta USB formattata con il file system Linux ext2, ext3 o ext4 e procedere alla installazione di entware con il comando seguente (viene mostrato anche l'output nel caso che tutto vada a buon fine):

    Codice:
    root@dlinkrouter:~# /etc/init.d/entware.sh install alternative
    entware.sh: fstype: ext3
    entware.sh: module ext2 already loaded
    entware.sh: module mbcache already loaded
    entware.sh: module jbd already loaded
    entware.sh: module jbd2 already loaded
    entware.sh: module ext3 already loaded
    entware.sh: module ext4 already loaded
    entware.sh: /opt/etc/init.d/rc.unslung not found
    entware.sh: entware software not found on /opt
    entware.sh: Entware Installation
    entware.sh: downloading http://bin.entware.net/armv7sf-k3.2/installer/alternative.sh
    Connecting to bin.entware.net (81.4.123.217:80)
    alternative.sh       100% |***************************************************************************************************************************|  2031   0:00:00 ETA
    entware.sh: installing entware, executing /tmp/alternative.sh
    Info: Checking for prerequisites and creating folders...
    Warning: Folder /opt exists!
    Info: Opkg package manager deployment...
    Connecting to bin.entware.net (81.4.123.217:80)
    opkg                 100% |***************************************************************************************************************************|   131k  0:00:00 ETA
    Connecting to bin.entware.net (81.4.123.217:80)
    opkg.conf            100% |***************************************************************************************************************************|   190   0:00:00 ETA
    Connecting to bin.entware.net (81.4.123.217:80)
    ld-2.27.so           100% |***************************************************************************************************************************|   135k  0:00:00 ETA
    Connecting to bin.entware.net (81.4.123.217:80)
    libc-2.27.so         100% |***************************************************************************************************************************|  1218k  0:00:00 ETA
    Connecting to bin.entware.net (81.4.123.217:80)
    libgcc_s.so.1        100% |***************************************************************************************************************************| 50840   0:00:00 ETA
    Connecting to bin.entware.net (81.4.123.217:80)
    libpthread-2.27.so   100% |***************************************************************************************************************************| 92648   0:00:00 ETA
    Info: Basic packages installation...
    Downloading http://bin.entware.net/armv7sf-k3.2/Packages.gz
    Updated list of available packages in /opt/var/opkg-lists/entware
    Installing busybox (1.28.3-2) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/busybox_1.28.3-2_armv7-3.2.ipk
    Installing libc (2.27-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libc_2.27-8_armv7-3.2.ipk
    Installing libgcc (7.3.0-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libgcc_7.3.0-8_armv7-3.2.ipk
    Installing libssp (7.3.0-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libssp_7.3.0-8_armv7-3.2.ipk
    Installing librt (2.27-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/librt_2.27-8_armv7-3.2.ipk
    Installing libpthread (2.27-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libpthread_2.27-8_armv7-3.2.ipk
    Configuring libgcc.
    Configuring libc.
    Configuring libpthread.
    Configuring libssp.
    Configuring librt.
    Configuring busybox.
    Installing entware-opt (227000-3) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/entware-opt_227000-3_all.ipk
    Installing libstdcpp (7.3.0-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libstdcpp_7.3.0-8_armv7-3.2.ipk
    Installing entware-release (1.0-2) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/entware-release_1.0-2_all.ipk
    Installing zoneinfo-asia (2018e-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/zoneinfo-asia_2018e-1_armv7-3.2.ipk
    Installing zoneinfo-europe (2018e-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/zoneinfo-europe_2018e-1_armv7-3.2.ipk
    Installing findutils (4.6.0-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/findutils_4.6.0-1_armv7-3.2.ipk
    Installing terminfo (6.1-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/terminfo_6.1-1_armv7-3.2.ipk
    Installing locales (2.27-8) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/locales_2.27-8_armv7-3.2.ipk
    Installing grep (2.26-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/grep_2.26-1_armv7-3.2.ipk
    Installing libpcre (8.41-2) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/libpcre_8.41-2_armv7-3.2.ipk
    Installing opkg (2011-04-08-9c97d5ec-17b) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/opkg_2011-04-08-9c97d5ec-17b_armv7-3.2.ipk
    Installing entware-upgrade (1.0-1) to root...
    Downloading http://bin.entware.net/armv7sf-k3.2/entware-upgrade_1.0-1_all.ipk
    Configuring terminfo.
    Configuring libpcre.
    Configuring grep.
    Configuring locales.
    Entware uses separate locale-archive file independent from main system
    Creating locale archive - /opt/usr/lib/locale/locale-archive
    Adding en_EN.UTF-8
    Adding ru_RU.UTF-8
    You can download locale sources from http://pkg.entware.net/sources/i18n_glib227.tar.gz
    You can add new locales to Entware using /opt/bin/localedef.new
    Configuring entware-upgrade.
    Upgrade operations are not required
    Configuring opkg.
    Configuring zoneinfo-europe.
    Configuring zoneinfo-asia.
    Configuring libstdcpp.
    Configuring entware-release.
    Configuring findutils.
    Configuring entware-opt.
    Info: Congratulations!
    Info: If there are no errors above then Entware was successfully initialized.
    Info: Add /opt/bin & /opt/sbin to your PATH variable
    Info: Add '/opt/etc/init.d/rc.unslung start' to firmware startup script for Entware services to start
    
    This is an alternative Entware installation. We recomend to install and setup Entware version of ssh server
    and use it instead of a firmware supplied one. You can install dropbear or openssh as an ssh server
    root@dlinkrouter:~#
  • riguardo ad entware gli eseguibili vengono installati in /opt/bin e /opt/sbin pertanto queste due directory e' opportune aggiungerle al PATH quando si fa il login, la cosa si puo' fare anche facendo il "source" di /opt/etc/profile come, ad esempio:

    Codice:
    root@dlinkrouter:~# . /opt/etc/profile
    solo che in questo caso /opt/bin e /opt/sbin sono le prime due directory del PATH ed hanno la precedenza nel caso di comandi con lo stesso nome di comandi presenti nel firmware. Talvolta questo puo' non essere quello che ci si aspetta.
  • una volta messo tali directory nel path e' possibile avere la lista del software dipsonibile con "opkg list"

    Codice:
    root@dlinkrouter:~# opkg list
    25volt - 1.0.5-1 - 25volt - A lightweight tool for monitoring APC Smart-UPS and Powercom WOW UPSs
    3proxy - 0.8.12-1 - 3proxy is universal proxy server. It can be used to provide internal users
     with fully controllable access to external resources or to provide external
     users with access to internal resources.
     Note: SSL plugin requires libopenssl to be installed.
    6relayd - 2013-12-10.1-0381cf15e9721054f902354e9c3b9fb0201bab7f - 6relayd is a daemon for serving and relaying IPv6 management protocols to
     configure clients and downstream routers.
     
     6relayd provides server services for RA, stateless DHCPv6, DHCPv6-PD and can
     be used to relay RA, DHCPv6 and NDP between routed (non-bridged) interfaces
     in case no delegated prefixes are provided by the upstream router.
    accel-ppp - 1.11.2-1 - The ACCEL-PPP is high performance PPTP/L2TP/PPPoE server for Linux. Userspace
     daemon has its own PPP implementation, so it does not uses pppd and one process
     (multi-threaded) manages all connections.
    acl - 20180121-1 - Access control list support
     This package provides ACL manipulation utilities
     - chacl
     - getfacl
     - setfacl
    adb - android.5.0.2_r1-1 - Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an emulator instance or connected Android-powered device.
    
    ......
  • maggiori informazioni su opkg si possono avere con "opkg" senza argomenti:

    Codice:
    root@dlinkrouter:~# opkg
    opkg must have one sub-command argument
    usage: opkg [options...] sub-command [arguments...]
    where sub-command is one of:
    
    Package Manipulation:
            update                  Update list of available packages
            upgrade                 Upgrade installed packages
            install <pkgs>          Install package(s)
            configure <pkgs>        Configure unpacked package(s)
            remove <pkgs|regexp>    Remove package(s)
            flag <flag> <pkgs>      Flag package(s)
             <flag>=hold|noprune|user|ok|installed|unpacked (one per invocation)
    
    Informational Commands:
            list                    List available packages
            list-installed          List installed packages
            list-upgradable         List installed and upgradable packages
            list-changed-conffiles  List user modified configuration files
            files <pkg>             List files belonging to <pkg>
            search <file|regexp>    List package providing <file>
            find <regexp>           List packages whose name or description matches <regexp>
            info [pkg|regexp]       Display all info for <pkg>
            status [pkg|regexp]     Display all status for <pkg>
            download <pkg>          Download <pkg> to current directory
            compare-versions <v1> <op> <v2>
                                compare versions using <= < > >= = << >>
            print-architecture      List installable package architectures
            depends [-A] [pkgname|pat]+
            whatdepends [-A] [pkgname|pat]+
            whatdependsrec [-A] [pkgname|pat]+
            whatrecommends[-A] [pkgname|pat]+
            whatsuggests[-A] [pkgname|pat]+
            whatprovides [-A] [pkgname|pat]+
            whatconflicts [-A] [pkgname|pat]+
            whatreplaces [-A] [pkgname|pat]+
    
    Options:
            -A                      Query all packages not just those installed
            -V[<level>]             Set verbosity level to <level>.
            --verbosity[=<level>]   Verbosity levels:
                                            0 errors only
                                            1 normal messages (default)
                                            2 informative messages
                                            3 debug
                                            4 debug level 2
            -f <conf_file>          Use <conf_file> as the opkg configuration file
            --conf <conf_file>
            --cache <directory>     Use a package cache
            -d <dest_name>          Use <dest_name> as the the root directory for
            --dest <dest_name>      package installation, removal, upgrading.
                                    <dest_name> should be a defined dest name from
                                    the configuration file, (but can also be a
                                    directory name in a pinch).
            -o <dir>                Use <dir> as the root directory for
            --offline-root <dir>    offline installation of packages.
            --add-arch <arch>:<prio>        Register architecture with given priority
            --add-dest <name>:<path>        Register destination with given path
    
    Force Options:
            --force-depends         Install/remove despite failed dependencies
            --force-maintainer      Overwrite preexisting config files
            --force-reinstall       Reinstall package(s)
            --force-overwrite       Overwrite files from other package(s)
            --force-downgrade       Allow opkg to downgrade packages
            --force-space           Disable free space checks
            --force-postinstall     Run postinstall scripts even in offline mode
            --force-remove  Remove package even if prerm script fails
            --force-checksum        Don't fail on checksum mismatches
            --noaction              No action -- test only
            --download-only No action -- download only
            --nodeps                Do not follow dependencies
            --nocase                Perform case insensitive pattern matching
            --size                  Print package size when listing available packages
            --force-removal-of-dependent-packages
                                    Remove package and all dependencies
            --autoremove            Remove packages that were installed
                                    automatically to satisfy dependencies
            -t                      Specify tmp-dir.
            --tmp-dir               Specify tmp-dir.
            -l                      Specify lists-dir.
            --lists-dir             Specify lists-dir.
    
     regexp could be something like 'pkgname*' '*file*' or similar
     e.g. opkg info 'libstd*' or opkg search '*libop*' or opkg remove 'libncur*'

Da notare che da root non e' opportuno modificare il file system di root formattato in jffs2, ho notato che il firmware originale, sebbene monti tale file system in modalita' read/write, in realta' non lo modifica mai e lo tratta come se fosse di sola lettura. Andando a modificare tale file system ho notato che iniziano ad apparire dei messaggi di "jffs2 checksum error" sulla console del router (la console seriale collegandosi alle piazzole etichettate IN, OUT, GND, VCC, sulla motherboard), tali messaggi sono disponibili anche con il comando "dmesg" che recupera gli ultimi messaggi di log da un buffer circolare tenuto in memoria.

E' bene disabilitare l'aggiornamento automatico del firmware, altrimenti tutto quello che si e' ottenuto con il firmware non ufficiale viene rimosso dal firmware ufficiale che potrebbe anche aver corretto le vulnerabilita' e non essere piu' "hackerabile" con il metodo utilizzato qui.

Ultima modifica di palmerpalm : 20-08-2018 alle 20:01. Motivo: aggiornamento alla versione v0.8
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 16-08-2018, 20:17   #75
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
Errori di chacksum

Ho tenuto d'occhio dmesg dopo che ho messo su la schedulazione, e quindi aver copiato busybox e gli script, ma non c'è stato nessun errore di checksum...

E comunque, il rootfs è uno di quei layered filesystem, con lo strato di sotto tipicamente readonly (qua parrebbe rw, ma non so se ci sia da fidarsi) e quello sopra in ram. Quale abbiano usato dei vari disponibili non è dato sapere, ma potrebbe essere una versione ad hoc, già che anche l'opkg è taroccato.
Molti di questi filesystem non toccano proprio lo strato sottostante e salvano le differenze a parte per poi ripristinarle al mount.
E in effetti jffs2 sarebbe un panico da gestire in rw, non è proprio fatto per lavorare così.

Ultima modifica di pimander : 16-08-2018 alle 22:14.
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2018, 13:03   #76
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
Wakeonlan again...

Ho compilato un programmino per il wakeonlan, in allegato.

Codice:
#include <stdio.h>      
#include <stdlib.h>     
#include <string.h>     
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h>

int main(int argc, char **argv)
{

    int fd;                 // file descriptor for the connected socket
    unsigned char buf[512];
    struct sockaddr_in servaddr; // server's address
    socklen_t slen = sizeof(servaddr);
    int broadcastOn = 1;
    
    
    if(argc != 3)
    {
        printf("usage: %s subnet macaddress\n", argv[0]);
        return 1;
    }
    int m[6];
    if(4 != sscanf(argv[1], "%d.%d.%d.%d", &m[0], &m[1], &m[2], &m[3])) 
    {
        printf("invalid subnet\n");
        return 1;
    }

    if(6 != sscanf(argv[2], "%02x:%02x:%02x:%02x:%02x:%02x", &m[0], &m[1], &m[2], &m[3], &m[4], &m[5]))
    {
        printf("invalid macaddress\n");
        return 1;
    }

    memset((char*)&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(9);
    if(inet_aton(argv[1] , &servaddr.sin_addr) != 1) 
    {
        fprintf(stderr, "inet_aton() failed\n");
        return 1;
    }

    if((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
    {
        perror("cannot create socket");
        return 1;
    }

    int i;
    for(i = 0; i < 6; i++)
        buf[i] = 0xff;
    for(i = 0; i < 6; i++)
        buf[i + 6] = m[i];
    for(i = 0; i < 15; i++)
        memcpy(&buf[12 + 6 * i], &buf[6], 6);
    buf[102] = 0;
    
    setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &broadcastOn, 4);
	
    int ret = 0;
    if (sendto(fd, buf, 102, 0, (const struct sockaddr *)&servaddr, slen) == -1) 
    {
       perror("cannot sendto()");
       ret = 1;
    }
    close(fd);
    return ret;
}
Una volta copiato sul router dovete renderlo eseguibile con:

Codice:
chmod a+x wakeonlan
e poi, a meno che non vogliate divertirvi a ricavare i parametri da Startup.xml per piazzare il comando sotto (cfg-mngt-hosts-host), potete semplicemente aggiungere, per esempio sotto system, tanti comandi per quanti host volete, dando come comando:

Codice:
/path-dove-lo-avete-messo/wakeonlan 192.168.1.255 aa:bb:cc:dd:ee:ff
sostituendo la sottorete e il macaddress.
Allegati
File Type: zip wakeonlan.zip (2.2 KB, 7 visite)

Ultima modifica di pimander : 19-08-2018 alle 10:23.
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2018, 00:11   #77
shik
Member
 
Iscritto dal: Dec 2008
Messaggi: 144
Complimenti e grazie palmerpalm per l'operazione di hacking e pimander per il primo utilizzo pratico.
Sarebbe utile, se qualcuno avesse tempo, una guida con esempi comuni e pratici per estendere le funzioni del router (es. DLNA).
Per accedere ai pacchetti scaricati, una volta installato Entware, per esempio come bisogna fare? Entware presenta una UI e come si vede la UI dei pacchetti che la prevedono?

Ps. Sono curioso di conoscere la storia della scoperta della falla appena torni dalle vacanze. Tuttavia i già prolissi dettagli sulla tecnica predispongono a una rapida chiusura di tale falla nei prossimi fw...
shik è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2018, 12:36   #78
pimander
Member
 
Iscritto dal: Feb 2010
Messaggi: 105
Quote:
Originariamente inviato da shik Guarda i messaggi
Sarebbe utile, se qualcuno avesse tempo, una guida con esempi comuni e pratici per estendere le funzioni del router (es. DLNA).
Per accedere ai pacchetti scaricati, una volta installato Entware, per esempio come bisogna fare? Entware presenta una UI e come si vede la UI dei pacchetti che la prevedono?
Per il dlna dovresti, dopo averlo installato, configurarlo modificando il file minidlna.conf, che a seconda di come lo installi potrebbe essere sotto /etc o /opt/etc.

Non ci sono GUI, i pacchetti bisogna installarli con opkg, da cui puoi anche ottenere informazioni sui pacchetti disponibili, installati e sui files che compongono un pacchetto, vedi il post di palmerpalm. Ma tutto questo si fa da telnet, una volta loggati come root.

E' un router, non un pc

Volendo si potrebbero installare le libs necessarie per poi accedere con vnc o cose simili , ma non credo che sia il caso...

Ultima modifica di pimander : 20-08-2018 alle 12:44.
pimander è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2018, 21:05   #79
palmerpalm
Member
 
Iscritto dal: Jun 2018
Messaggi: 48
Quote:
Originariamente inviato da shik Guarda i messaggi
Ps. Sono curioso di conoscere la storia della scoperta della falla appena torni dalle vacanze. Tuttavia i già prolissi dettagli sulla tecnica predispongono a una rapida chiusura di tale falla nei prossimi fw...
Vorrei descrivere in dettaglio quello che ho fatto, ma scrivere richiede molto tempo ed e' meno divertente di "hackerare"

Comunque molto in breve:
  • Ho comprato su ebay un altro router DVA-5592 per non disturbare il resto della famiglia durante le mie prove , per continuare ad avere accesso ad Internet anche quando ero in "factory mode" e per non rischiare di perdere l'accesso ad Internet qualora avessi trasformato il router in un ferma-porta a causa di qualche modifica riuscita male
  • Ho estratto il file system, dal file del firmware ufficialmente disponibile, con binwalk (https://github.com/ReFirmLabs/binwalk) e jefferson (https://github.com/sviehb/jefferson)
  • Ho aperto il router e, dopo averlo fotografato ed aver postato le foto su questo forum, mi sono collegato alla console tramite interfaccia seriale come descritto in un altro post
  • Dalle informazioni del boot visibili dalla seriale e dalle analisi del file system, ho avuto conferma di quello che era gia' stato scritto su questo forum, ossia che il router aveva una CPU della famiglia armv7 cortex-A9 con kernel 3.4.11-rt19, con uClibc 0.9 ecc.
  • Per analizzare i vari eseguibili, estratti con binwalk, ed eseguirli eventualmente con il debugger gdb, ho cercato di ricreare un ambiente di emulazione (una macchina virtuale eseguibile con Qemu) ragionevolmente simile a quella del router, ossia con la stessa CPU, con la stessa versione del kernel, con le stesse librerie (anche si di versioni successive), con le librerie compilate con tutte le informazioni per il debugging, anche se gli eseguibili del router sono privi di tali informazioni, con l'emulazione della memoria flash, grazie al componente del kernel "nandsim" e molto altro. Ho utilizzato buildroot (https://buildroot.org/) e Qemu per questo scopo
  • Inizialmente mi sono concentrato sulla procedura di upgrade analizzando il file upgrade.sh insieme all'output sulla seriale catturato durante un upgrade, l'idea era che si sarebbe potuto modificare il file system modificando il file di upgrade del firmware. In questa analisi ho visto che il file del firmware, prima di essere processato, e' verificato da un eseguibile, sig_verify, che, analizzandolo nell'ambiente emulato, va a verificare che il file del firmware sia digitalmente firmato. La chiave pubblica per la verifica (i due interi di grosse dimensioni) e' inserita direttamente dentro l'eseguibile sig_verify.
  • Avevo sperato in una qualche ingenuita' degli autori del firmware ed ho sperato che la chiave privata, usata per firmare il firmware, si trovasse in /etc/certs/, ho pertanto estratto la chiave pubblica e verificato se corrispondesse ad una delle chiavi private disponibili su /etc/certs, ma la risposta e' stata negativa. A questo punto ho capito che c'era bisogno di un'altra strada
  • Ho cercato, su Google, le vulnerabilita' sia, genericamente, del software Epicentro di ADB che dei vari componenti principali come busybox nella versione, piuttosto vecchia, presente nel router. Le vulnerabilita' che ho trovato, pero', o erano state corrette o facevano riferimento a configurazioni che non erano sfruttabili nel caso specifico
  • Ho iniziato allora ad analizzare l'interfaccia da riga di comando basata su Clish (che e' un progetto open source), mi sono messo ada analizzare il suo file di configurazione ed ho fortunosamente scoperto la possibilita' di entrare in "factory mode", possibilita' che nel file di configurazione era etichettata come "hidden" e, quindi, da provare
  • Entrando in factory mode, ho scoperto che era possibile avere un accesso, non privilegiato ossia non come utente root, alla shell /bin/ash di busybox
  • A questo punto ho iniziato a concentrarmi sui vari processi che erano in esecuzione come "root", tra questi quello che e' sembrato piu' interessante e' stato "cm"
  • Parallelamente ho iniziato ad analizzare i vari script eseguiti al boot ed ho visto come "cm", e la sua parte client "cmclient", fosse centrale nella gestione del router
  • Inizialmente mi sono concentrato a capire come vengono creati i nuovi utenti sperando in una eventuale possibilita', utilizzando direttamente cmclient, di creare un utente forzando l'UID a zero e quindi renderlo equivalente a root, ma ho verificato che questa possibilita' era preclusa
  • Le analisi del punto precedente, pero', mi hanno fatto capire come "cm", eseguito con il debug anche in ambiente virtualizzato, utilizza i file di configurazione xml per decidere quali script shell, in /etc/ah, eseguire e con quali parametri.
  • Ho quindi provato ad alterare, in ambiente virtualizzato e da normale utente admin in factory mode, con "cmclient" i file di configurazione XML di "cm" per fargli eseguire un mio script; dopo una serie di tentativi ed a seguito di una analisi piu' accurata degli escript eseguiti al boot, ho capito come alterare un file XML e riconfigurare "cm" per fargli eseguire un mio script
  • Siccome "cm" gira con i diritti di root, il mio script e' diventato in grado di alterare il file /tmp/passwd (/etc/passwd e' un link ad esso) e permettermi di diventare root
  • Dal punto precedente in poi, tutto il resto e' stato piu' o meno complicato, ma senza piu' insormontabili ostacoli.
palmerpalm è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2018, 21:14   #80
Yramrag
Senior Member
 
L'Avatar di Yramrag
 
Iscritto dal: Nov 2017
Città: Verona (VEROITBC)
Messaggi: 5359
@palmerpalm:
Complimenti per il lavorone

Seguo di striscio il thread, non ho nemmeno il modem in questione, ma lo trovo veramente interessante!
(E se lo Zyxel fosse stato così blindato non ne avrei cavato un ragno dal buco )
Yramrag è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony FE 16-25mm F2.8 G: meno zoom, più luce Sony FE 16-25mm F2.8 G: meno zoom, più lu...
Motorola edge 50 Pro: design e display al top, meno il prezzo! Recensione Motorola edge 50 Pro: design e display al top, m...
Ecovacs Goat G1-800, mettiamo alla prova il robot tagliaerba facile ed efficace Ecovacs Goat G1-800, mettiamo alla prova il robo...
ASUS ProArt 1, un PC completo ad altissime prestazioni per creator e non solo ASUS ProArt 1, un PC completo ad altissime prest...
OPPO Reno11 F 5G: vuole durare più di tutti! La recensione OPPO Reno11 F 5G: vuole durare più di tut...
iPhone 16 Pro, un nuovo rivestimento per...
I TV TCL con tecnologia Mini LED hanno o...
HUAWEI dice addio alla storica serie P. ...
Star Wars Outlaws: i giocatori incontrer...
Vulnerabilità grave su iMessage: ...
Arriva Insta360 X4 per realizzare veri v...
AMD presenta i Ryzen PRO 8000: sono megl...
Iliad: la prima offerta fibra in Italia ...
La California stabilisce un nuovo record...
Steam FPS Fest: un'altra settimana di sc...
CATL, ecco il primo sistema di accumulo ...
SteganoAmor, la campagna malware che nas...
NASA: il detrito spaziale caduto in Flor...
Maserati presenta la GranCabrio Folgore:...
Galaxy AI arriverà anche su Galax...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:16.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www3v