Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
sudo_inject — [Linux] Duas técnicas de escalada de privilégios que abusam do token sudo | Kitploit
Ferramentas/GitHubGitHub/nongiach/sudo_inject
Escalada de PrivilégiosExploraçãoPós-ExploraçãoForensia DigitalCTFAprendizado e EducaçãoRed Teaming
GitHubnongiach/sudo_inject

sudo_inject

[Linux] Duas técnicas de escalada de privilégios que abusam do token sudo

Ver Repositório
730113há 7 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

[Linux] Escalação de privilégios ao injetar processo que possui tokens sudo

Injetar processo que tenha token sudo válido e ativar nosso próprio token sudo

Introdução

Todos nós já percebemos que às vezes o sudo não nos pede uma senha porque ele se lembra de nós. Como ele se lembra de nós e como ele nos identifica? Podemos falsificar nossa identidade e nos tornar root? Até onde eu sei, esta pesquisa ainda não está documentada, mas me avise se estiver. De fato, o sudo cria um arquivo para cada usuário Linux em /var/run/sudo/ts/[username]. Esses arquivos contêm autenticações bem-sucedidas e também falhas; então o sudo usa esses arquivos para lembrar todos os processos autenticados. -- @chaignc

Este repositório fornece a você:

  • Uma forma de obter privilégios de root abusando dos tokens sudo (não fique muito feliz, existem requisitos).
  • Uma ferramenta para forjar tokens sudo para um determinado processo (write_sudo_token em ./extra_tools/).
  • Uma ferramenta para analisar tokens sudo para perícia forense (read_sudo_token_forensic e read_sudo_token em ./extra_tools).
  • Uma técnica para transformar qualquer escrita arbitrária de arquivos como root em execução estável de código como root.
  • Uma dica para criar um exploit que não exija ptrace ou que o processo alvo esteja vivo.

Como explorar um sistema vulnerável

PS: leia os requisitos!!

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)

Requisitos

  • Ptrace totalmente habilitado (/proc/sys/kernel/yama/ptrace_scope == 0).
  • O usuário atual deve ter um processo vivo que possua um token sudo válido com o mesmo uid.

O tempo limite padrão da senha é de 15 minutos. Portanto, se você usar sudo duas vezes em 15 minutos (900 segundos), você não será solicitado a digitar a senha do usuário novamente.

Aviso

  • Apenas para fins educacionais, não use em um sistema que você não possui.
  • Não é bem testado, então não o considere estável.

O que está acontecendo nos bastidores?

O exploit.sh injeta todos os processos de shell pertencentes ao usuário atual e usa o token sudo deles para validar nosso próprio token sudo. São apenas 3 linhas de shell; dê uma olhada.

Caso de uso

Isso está longe de ser uma escalada de privilégios genérica sem requisitos, mas funciona; por exemplo, se você tiver um RCE e não tiver a senha do usuário, mas a vítima usa sudo, então você pode facilmente obter root roubando o token dele.

Como simular em laboratório?

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

Abra dois terminais:

  • um para digitar sudo e inserir a senha correta (exemplo: sudo ls).
  • outro para iniciar o exploit conforme descrito acima.

Indo além

O exploit v2 cria um sh suid em /tmp/sh

Para aqueles com menos sorte com o exploit v1, tente a 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?

A saída está para ser melhorada, mas cada tentativa de sudo de um processo tem uma entrada em /var/run/sudo/ts/[username]. Além disso, esses arquivos são armazenados em tmpfs(ram) e alguém poderia escrever um plugin para o volatility para analisar essas informações e coletar tentativas de 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

Escrita arbitrária para root

Se você tiver uma escrita arbitrária, você pode criar um token sudo para o seu processo atual para obter execução de código como root. confira './write_sudo_token $$ > /var/run/sudo/ts/[username]' em extra_tools.

Silver sudo tickets

Uma ótima maneira de criar uma backdoor root secreta em servidores que raramente reiniciam. Ainda não feito, mas confira './write_sudo_token $$' em ./extra_tools

Por quê

Eu estava procurando uma maneira de roubar o token sudo de um processo morto, mas não parece possível porque eles estão associados por ((horário de início do processo e id da sessão do processo) ou (horário de início do tty e id da sessão do tty)). O id da sessão (pid do processo) pode ser falsificado, mas o horário de início do processo não é falsificável.

Como remediar?

  • Atualize sua versão do sudo
  • Reduza o poder do ptrace, por exemplo, edite /etc/sysctl.conf com
root@kitploit:~
kernel.yama.ptrace_scope = 1

yama ptrace scope

Links

Analisando /proc/[pid]/stat

Estrutura do token sudo

Injeção de código entre processos no Linux sem ptrace

Movendo um processo para outro terminal

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


Por @chaignc #HexpressoTeam.

Baixar ferramenta