[RICERCA] FASTGate ZTE ZXHN H388Q

  • 199 Risposte
  • 108173 Visite

0 Utenti e 4 Visitatori stanno visualizzando questo topic.

Offline FrancYescO

  • VIP
  • *****
  • 3382
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #135 il: 21 Maggio 2020, 12:50 »
il primo di quei comandi ovviamente non va perchè la variabile IFStest non è definita

IFS è la variabile che definisce i separatori per gli argomenti (appunto \s\t\n son tutti validi di default), ma credo non riusciamo a cambiarlo runtime perchè non gli piace l'uguale, o forse perchè siamo in una (sub)shell che non sappiamo come funziona..

vsftpd riesci a guardare che versione è nell'handshake? aveva una backdoor in versioni passate

cosa hai avuto come responso nel log ai miei comandi? fate conto potrebbe fare una resolution sul dominio, quindi se non è connesso meglio mettere 127.0.0.1 o localhost che dovrebbe avere sempre successo, ma questo dovrebbero confermarlo i log

di sicuro li vengono definiti due user root:admin123 e admin:qwerty ma dovresti lanciare /lxc/root-ecnt752x/etc/init.d/klish-init start per eseguirlo, oltre al fatto che le condizioni degli if non farebbero eseguire quel codice, l'unica speranza è che sia attivo di default e che nessuno tocchi quegli user dopo

hai provato a loggarti con ftp con quegli user?

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #136 il: 21 Maggio 2020, 13:09 »
Allora, nmap riporta solo
Codice: [Seleziona]
vsftpd 2.0.8 or later c'è un altro modo per verificare la versione?
Mi sono reso conto che senza wan collegata non riporta quel dns fail, però il reboot funziona sempre quindi non saprei cosa succeda li dentro
Purtroppo i due users non funzionano

Offline FrancYescO

  • VIP
  • *****
  • 3382
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #137 il: 21 Maggio 2020, 13:15 »
telnettalo su porta 21, la 2.3.4 era quella affetta

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #138 il: 21 Maggio 2020, 13:20 »
Codice: [Seleziona]
telnet 192.168.1.254 21   
Trying 192.168.1.254...
Connected to 192.168.1.254.
Escape character is '^]'.
220 Welcome to virtual FTP service.
EDIT:
Codice: [Seleziona]
USER user:)
331 Please specify the password.
PASS pass
530 Login incorrect.
Non sembra vulnerabile
« Ultima modifica: 21 Maggio 2020, 13:24 da lorenzocanalelc »

Offline FrancYescO

  • VIP
  • *****
  • 3382
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #139 il: 21 Maggio 2020, 13:24 »
vabbe provaci lo stesso

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #140 il: 21 Maggio 2020, 14:15 »
forse paradossalmente la cosa più veloce è editare il passwd, ricostruire la squashfs, criptarla, sostituirla nel bin di aggiornamento e ricalcolare bene i vari crc.

edit:
per poi hostarlo su un server acs
Mmm non credo che il modem accetti qualsiasi firmware gli venga propinato, farà qualche check immagino

Offline ilsalvopss

  • Membro Giovane
  • **
  • 65
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #141 il: 21 Maggio 2020, 14:46 »
farà qualche check immagino

sui crc di sicuro ma si possono ricalcolare

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #142 il: 21 Maggio 2020, 15:01 »
Se tu riesci e vuoi mandarmi il bin posso provare a flasharlo e vedere che succede

EDIT: Finalmente riesco a capire un po' meglio che comandi prende quello script, questa stringa
Codice: [Seleziona]
;/bin/vsftpd&&sh$IFS/mnt/usb1_1/funziona/prova&& viene riportata così
Codice: [Seleziona]
;/bin/vsftpd&&sh\$IFS/mnt/usb1_1/funziona/prova&&, Il log completo è [ You must login or register to view this spoiler! ]
La cosa strana è che dopo la prima volta che spunta questo errore poi non spunta più, neanche dopo un reboot... forse ci vuole per forza un reset
EDIT:   Aggiornamento, il segno del dollaro viene sempre preceduto dal \ infatti
Codice: [Seleziona]
;/bin/vsftpd;$IFS;%20;$1;$2;$3;$cmd;$4;$sep_un;$sep_NL;$5 diventa
Codice: [Seleziona]
;/bin/vsftpd;\$IFS;%20;\$1;\$2;\$3;\$cmd;\$4;\$sep_un;\$sep_NL;\$5Ma invece tramite cwmp o magari con i metodi che usa Fastweb per lo speedtest non è possibile mandargli un file? Così in questo modo potrebbe essere eseguibile
« Ultima modifica: 22 Maggio 2020, 09:58 da lorenzocanalelc »

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #143 il: 16 Giugno 2020, 18:29 »
Novità?

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #144 il: 20 Giugno 2020, 13:17 »
Bhè, ne è spuntato un altro di huawey, questo ZTE dev'essere stato un flop clamoroso.

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #145 il: 20 Giugno 2020, 13:28 »
Possibile che quello Huawei (Tra l'altro c'era un modello Huawei prima di quello Askey, è lo stesso o un altro ancora?) sia destinato alla GPON? Perché questo ZTE non ha ingresso SFP quindi penso sia la versione "low-cost" per coloro che hanno FTTC-ADSL

Offline LuKePicci

  • Global Moderator
  • VIP
  • *****
  • 2789
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #146 il: 20 Giugno 2020, 13:37 »
L'unica cosa che so è che lo hanno dato ad un abbonato su Open Fiber che ha ONT esterno collegato in ethernet, quindi dubito integri un ONT, al limite ha anche lui l'SFP come i primi due askey e technicolor, o non ce l'ha nemmeno lui come lo zte. Ad ogni modo meglio parlarne altrove, altrimenti è un casino.

Non sapevo che questo ZTE non avesse l'SFP, ma di ethernet ne ha sempre solo 4?

Offline lorenzocanalelc

  • Esperto
  • ****
  • 678
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #147 il: 20 Giugno 2020, 13:43 »
Yes, 4 Ethernet e una sola porta USB, più ovviamente porta alimentazione, porta xdsl e due porte FXS. Nel documento di trasporto c'era scritto "MOS Fastgate Light". Tra l'altro queste caratteristiche sono ovviamente diverse da quelle riportate sul sito Fastweb sulle informazioni del "Fastgate" "https://www.fastweb.it/adsl-fibra-ottica/dettagli/modem-fastweb-fastgate/", che senso ha dargli un nome comune se poi hanno caratteristiche diverse?

Offline ilsalvopss

  • Membro Giovane
  • **
  • 65
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #148 il: 21 Giugno 2020, 18:09 »
quindi penso sia la versione "low-cost" per coloro che hanno FTTC-ADSL
a me l'hanno fornito per una FTTH business

Novità?
purtroppo in questo periodo il tempo scarseggia.. con qualche occhiata veloce:

sembra che tutte le funzioni del cpe vengano avviate e gestite da un grosso binario (/bin/cspd) che essenzialmente sostituisce i soliti script di init.d e, immagino, agisce da watchdog generale del sistema. è lui ad avviare i vari altri eseguibili (httpd tra tutti gli altri).

alcune cose che mi aspettavo di trovare configurate in /etc sono codificate dentro i binari stessi. ad esempio il root path che usa httpd è hardcoded dentro l'eseguibile stesso


per tornare alla vulnerabilità del parental control, httpd gestisce l'esecuzione di diversi script lua che costituiscono il backend per l'interfaccia (tutto il sistema cgi sembra basato su https://keplerproject.github.io/cgilua/manual.html), tra cui anche l'inserimento degli url da bloccare:
Codice: [Seleziona]
...
elseif Service == "pc_list" and FP_ACTION == "Set" then
  if cgilua.POST.mode_all == "0" then
    cgilua.POST.mode_all = "Whole network"
  else
    cgilua.POST.mode_all = "Selected devices"
  end
  tError = FASTAPISet(OBJNAME_BASE, BASE_PARA)
elseif Service == "pc_device_set" then
  tError = FASTAPISet(OBJNAME_DEV, DEV_PARA)
elseif Service == "pc_device_del" then
  tError = FASTAPIDel(OBJNAME_DEV, cgilua.POST.mac)
elseif Service == "pc_address_set" then
  tError = FASTAPISet(OBJNAME_URL, URL_PARA, "")
elseif Service == "pc_address_del" then
  tError = FASTAPIDel(OBJNAME_URL, cgilua.POST.uri)
end
FASTAPIOut(Service, tOut, tError, outback)
seguendo un po' gli script è chiaro che i valori vengono sommariamente filtrati (con un po' più di tempo si potrebbero analizzare con cura questi filtri..) e scritti in nand.

sono convinto che vengano poi ripescati dal binario tuttofare che ha queste tremende routines che leggono gli indirizzi e li passano come parametri a iptables (immagino che il reboot fosse qui)


« Ultima modifica: 21 Giugno 2020, 19:45 da ilsalvopss »

Offline ilsalvopss

  • Membro Giovane
  • **
  • 65
  • Sesso: Maschio
Re:[RICERCA] FASTGate ZTE ZXHN H388Q
« Risposta #149 il: 25 Giugno 2020, 11:40 »
la funzione del backend che filtra i valori prima di passarli alla shell:

Codice: [Seleziona]
int CmdArgToSafeArg(char *param_1,undefined *param_2,size_t param_3)

{
  char cVar1;
  size_t sVar2;
  int iVar3;
  size_t sVar4;
 
  if ((param_1 == (char *)0x0) || (param_2 == (undefined *)0x0)) {
    printf("CmdArgToSafeShellArg Arg is NULL, error");
  }
  else {
    sVar2 = strlen(param_1);
    if (-1 < (int)sVar2) {
      iVar3 = sVar2 * 2 + 3;
      if ((int)param_3 < iVar3) {
        printf("iSafeLen(%d) less than iLengthtmp(%d),len(%s)=(%d),error\n",param_3,iVar3,param_1,
               sVar2);
        return 0xfffffffe;
      }
      memset(param_2,0,param_3);
      *param_2 = 0x22;
      iVar3 = 0;
      sVar4 = 0;
      while (sVar4 != sVar2) {
        cVar1 = *param_1;
        if ((((cVar1 == '\"') || (cVar1 == '$')) || (cVar1 == '`')) || (cVar1 == '\\')) {
          param_2[iVar3 + 1] = 0x5c;
          iVar3 = iVar3 + 2;
          param_2[iVar3] = *param_1;
        }
        else {
          iVar3 = iVar3 + 1;
          param_2[iVar3] = cVar1;
        }
        sVar4 = sVar4 + 1;
        param_1 = param_1 + 1;
      }
      param_2[iVar3 + 1] = 0x22;
      param_2[iVar3 + 2] = 0;
      return iVar3 + 2;
    }
    printf("CmdArgToSafeShellArg iLength(%d) is error\n",sVar2);
  }
  return 0xffffffff;
}

dopo di lei, nello specifico per il parental, il comando viene costruito così
Codice: [Seleziona]
      snprintf(acStack1560,0x200,
               "iptables %s %s -p tcp --dport 80 -m urlfilter --urlkey \"%s\" -j %s",param_2,
               param_3 + 0x20,auStack1048,&local_658)
(param2, param3 e local_658 sono costruiti dal programma stesso. auStack1048 è puntato dal secondo parametro di CmdArgToSafeArg)

edit: prima di essere salvato in memoria nessun valore sembra essere pesantemente controllato. il backend lua si limita a controllare che arrivino stringhe. (non ne sono del tutto certo, approfondirò) il filtraggio di cui sopra è effettuato postumo, leggendo i valori dal db delle configurazioni, subito prima di passare questi a iptables
« Ultima modifica: 25 Giugno 2020, 11:48 da ilsalvopss »