HTTP Header Command Injection - X-FORWARDED-FOR - Pentesting Web

Si on observe le fichier firewall.php, on remarque qu'il récupère l'en-tête HTTP_X_FORWARDED_FOR et l'utilise avec sudo pour exécuter une commande :

  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
    $ip = $_SERVER['REMOTE_ADDR'];
  };
  system("sudo /usr/sbin/iptables -A INPUT -s " . $ip . " -j ACCEPT");
?>

Étant donné que cette variable est contrôlable via une requête HTTP, nous pouvons injecter une commande arbitraire.

erxploitation

Comme il s'agit d'un en-tête HTTP, nous pouvons injecter une commande, par exemple en utilisant curl pour contacter notre serveur web.

Mise en place d'un serveur web :

Commande d'injection avec curl :

Reverse Shell

Écoute sur le port 443 :

Commande pour obtenir un shell distant :

Une fois connecté, nous sommes l'utilisateur www-data.

Mis à jour

Ce contenu vous a-t-il été utile ?