Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
sudo_inject — [Linux] Due tecniche di elevazione dei privilegi che abusano del token sudo | Kitploit
Strumenti/GitHubGitHub/nongiach/sudo_inject
Escalation di PrivilegiExploitPost-ExploitDigital ForensicsCTFApprendimento e FormazioneRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Due tecniche di elevazione dei privilegi che abusano del token sudo

Vedi Repository
7301137 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

[Linux] Privilege Escalation iniettando processi che possiedono token sudo

Inietta un processo che ha un token sudo valido e attiva il nostro token sudo

Introduzione

Tutti abbiamo notato che a volte sudo non ci chiede la password perché si ricorda di noi. Come fa a ricordarsi di noi e come ci identifica? Possiamo falsificare la nostra identità e diventare root? Per quanto ne so, questa ricerca non è ancora documentata, ma fatemi sapere se lo è. Infatti sudo crea un file per ogni utente linux in /var/run/sudo/ts/[username]. Questi file contengono sia le autenticazioni riuscite che quelle fallite, quindi sudo usa questi file per ricordare tutti i processi autenticati. -- @chaignc

Questo repository ti fornisce:

  • Un modo per ottenere privilegi root abusando dei token sudo (non essere troppo felice, ci sono dei requisiti).
  • Uno strumento per forgiare token sudo per un dato processo (write_sudo_token in ./extra_tools/).
  • Uno strumento per analizzare i token sudo a scopo forense (read_sudo_token_forensic e read_sudo_token in ./extra_tools).
  • Una tecnica per trasformare una scrittura arbitraria di file da root in esecuzione stabile di codice root.
  • Un indizio per creare un exploit che non richieda ptrace o che il processo target sia vivo.

Come sfruttare un sistema vulnerabile

PS: leggi i requisiti!!

root@kitploit:~
$ sudo whatever
[sudo] password for user:    # Press <ctrl>+c since you don't have the password. # This creates an invalid sudo tokens.
$ sh exploit.sh
.... wait 1 seconds
$ sudo -i # no password required :)
# id
uid=0(root) gid=0(root) groups=0(root)

Requisiti

  • Ptrace completamente abilitato (/proc/sys/kernel/yama/ptrace_scope == 0).
  • L'utente corrente deve avere un processo vivo che possieda un token sudo valido con lo stesso uid.
root@kitploit:~
The default password timeout is 15 minutes. So if you use sudo twice in 15 minutes (900 seconds), you will not be asked to type the user’s password again.

Avvertenza

  • Solo a scopo educativo, non usarlo su un sistema che non possiedi.
  • Non è ben testato, quindi non considerarlo stabile.

Cosa succede dietro le quinte?

exploit.sh inietta tutti i processi shell posseduti dall'utente corrente e usa il loro token sudo per validare il nostro token sudo. Sono appena 3 righe di shell, dai un'occhiata.

Caso d'uso

Non è affatto una privesc generica senza requisiti, ma funziona; ad esempio, se hai una RCE e non hai la password dell'utente, ma la vittima usa sudo, puoi facilmente ottenere root rubando il suo token.

Come simulare in laboratorio?

root@kitploit:~
# echo 0 > /proc/sys/kernel/yama/ptrace_scope
# # Don't worry this is not persistent accross reboot

Avvia due terminali:

  • uno per digitare sudo e inserire la password corretta (esempio: sudo ls).
  • un altro per avviare l'exploit come descritto sopra.

Per approfondire

exploit v2 crea una sh suid in /tmp/sh

Per chi ha meno fortuna con exploit v1, prova la v2

root@kitploit:~
$ ./exploit_v2.sh
Current process : 2441
chmod: changing permissions of 'activate_sudo_token': Operation not permitted
Injecting process 1721 -> bash
Injecting process 2433 -> bash
cat: /proc/2446/comm: No such file or directory
Injecting process 2446 -> 
$ /tmp/sh -p
# id
uid=1001(test) gid=1001(test) euid=0(root) egid=0(root) groups=0(root),1001(test)

Forense, DFIR?

La stampa è da migliorare, ma ogni tentativo sudo di un processo ha una voce in /var/run/sudo/ts/[username]. Inoltre questi file sono memorizzati in tmpfs (RAM), si potrebbe scrivere un plugin volatility per analizzare queste informazioni e raccogliere i tentativi sudo.

root@kitploit:~
./read_sudo_token_forensic  < /var/run/sudo/ts/user
version, flags, uid, sid, starttime_sec, starttime_nsec
2, 0, 0, 0, 0, 0
2, 0, 1001, 1145, 188, 660000000
2, 0, 1001, 24878, 7461, 490000000
2, 0, 1001, 24578, 6974, 10000000

Scrittura arbitraria come root

Se hai una scrittura arbitraria, puoi creare un token sudo per il tuo processo corrente per ottenere l'esecuzione di codice root. Guarda './write_sudo_token $$ > /var/run/sudo/ts/[username]' in extra_tools.

Silver sudo tickets

Un ottimo modo per creare una backdoor root segreta su server che si riavviano raramente. Non ancora fatto, ma guarda './write_sudo_token $$' in ./extra_tools

Perché

Stavo cercando un modo per rubare il token sudo di un processo morto, ma non sembra possibile perché sono associati tramite ((ora di inizio del processo e id di sessione del processo) o (ora di inizio della tty e id di sessione della tty)). L'id di sessione (pid del processo) può essere impersonato, ma l'ora di inizio del processo non è falsificabile.

Come porre rimedio?

  • Aggiorna la tua versione di sudo
  • Riduci i poteri di ptrace, ad esempio modifica /etc/sysctl.conf con
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Link

Analisi di /proc/[pid]/stat

Struttura del token sudo

Iniezione di codice inter-processo su Linux senza ptrace

Spostare un processo su un altro terminale

https://www.linusakesson.net/programming/tty/


Di @chaignc #HexpressoTeam.

Scarica lo strumento