Come posso passare automaticamente la password a "su"?


2

Sto lavorando a un exploit per un corso di sicurezza. L'obiettivo è ottenere una shell di root in una macchina virtuale linux. Finora, posso scrivere su / etc / passwd e cambiare la password di root in una stringa arbitraria.

Ora, voglio usare su per ottenere la shell di root. Dal momento che il mio exploit deve essere automatizzato, non può richiedere una password e la VM non ha previsto l'installazione. Qualcuno ha idea di come posso passare la password al comando su? O c'è un modo migliore?


1
Se sei in grado di scrivere su / etc / passwd, sicuramente hai già elevato a root? In tal caso, non puoi impostare su / bin / bash ed eseguirlo?
Paul,

Non ho root su VM. Dobbiamo sfruttare un determinato programma di backup che ha impostato setuid. Passando argomenti dannosi posso farlo cambiare il proprietario di / etc / passwd.
Noobler,

Puoi passare il processo setuid argomenti dannosi per fare un setuid su / bin / bash?
Paul,

@noobler Hai la fonte per il programma di backup? In caso contrario, è necessario trovare un buffer overflow per tentativi ed errori. suapre / dev / tty per leggere la password. Devi trovare un modo per convincere sua usare il tuo / dev / tty.
ott--

Risposte:


0

Il modo migliore per automatizzare questo tipo di input è usare expecto meglio pexpect. la maggior parte dei server viene fornita con Python, almeno con una distribuzione moderna.

Prima di tutto hai detto che la tua VM non è expectinstallata? Non sono sicuro del perché sia ​​importante. C'è qualche motivo per cui non è possibile installare / eseguire qualcosa nel proprio account locale?

Prossima considerazione, perché devi anche usare passwd??? Puoi anche cambiare una password sostituendo l'hash specificato in /etc/shadow. Ovviamente prima devi generare correttamente un hash, ma finché ne usi uno supportato dovrebbe funzionare come previsto. Ora come scriveresti una simile azione, è un esercizio per allenarti.

Voglio anche menzionare, passwdnon legge il suo input da STDIN. Se non sbaglio, si legge da un tty. Quindi nessuna combinazione fantasiosa di giusto echoe sleepfunzionerebbe. Tuttavia è possibile utilizzare un HEREDOC, ma presuppone che il sistema sia sufficientemente reattivo. Potresti riuscire a spezzarlo e sleeptra gli intenti. Ho appena provato questo, ha funzionato sulla mia workstation Ubuntu.

#!/bin/bash
passwd root <<'EOF'
newpassword
newpassword
EOF

-2

Il tuo exploit potrebbe anche scrivere nel file group e rendere l'utente corrente parte del gruppo 'wheel' (o qualunque gruppo possa eseguire sudocomandi senza password). Quindi sarai in grado sudo su root(o qualsiasi altro utente) senza password.

La corsa visudodovrebbe darti alcune indicazioni sull'impostazione del gruppo "ruote" sulla tua macchina.

Per chiarire: una volta che un utente diventa parte del gruppo ruota, può eseguire i comandi sudo senza la necessità di una password.


Sudo non è installato su VM.
Noobler,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.