Hoy me encontré algo muy raro, la oficina de gobierno que estabamos hackeando tenía el verbo trace y se me hizo muy raro, nunca imagine que una organización de ese tamaño aún tuviera esos descuidos.

Entonces, que son los verbos HTTP (métodos) son las formas que hay de interactuar con un servidor. Lo básico es CRUD (Create, Read, Update, Delete osea Crear, leer, actualizar y borrar). Esta imagen me ayudo mucho.

Image result for crud http verbsY estos son los que yo me sabía, como es lógico, el delete no debe estar activo, normalmente alguien solo debe usar Post o get. Resulta que hay 8 métodos:

  1. HEAD
  2. GET
  3. POST
  4. PUT
  5. DELETE
  6. TRACE
  7. OPTIONS
  8. CONNECT

Los que nunca deberían de estar son los rojos:

  • PUT: Es para escribir en el servidor, un atacante puede subir cosas que no debería o usarte de Dropbox gratis para guardar cosas ilegales ja.
  • DELETE: Como se imaginaron correctamente con esto puedes borrar archivos tirando el servidor completo.
  • CONNECT: Sabiendo usar esto un atacante te puede usar como proxy o túnel para comunicarse (o atacar) a otros.
  • TRACE: Este sirve para mandarte de vuelta lo que le mandes, algo así como un ping complicado, el detalle es que puede ser usado para un ataque que se llama cross site tracing (XST) nunca lo he visto pero cuando me encuentre uno escribiré un artículo de eso.

Ahora, como revisarlo? Pues NMAP y sus maravillosos scripts al rescate:

nmap --script=http-methods --script-args=http-methods.test-all -PN -p 80,443 [HOST]

Esto te va a decir los verbos que se pueden utilizar y no solo eso, te va a dar la lista de los maliciosos. Bastante cool la cosa.

curl -X PUT "http://IP:port/filename.txt/" -d "probando mexican pentester!"
curl -X GET "http://IP:port/filename.txt" 
probando mexican pentester!