
Exploit DirtyPipe (CVE-2022-0847) escrito em Rust
AVISO
Este código é apenas para fins educacionais e de pesquisa.
Não o utilize em sistemas que você não possui ou não tem permissão para testar.
O autor não é responsável por qualquer uso indevido, dano ou consequências legais resultantes do uso deste código.
Veja o write-up deste exploit no meu blog. Esta é uma implementação do exploit DirtyPipe (CVE-2022-0847) que escrevi em Rust com base no write-up de Max Kellermann. O programa permite sobrescrever arquivos específicos ou sobrescrever um binário SUID para escalar privilégios.
passwd) para obter root/tmp antes da exploraçãoPrimeiro, crie um arquivo de entrada. Os dados contidos nesse arquivo serão usados para sobrescrever o alvo. Em seguida, basta executar o seguinte:
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
Onde offset é o deslocamento em bytes para começar a escrever no arquivo. O deslocamento não pode estar em um limite de página e a escrita não pode cruzar um limite de página, devido à natureza da vulnerabilidade.
O modo SUID substituirá um binário SUID especificado por um payload ELF fornecido. O ELF suid é fornecido no release deste repositório e será usado pelo exploit, a menos que seja especificado de outra forma nas opções.
Além disso, você pode gerar isso por conta própria ou modificar o payload usando o script pwntools gen_suid.py e o arquivo loader.asm. Essa opção será discutida abaixo.
O exploit define o alvo como /usr/bin/passwd por padrão.
Execute o seguinte para substituir /usr/bin/passwd pelo payload fornecido (abre um shell como root):
./dirtypipe_exploit -m suid
Em seguida, execute /usr/bin/passwd para obter um shell root.
Para gerar seu próprio payload, siga estas etapas:
gen_suid.py, que usa pwntools para gerar um payload (shellcode.bin) que abre um shell root. Modifique-o como achar adequado.nasm -f bin -o [PAYLOAD_NAME] loader.asm. Isso transformará o arquivo shellcode.bin em um executável../dirtypipe_exploit -m suid -i [PAYLOAD_NAME] -o [TARGET_FILE].Agradecimentos ao autor do STALKR's BLOG pelo cabeçalho ELF Tiny de 64 bits (aqui).